github.com/afumu/libc@v0.0.6/signal/signal_linux_ppc64le.go (about)

     1  // Code generated by 'ccgo signal/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -ignore-unsupported-alignment -o signal/signal_linux_ppc64le.go -pkgname signal', DO NOT EDIT.
     2  
     3  package signal
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  )
    11  
    12  var _ = math.Pi
    13  var _ reflect.Kind
    14  var _ atomic.Value
    15  var _ unsafe.Pointer
    16  
    17  const (
    18  	AT_DCACHEBSIZE                      = 19                 // auxvec.h:9:1:
    19  	AT_ICACHEBSIZE                      = 20                 // auxvec.h:10:1:
    20  	AT_IGNOREPPC                        = 22                 // auxvec.h:13:1:
    21  	AT_L1D_CACHEGEOMETRY                = 43                 // auxvec.h:45:1:
    22  	AT_L1D_CACHESIZE                    = 42                 // auxvec.h:44:1:
    23  	AT_L1I_CACHEGEOMETRY                = 41                 // auxvec.h:43:1:
    24  	AT_L1I_CACHESIZE                    = 40                 // auxvec.h:42:1:
    25  	AT_L2_CACHEGEOMETRY                 = 45                 // auxvec.h:47:1:
    26  	AT_L2_CACHESIZE                     = 44                 // auxvec.h:46:1:
    27  	AT_L3_CACHEGEOMETRY                 = 47                 // auxvec.h:49:1:
    28  	AT_L3_CACHESIZE                     = 46                 // auxvec.h:48:1:
    29  	AT_SYSINFO_EHDR                     = 33                 // auxvec.h:18:1:
    30  	AT_UCACHEBSIZE                      = 21                 // auxvec.h:11:1:
    31  	AT_VECTOR_SIZE_ARCH                 = 14                 // auxvec.h:51:1:
    32  	ELF_NEBB                            = 3                  // elf.h:98:1:
    33  	ELF_NFPREG                          = 33                 // elf.h:94:1:
    34  	ELF_NGREG                           = 48                 // elf.h:93:1:
    35  	ELF_NPKEY                           = 3                  // elf.h:100:1:
    36  	ELF_NPMU                            = 5                  // elf.h:99:1:
    37  	ELF_NTMSPRREG                       = 3                  // elf.h:97:1:
    38  	ELF_NVMX                            = 34                 // elf.h:95:1:
    39  	ELF_NVRREG                          = 34                 // elf.h:114:1:
    40  	ELF_NVRREG32                        = 33                 // elf.h:113:1:
    41  	ELF_NVSRHALFREG                     = 32                 // elf.h:115:1:
    42  	ELF_NVSX                            = 32                 // elf.h:96:1:
    43  	MINSIGSTKSZ                         = 4096               // sigstack.h:27:1:
    44  	NFPREG                              = 33                 // ucontext.h:89:1:
    45  	NGREG                               = 48                 // ucontext.h:88:1:
    46  	NSIG                                = 65                 // signal.h:181:1:
    47  	NVRREG                              = 34                 // ucontext.h:90:1:
    48  	PPC_BREAKPOINT_CONDITION_AND        = 0x00000001         // ptrace.h:259:1:
    49  	PPC_BREAKPOINT_CONDITION_AND_OR     = 0x00000003         // ptrace.h:262:1:
    50  	PPC_BREAKPOINT_CONDITION_BE_ALL     = 0x00ff0000         // ptrace.h:263:1:
    51  	PPC_BREAKPOINT_CONDITION_BE_SHIFT   = 16                 // ptrace.h:264:1:
    52  	PPC_BREAKPOINT_CONDITION_EXACT      = 1                  // ptrace.h:260:1:
    53  	PPC_BREAKPOINT_CONDITION_MODE       = 0x00000003         // ptrace.h:257:1:
    54  	PPC_BREAKPOINT_CONDITION_NONE       = 0x00000000         // ptrace.h:258:1:
    55  	PPC_BREAKPOINT_CONDITION_OR         = 0x00000002         // ptrace.h:261:1:
    56  	PPC_BREAKPOINT_MODE_EXACT           = 0x00000000         // ptrace.h:249:1:
    57  	PPC_BREAKPOINT_MODE_MASK            = 0x00000003         // ptrace.h:252:1:
    58  	PPC_BREAKPOINT_MODE_RANGE_EXCLUSIVE = 0x00000002         // ptrace.h:251:1:
    59  	PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE = 0x00000001         // ptrace.h:250:1:
    60  	PPC_BREAKPOINT_TRIGGER_EXECUTE      = 0x00000001         // ptrace.h:240:1:
    61  	PPC_BREAKPOINT_TRIGGER_READ         = 0x00000002         // ptrace.h:241:1:
    62  	PPC_BREAKPOINT_TRIGGER_RW           = 6                  // ptrace.h:243:1:
    63  	PPC_BREAKPOINT_TRIGGER_WRITE        = 0x00000004         // ptrace.h:242:1:
    64  	PPC_DEBUG_FEATURE_DATA_BP_ARCH_31   = 0x0000000000000020 // ptrace.h:221:1:
    65  	PPC_DEBUG_FEATURE_DATA_BP_DAWR      = 0x0000000000000010 // ptrace.h:220:1:
    66  	PPC_DEBUG_FEATURE_DATA_BP_MASK      = 0x0000000000000008 // ptrace.h:219:1:
    67  	PPC_DEBUG_FEATURE_DATA_BP_RANGE     = 0x0000000000000004 // ptrace.h:218:1:
    68  	PPC_DEBUG_FEATURE_INSN_BP_MASK      = 0x0000000000000002 // ptrace.h:217:1:
    69  	PPC_DEBUG_FEATURE_INSN_BP_RANGE     = 0x0000000000000001 // ptrace.h:216:1:
    70  	PPC_FEATURE2_ARCH_2_07              = 0x80000000         // cputable.h:40:1:
    71  	PPC_FEATURE2_ARCH_3_00              = 0x00800000         // cputable.h:48:1:
    72  	PPC_FEATURE2_ARCH_3_1               = 0x00040000         // cputable.h:53:1:
    73  	PPC_FEATURE2_DARN                   = 0x00200000         // cputable.h:50:1:
    74  	PPC_FEATURE2_DSCR                   = 0x20000000         // cputable.h:42:1:
    75  	PPC_FEATURE2_EBB                    = 0x10000000         // cputable.h:43:1:
    76  	PPC_FEATURE2_HAS_IEEE128            = 0x00400000         // cputable.h:49:1:
    77  	PPC_FEATURE2_HTM                    = 0x40000000         // cputable.h:41:1:
    78  	PPC_FEATURE2_HTM_NOSC               = 0x01000000         // cputable.h:47:1:
    79  	PPC_FEATURE2_HTM_NO_SUSPEND         = 0x00080000         // cputable.h:52:1:
    80  	PPC_FEATURE2_ISEL                   = 0x08000000         // cputable.h:44:1:
    81  	PPC_FEATURE2_MMA                    = 0x00020000         // cputable.h:54:1:
    82  	PPC_FEATURE2_SCV                    = 0x00100000         // cputable.h:51:1:
    83  	PPC_FEATURE2_TAR                    = 0x04000000         // cputable.h:45:1:
    84  	PPC_FEATURE2_VEC_CRYPTO             = 0x02000000         // cputable.h:46:1:
    85  	PPC_FEATURE_32                      = 0x80000000         // cputable.h:6:1:
    86  	PPC_FEATURE_601_INSTR               = 0x20000000         // cputable.h:8:1:
    87  	PPC_FEATURE_64                      = 0x40000000         // cputable.h:7:1:
    88  	PPC_FEATURE_ARCH_2_05               = 0x00001000         // cputable.h:25:1:
    89  	PPC_FEATURE_ARCH_2_06               = 0x00000100         // cputable.h:29:1:
    90  	PPC_FEATURE_BOOKE                   = 0x00008000         // cputable.h:22:1:
    91  	PPC_FEATURE_CELL                    = 0x00010000         // cputable.h:21:1:
    92  	PPC_FEATURE_HAS_4xxMAC              = 0x02000000         // cputable.h:12:1:
    93  	PPC_FEATURE_HAS_ALTIVEC             = 0x10000000         // cputable.h:9:1:
    94  	PPC_FEATURE_HAS_DFP                 = 0x00000400         // cputable.h:27:1:
    95  	PPC_FEATURE_HAS_EFP_DOUBLE          = 0x00200000         // cputable.h:16:1:
    96  	PPC_FEATURE_HAS_EFP_SINGLE          = 0x00400000         // cputable.h:15:1:
    97  	PPC_FEATURE_HAS_FPU                 = 0x08000000         // cputable.h:10:1:
    98  	PPC_FEATURE_HAS_MMU                 = 0x04000000         // cputable.h:11:1:
    99  	PPC_FEATURE_HAS_SPE                 = 0x00800000         // cputable.h:14:1:
   100  	PPC_FEATURE_HAS_VSX                 = 0x00000080         // cputable.h:30:1:
   101  	PPC_FEATURE_ICACHE_SNOOP            = 0x00002000         // cputable.h:24:1:
   102  	PPC_FEATURE_NO_TB                   = 0x00100000         // cputable.h:17:1:
   103  	PPC_FEATURE_PA6T                    = 0x00000800         // cputable.h:26:1:
   104  	PPC_FEATURE_POWER4                  = 0x00080000         // cputable.h:18:1:
   105  	PPC_FEATURE_POWER5                  = 0x00040000         // cputable.h:19:1:
   106  	PPC_FEATURE_POWER5_PLUS             = 0x00020000         // cputable.h:20:1:
   107  	PPC_FEATURE_POWER6_EXT              = 0x00000200         // cputable.h:28:1:
   108  	PPC_FEATURE_PPC_LE                  = 0x00000001         // cputable.h:37:1:
   109  	PPC_FEATURE_PSERIES_PERFMON_COMPAT  = 0x00000040         // cputable.h:32:1:
   110  	PPC_FEATURE_SMT                     = 0x00004000         // cputable.h:23:1:
   111  	PPC_FEATURE_TRUE_LE                 = 0x00000002         // cputable.h:36:1:
   112  	PPC_FEATURE_UNIFIED_CACHE           = 0x01000000         // cputable.h:13:1:
   113  	PPC_PTRACE_DELHWDEBUG               = 0x87               // ptrace.h:197:1:
   114  	PPC_PTRACE_GETHWDBGINFO             = 0x89               // ptrace.h:195:1:
   115  	PPC_PTRACE_PEEKDATA_3264            = 0x94               // ptrace.h:187:1:
   116  	PPC_PTRACE_PEEKTEXT_3264            = 0x95               // ptrace.h:186:1:
   117  	PPC_PTRACE_PEEKUSR_3264             = 0x91               // ptrace.h:190:1:
   118  	PPC_PTRACE_POKEDATA_3264            = 0x92               // ptrace.h:189:1:
   119  	PPC_PTRACE_POKETEXT_3264            = 0x93               // ptrace.h:188:1:
   120  	PPC_PTRACE_POKEUSR_3264             = 0x90               // ptrace.h:191:1:
   121  	PPC_PTRACE_SETHWDEBUG               = 0x88               // ptrace.h:196:1:
   122  	PTRACE_GETEVRREGS                   = 0x14               // ptrace.h:157:1:
   123  	PTRACE_GETFPREGS                    = 0xe                // ptrace.h:180:1:
   124  	PTRACE_GETREGS                      = 0xc                // ptrace.h:178:1:
   125  	PTRACE_GETREGS64                    = 0x16               // ptrace.h:182:1:
   126  	PTRACE_GETVRREGS                    = 0x12               // ptrace.h:152:1:
   127  	PTRACE_GETVSRREGS                   = 0x1b               // ptrace.h:161:1:
   128  	PTRACE_GET_DEBUGREG                 = 0x19               // ptrace.h:172:1:
   129  	PTRACE_SETEVRREGS                   = 0x15               // ptrace.h:158:1:
   130  	PTRACE_SETFPREGS                    = 0xf                // ptrace.h:181:1:
   131  	PTRACE_SETREGS                      = 0xd                // ptrace.h:179:1:
   132  	PTRACE_SETREGS64                    = 0x17               // ptrace.h:183:1:
   133  	PTRACE_SETVRREGS                    = 0x13               // ptrace.h:153:1:
   134  	PTRACE_SETVSRREGS                   = 0x1c               // ptrace.h:162:1:
   135  	PTRACE_SET_DEBUGREG                 = 0x1a               // ptrace.h:173:1:
   136  	PTRACE_SINGLEBLOCK                  = 0x100              // ptrace.h:193:1:
   137  	PTRACE_SYSEMU                       = 0x1d               // ptrace.h:165:1:
   138  	PTRACE_SYSEMU_SINGLESTEP            = 0x1e               // ptrace.h:166:1:
   139  	PT_CCR                              = 38                 // ptrace.h:103:1:
   140  	PT_CTR                              = 35                 // ptrace.h:100:1:
   141  	PT_DAR                              = 41                 // ptrace.h:110:1:
   142  	PT_DSCR                             = 44                 // ptrace.h:113:1:
   143  	PT_DSISR                            = 42                 // ptrace.h:111:1:
   144  	PT_FPR0                             = 48                 // ptrace.h:116:1:
   145  	PT_FPSCR                            = 80                 // ptrace.h:125:1:
   146  	PT_LNK                              = 36                 // ptrace.h:101:1:
   147  	PT_MSR                              = 33                 // ptrace.h:98:1:
   148  	PT_NIP                              = 32                 // ptrace.h:97:1:
   149  	PT_ORIG_R3                          = 34                 // ptrace.h:99:1:
   150  	PT_R0                               = 0                  // ptrace.h:64:1:
   151  	PT_R1                               = 1                  // ptrace.h:65:1:
   152  	PT_R10                              = 10                 // ptrace.h:74:1:
   153  	PT_R11                              = 11                 // ptrace.h:75:1:
   154  	PT_R12                              = 12                 // ptrace.h:76:1:
   155  	PT_R13                              = 13                 // ptrace.h:77:1:
   156  	PT_R14                              = 14                 // ptrace.h:78:1:
   157  	PT_R15                              = 15                 // ptrace.h:79:1:
   158  	PT_R16                              = 16                 // ptrace.h:80:1:
   159  	PT_R17                              = 17                 // ptrace.h:81:1:
   160  	PT_R18                              = 18                 // ptrace.h:82:1:
   161  	PT_R19                              = 19                 // ptrace.h:83:1:
   162  	PT_R2                               = 2                  // ptrace.h:66:1:
   163  	PT_R20                              = 20                 // ptrace.h:84:1:
   164  	PT_R21                              = 21                 // ptrace.h:85:1:
   165  	PT_R22                              = 22                 // ptrace.h:86:1:
   166  	PT_R23                              = 23                 // ptrace.h:87:1:
   167  	PT_R24                              = 24                 // ptrace.h:88:1:
   168  	PT_R25                              = 25                 // ptrace.h:89:1:
   169  	PT_R26                              = 26                 // ptrace.h:90:1:
   170  	PT_R27                              = 27                 // ptrace.h:91:1:
   171  	PT_R28                              = 28                 // ptrace.h:92:1:
   172  	PT_R29                              = 29                 // ptrace.h:93:1:
   173  	PT_R3                               = 3                  // ptrace.h:67:1:
   174  	PT_R30                              = 30                 // ptrace.h:94:1:
   175  	PT_R31                              = 31                 // ptrace.h:95:1:
   176  	PT_R4                               = 4                  // ptrace.h:68:1:
   177  	PT_R5                               = 5                  // ptrace.h:69:1:
   178  	PT_R6                               = 6                  // ptrace.h:70:1:
   179  	PT_R7                               = 7                  // ptrace.h:71:1:
   180  	PT_R8                               = 8                  // ptrace.h:72:1:
   181  	PT_R9                               = 9                  // ptrace.h:73:1:
   182  	PT_REGS_COUNT                       = 44                 // ptrace.h:114:1:
   183  	PT_RESULT                           = 43                 // ptrace.h:112:1:
   184  	PT_SOFTE                            = 39                 // ptrace.h:107:1:
   185  	PT_TRAP                             = 40                 // ptrace.h:109:1:
   186  	PT_VR0                              = 82                 // ptrace.h:128:1:
   187  	PT_VRSAVE                           = 148                // ptrace.h:130:1:
   188  	PT_VSCR                             = 147                // ptrace.h:129:1:
   189  	PT_VSR0                             = 150                // ptrace.h:136:1:
   190  	PT_VSR31                            = 212                // ptrace.h:137:1:
   191  	PT_XER                              = 37                 // ptrace.h:102:1:
   192  	R_PPC64_ADDR14                      = 7                  // elf.h:175:1:
   193  	R_PPC64_ADDR14_BRNTAKEN             = 9                  // elf.h:177:1:
   194  	R_PPC64_ADDR14_BRTAKEN              = 8                  // elf.h:176:1:
   195  	R_PPC64_ADDR16                      = 3                  // elf.h:171:1:
   196  	R_PPC64_ADDR16_DS                   = 56                 // elf.h:225:1:
   197  	R_PPC64_ADDR16_HA                   = 6                  // elf.h:174:1:
   198  	R_PPC64_ADDR16_HI                   = 5                  // elf.h:173:1:
   199  	R_PPC64_ADDR16_HIGHER               = 39                 // elf.h:207:1:
   200  	R_PPC64_ADDR16_HIGHERA              = 40                 // elf.h:208:1:
   201  	R_PPC64_ADDR16_HIGHEST              = 41                 // elf.h:209:1:
   202  	R_PPC64_ADDR16_HIGHESTA             = 42                 // elf.h:210:1:
   203  	R_PPC64_ADDR16_LO                   = 4                  // elf.h:172:1:
   204  	R_PPC64_ADDR16_LO_DS                = 57                 // elf.h:226:1:
   205  	R_PPC64_ADDR24                      = 2                  // elf.h:170:1:
   206  	R_PPC64_ADDR30                      = 37                 // elf.h:205:1:
   207  	R_PPC64_ADDR32                      = 1                  // elf.h:169:1:
   208  	R_PPC64_ADDR64                      = 38                 // elf.h:206:1:
   209  	R_PPC64_COPY                        = 19                 // elf.h:187:1:
   210  	R_PPC64_DTPMOD64                    = 68                 // elf.h:239:1:
   211  	R_PPC64_DTPREL16                    = 74                 // elf.h:245:1:
   212  	R_PPC64_DTPREL16_DS                 = 101                // elf.h:272:1:
   213  	R_PPC64_DTPREL16_HA                 = 77                 // elf.h:248:1:
   214  	R_PPC64_DTPREL16_HI                 = 76                 // elf.h:247:1:
   215  	R_PPC64_DTPREL16_HIGHER             = 103                // elf.h:274:1:
   216  	R_PPC64_DTPREL16_HIGHERA            = 104                // elf.h:275:1:
   217  	R_PPC64_DTPREL16_HIGHEST            = 105                // elf.h:276:1:
   218  	R_PPC64_DTPREL16_HIGHESTA           = 106                // elf.h:277:1:
   219  	R_PPC64_DTPREL16_LO                 = 75                 // elf.h:246:1:
   220  	R_PPC64_DTPREL16_LO_DS              = 102                // elf.h:273:1:
   221  	R_PPC64_DTPREL64                    = 78                 // elf.h:249:1:
   222  	R_PPC64_ENTRY                       = 118                // elf.h:282:1:
   223  	R_PPC64_GLOB_DAT                    = 20                 // elf.h:188:1:
   224  	R_PPC64_GOT16                       = 14                 // elf.h:182:1:
   225  	R_PPC64_GOT16_DS                    = 58                 // elf.h:227:1:
   226  	R_PPC64_GOT16_HA                    = 17                 // elf.h:185:1:
   227  	R_PPC64_GOT16_HI                    = 16                 // elf.h:184:1:
   228  	R_PPC64_GOT16_LO                    = 15                 // elf.h:183:1:
   229  	R_PPC64_GOT16_LO_DS                 = 59                 // elf.h:228:1:
   230  	R_PPC64_GOT_DTPREL16_DS             = 91                 // elf.h:262:1:
   231  	R_PPC64_GOT_DTPREL16_HA             = 94                 // elf.h:265:1:
   232  	R_PPC64_GOT_DTPREL16_HI             = 93                 // elf.h:264:1:
   233  	R_PPC64_GOT_DTPREL16_LO_DS          = 92                 // elf.h:263:1:
   234  	R_PPC64_GOT_TLSGD16                 = 79                 // elf.h:250:1:
   235  	R_PPC64_GOT_TLSGD16_HA              = 82                 // elf.h:253:1:
   236  	R_PPC64_GOT_TLSGD16_HI              = 81                 // elf.h:252:1:
   237  	R_PPC64_GOT_TLSGD16_LO              = 80                 // elf.h:251:1:
   238  	R_PPC64_GOT_TLSLD16                 = 83                 // elf.h:254:1:
   239  	R_PPC64_GOT_TLSLD16_HA              = 86                 // elf.h:257:1:
   240  	R_PPC64_GOT_TLSLD16_HI              = 85                 // elf.h:256:1:
   241  	R_PPC64_GOT_TLSLD16_LO              = 84                 // elf.h:255:1:
   242  	R_PPC64_GOT_TPREL16_DS              = 87                 // elf.h:258:1:
   243  	R_PPC64_GOT_TPREL16_HA              = 90                 // elf.h:261:1:
   244  	R_PPC64_GOT_TPREL16_HI              = 89                 // elf.h:260:1:
   245  	R_PPC64_GOT_TPREL16_LO_DS           = 88                 // elf.h:259:1:
   246  	R_PPC64_JMP_SLOT                    = 21                 // elf.h:189:1:
   247  	R_PPC64_NONE                        = 0                  // elf.h:168:1:
   248  	R_PPC64_NUM                         = 253                // elf.h:290:1:
   249  	R_PPC64_PLT16_HA                    = 31                 // elf.h:199:1:
   250  	R_PPC64_PLT16_HI                    = 30                 // elf.h:198:1:
   251  	R_PPC64_PLT16_LO                    = 29                 // elf.h:197:1:
   252  	R_PPC64_PLT16_LO_DS                 = 60                 // elf.h:229:1:
   253  	R_PPC64_PLT32                       = 27                 // elf.h:195:1:
   254  	R_PPC64_PLT64                       = 45                 // elf.h:213:1:
   255  	R_PPC64_PLTGOT16                    = 52                 // elf.h:220:1:
   256  	R_PPC64_PLTGOT16_DS                 = 65                 // elf.h:234:1:
   257  	R_PPC64_PLTGOT16_HA                 = 55                 // elf.h:223:1:
   258  	R_PPC64_PLTGOT16_HI                 = 54                 // elf.h:222:1:
   259  	R_PPC64_PLTGOT16_LO                 = 53                 // elf.h:221:1:
   260  	R_PPC64_PLTGOT16_LO_DS              = 66                 // elf.h:235:1:
   261  	R_PPC64_PLTREL32                    = 28                 // elf.h:196:1:
   262  	R_PPC64_PLTREL64                    = 46                 // elf.h:214:1:
   263  	R_PPC64_REL14                       = 11                 // elf.h:179:1:
   264  	R_PPC64_REL14_BRNTAKEN              = 13                 // elf.h:181:1:
   265  	R_PPC64_REL14_BRTAKEN               = 12                 // elf.h:180:1:
   266  	R_PPC64_REL16                       = 249                // elf.h:284:1:
   267  	R_PPC64_REL16_HA                    = 252                // elf.h:287:1:
   268  	R_PPC64_REL16_HI                    = 251                // elf.h:286:1:
   269  	R_PPC64_REL16_LO                    = 250                // elf.h:285:1:
   270  	R_PPC64_REL24                       = 10                 // elf.h:178:1:
   271  	R_PPC64_REL32                       = 26                 // elf.h:194:1:
   272  	R_PPC64_REL64                       = 44                 // elf.h:212:1:
   273  	R_PPC64_RELATIVE                    = 22                 // elf.h:190:1:
   274  	R_PPC64_SECTOFF                     = 33                 // elf.h:201:1:
   275  	R_PPC64_SECTOFF_DS                  = 61                 // elf.h:230:1:
   276  	R_PPC64_SECTOFF_HA                  = 36                 // elf.h:204:1:
   277  	R_PPC64_SECTOFF_HI                  = 35                 // elf.h:203:1:
   278  	R_PPC64_SECTOFF_LO                  = 34                 // elf.h:202:1:
   279  	R_PPC64_SECTOFF_LO_DS               = 62                 // elf.h:231:1:
   280  	R_PPC64_TLS                         = 67                 // elf.h:238:1:
   281  	R_PPC64_TLSGD                       = 107                // elf.h:278:1:
   282  	R_PPC64_TLSLD                       = 108                // elf.h:279:1:
   283  	R_PPC64_TOC                         = 51                 // elf.h:219:1:
   284  	R_PPC64_TOC16                       = 47                 // elf.h:215:1:
   285  	R_PPC64_TOC16_DS                    = 63                 // elf.h:232:1:
   286  	R_PPC64_TOC16_HA                    = 50                 // elf.h:218:1:
   287  	R_PPC64_TOC16_HI                    = 49                 // elf.h:217:1:
   288  	R_PPC64_TOC16_LO                    = 48                 // elf.h:216:1:
   289  	R_PPC64_TOC16_LO_DS                 = 64                 // elf.h:233:1:
   290  	R_PPC64_TOCSAVE                     = 109                // elf.h:280:1:
   291  	R_PPC64_TPREL16                     = 69                 // elf.h:240:1:
   292  	R_PPC64_TPREL16_DS                  = 95                 // elf.h:266:1:
   293  	R_PPC64_TPREL16_HA                  = 72                 // elf.h:243:1:
   294  	R_PPC64_TPREL16_HI                  = 71                 // elf.h:242:1:
   295  	R_PPC64_TPREL16_HIGHER              = 97                 // elf.h:268:1:
   296  	R_PPC64_TPREL16_HIGHERA             = 98                 // elf.h:269:1:
   297  	R_PPC64_TPREL16_HIGHEST             = 99                 // elf.h:270:1:
   298  	R_PPC64_TPREL16_HIGHESTA            = 100                // elf.h:271:1:
   299  	R_PPC64_TPREL16_LO                  = 70                 // elf.h:241:1:
   300  	R_PPC64_TPREL16_LO_DS               = 96                 // elf.h:267:1:
   301  	R_PPC64_TPREL64                     = 73                 // elf.h:244:1:
   302  	R_PPC64_UADDR16                     = 25                 // elf.h:193:1:
   303  	R_PPC64_UADDR32                     = 24                 // elf.h:192:1:
   304  	R_PPC64_UADDR64                     = 43                 // elf.h:211:1:
   305  	R_PPC_ADDR14                        = 7                  // elf.h:28:1:
   306  	R_PPC_ADDR14_BRNTAKEN               = 9                  // elf.h:30:1:
   307  	R_PPC_ADDR14_BRTAKEN                = 8                  // elf.h:29:1:
   308  	R_PPC_ADDR16                        = 3                  // elf.h:24:1:
   309  	R_PPC_ADDR16_HA                     = 6                  // elf.h:27:1:
   310  	R_PPC_ADDR16_HI                     = 5                  // elf.h:26:1:
   311  	R_PPC_ADDR16_LO                     = 4                  // elf.h:25:1:
   312  	R_PPC_ADDR24                        = 2                  // elf.h:23:1:
   313  	R_PPC_ADDR32                        = 1                  // elf.h:22:1:
   314  	R_PPC_COPY                          = 19                 // elf.h:40:1:
   315  	R_PPC_DTPMOD32                      = 68                 // elf.h:61:1:
   316  	R_PPC_DTPREL16                      = 74                 // elf.h:67:1:
   317  	R_PPC_DTPREL16_HA                   = 77                 // elf.h:70:1:
   318  	R_PPC_DTPREL16_HI                   = 76                 // elf.h:69:1:
   319  	R_PPC_DTPREL16_LO                   = 75                 // elf.h:68:1:
   320  	R_PPC_DTPREL32                      = 78                 // elf.h:71:1:
   321  	R_PPC_GLOB_DAT                      = 20                 // elf.h:41:1:
   322  	R_PPC_GOT16                         = 14                 // elf.h:35:1:
   323  	R_PPC_GOT16_HA                      = 17                 // elf.h:38:1:
   324  	R_PPC_GOT16_HI                      = 16                 // elf.h:37:1:
   325  	R_PPC_GOT16_LO                      = 15                 // elf.h:36:1:
   326  	R_PPC_GOT_DTPREL16                  = 91                 // elf.h:84:1:
   327  	R_PPC_GOT_DTPREL16_HA               = 94                 // elf.h:87:1:
   328  	R_PPC_GOT_DTPREL16_HI               = 93                 // elf.h:86:1:
   329  	R_PPC_GOT_DTPREL16_LO               = 92                 // elf.h:85:1:
   330  	R_PPC_GOT_TLSGD16                   = 79                 // elf.h:72:1:
   331  	R_PPC_GOT_TLSGD16_HA                = 82                 // elf.h:75:1:
   332  	R_PPC_GOT_TLSGD16_HI                = 81                 // elf.h:74:1:
   333  	R_PPC_GOT_TLSGD16_LO                = 80                 // elf.h:73:1:
   334  	R_PPC_GOT_TLSLD16                   = 83                 // elf.h:76:1:
   335  	R_PPC_GOT_TLSLD16_HA                = 86                 // elf.h:79:1:
   336  	R_PPC_GOT_TLSLD16_HI                = 85                 // elf.h:78:1:
   337  	R_PPC_GOT_TLSLD16_LO                = 84                 // elf.h:77:1:
   338  	R_PPC_GOT_TPREL16                   = 87                 // elf.h:80:1:
   339  	R_PPC_GOT_TPREL16_HA                = 90                 // elf.h:83:1:
   340  	R_PPC_GOT_TPREL16_HI                = 89                 // elf.h:82:1:
   341  	R_PPC_GOT_TPREL16_LO                = 88                 // elf.h:81:1:
   342  	R_PPC_JMP_SLOT                      = 21                 // elf.h:42:1:
   343  	R_PPC_LOCAL24PC                     = 23                 // elf.h:44:1:
   344  	R_PPC_NONE                          = 0                  // elf.h:21:1:
   345  	R_PPC_NUM                           = 95                 // elf.h:90:1:
   346  	R_PPC_PLT16_HA                      = 31                 // elf.h:52:1:
   347  	R_PPC_PLT16_HI                      = 30                 // elf.h:51:1:
   348  	R_PPC_PLT16_LO                      = 29                 // elf.h:50:1:
   349  	R_PPC_PLT32                         = 27                 // elf.h:48:1:
   350  	R_PPC_PLTREL24                      = 18                 // elf.h:39:1:
   351  	R_PPC_PLTREL32                      = 28                 // elf.h:49:1:
   352  	R_PPC_REL14                         = 11                 // elf.h:32:1:
   353  	R_PPC_REL14_BRNTAKEN                = 13                 // elf.h:34:1:
   354  	R_PPC_REL14_BRTAKEN                 = 12                 // elf.h:33:1:
   355  	R_PPC_REL24                         = 10                 // elf.h:31:1:
   356  	R_PPC_REL32                         = 26                 // elf.h:47:1:
   357  	R_PPC_RELATIVE                      = 22                 // elf.h:43:1:
   358  	R_PPC_SDAREL16                      = 32                 // elf.h:53:1:
   359  	R_PPC_SECTOFF                       = 33                 // elf.h:54:1:
   360  	R_PPC_SECTOFF_HA                    = 36                 // elf.h:57:1:
   361  	R_PPC_SECTOFF_HI                    = 35                 // elf.h:56:1:
   362  	R_PPC_SECTOFF_LO                    = 34                 // elf.h:55:1:
   363  	R_PPC_TLS                           = 67                 // elf.h:60:1:
   364  	R_PPC_TPREL16                       = 69                 // elf.h:62:1:
   365  	R_PPC_TPREL16_HA                    = 72                 // elf.h:65:1:
   366  	R_PPC_TPREL16_HI                    = 71                 // elf.h:64:1:
   367  	R_PPC_TPREL16_LO                    = 70                 // elf.h:63:1:
   368  	R_PPC_TPREL32                       = 73                 // elf.h:66:1:
   369  	R_PPC_UADDR16                       = 25                 // elf.h:46:1:
   370  	R_PPC_UADDR32                       = 24                 // elf.h:45:1:
   371  	SA_INTERRUPT                        = 0x20000000         // sigaction.h:70:1:
   372  	SA_NOCLDSTOP                        = 1                  // sigaction.h:56:1:
   373  	SA_NOCLDWAIT                        = 2                  // sigaction.h:57:1:
   374  	SA_NODEFER                          = 0x40000000         // sigaction.h:65:1:
   375  	SA_NOMASK                           = 1073741824         // sigaction.h:73:1:
   376  	SA_ONESHOT                          = 2147483648         // sigaction.h:74:1:
   377  	SA_ONSTACK                          = 0x08000000         // sigaction.h:61:1:
   378  	SA_RESETHAND                        = 0x80000000         // sigaction.h:67:1:
   379  	SA_RESTART                          = 0x10000000         // sigaction.h:64:1:
   380  	SA_SIGINFO                          = 4                  // sigaction.h:58:1:
   381  	SA_STACK                            = 134217728          // sigaction.h:75:1:
   382  	SIGABRT                             = 6                  // signum-generic.h:50:1:
   383  	SIGALRM                             = 14                 // signum-generic.h:63:1:
   384  	SIGBUS                              = 7                  // signum.h:35:1:
   385  	SIGCHLD                             = 17                 // signum.h:41:1:
   386  	SIGCLD                              = 17                 // signum-generic.h:88:1:
   387  	SIGCONT                             = 18                 // signum.h:43:1:
   388  	SIGFPE                              = 8                  // signum-generic.h:51:1:
   389  	SIGHUP                              = 1                  // signum-generic.h:56:1:
   390  	SIGILL                              = 4                  // signum-generic.h:49:1:
   391  	SIGINT                              = 2                  // signum-generic.h:48:1:
   392  	SIGIO                               = 29                 // signum-generic.h:86:1:
   393  	SIGIOT                              = 6                  // signum-generic.h:87:1:
   394  	SIGKILL                             = 9                  // signum-generic.h:59:1:
   395  	SIGPIPE                             = 13                 // signum-generic.h:62:1:
   396  	SIGPOLL                             = 29                 // signum.h:51:1:
   397  	SIGPROF                             = 27                 // signum-generic.h:77:1:
   398  	SIGPWR                              = 30                 // signum.h:32:1:
   399  	SIGQUIT                             = 3                  // signum-generic.h:57:1:
   400  	SIGSEGV                             = 11                 // signum-generic.h:52:1:
   401  	SIGSTKFLT                           = 16                 // signum.h:31:1:
   402  	SIGSTKSZ                            = 16384              // sigstack.h:30:1:
   403  	SIGSTOP                             = 19                 // signum.h:45:1:
   404  	SIGSYS                              = 31                 // signum.h:53:1:
   405  	SIGTERM                             = 15                 // signum-generic.h:53:1:
   406  	SIGTRAP                             = 5                  // signum-generic.h:58:1:
   407  	SIGTSTP                             = 20                 // signum.h:47:1:
   408  	SIGTTIN                             = 21                 // signum-generic.h:71:1:
   409  	SIGTTOU                             = 22                 // signum-generic.h:72:1:
   410  	SIGURG                              = 23                 // signum.h:49:1:
   411  	SIGUSR1                             = 10                 // signum.h:37:1:
   412  	SIGUSR2                             = 12                 // signum.h:39:1:
   413  	SIGVTALRM                           = 26                 // signum-generic.h:76:1:
   414  	SIGWINCH                            = 28                 // signum-generic.h:83:1:
   415  	SIGXCPU                             = 24                 // signum-generic.h:74:1:
   416  	SIGXFSZ                             = 25                 // signum-generic.h:75:1:
   417  	SIG_BLOCK                           = 0                  // sigaction.h:79:1:
   418  	SIG_SETMASK                         = 2                  // sigaction.h:81:1:
   419  	SIG_UNBLOCK                         = 1                  // sigaction.h:80:1:
   420  	X_ARCH_PPC                          = 1                  // <predefined>:198:1:
   421  	X_ARCH_PPC64                        = 1                  // <predefined>:402:1:
   422  	X_ARCH_PPCGR                        = 1                  // <predefined>:15:1:
   423  	X_ARCH_PPCSQ                        = 1                  // <predefined>:43:1:
   424  	X_ARCH_PWR4                         = 1                  // <predefined>:381:1:
   425  	X_ARCH_PWR5                         = 1                  // <predefined>:90:1:
   426  	X_ARCH_PWR5X                        = 1                  // <predefined>:137:1:
   427  	X_ARCH_PWR6                         = 1                  // <predefined>:91:1:
   428  	X_ARCH_PWR7                         = 1                  // <predefined>:92:1:
   429  	X_ARCH_PWR8                         = 1                  // <predefined>:93:1:
   430  	X_ASM_GENERIC_INT_L64_H             = 0                  // int-l64.h:10:1:
   431  	X_ASM_POWERPC_AUXVEC_H              = 0                  // auxvec.h:3:1:
   432  	X_ASM_POWERPC_ELF_H                 = 0                  // elf.h:11:1:
   433  	X_ASM_POWERPC_POSIX_TYPES_H         = 0                  // posix_types.h:3:1:
   434  	X_ASM_POWERPC_PTRACE_H              = 0                  // ptrace.h:25:1:
   435  	X_ASM_POWERPC_SIGCONTEXT_H          = 0                  // sigcontext.h:3:1:
   436  	X_ASM_POWERPC_TYPES_H               = 0                  // types.h:15:1:
   437  	X_ATFILE_SOURCE                     = 1                  // features.h:342:1:
   438  	X_BITS_ENDIANNESS_H                 = 1                  // endianness.h:2:1:
   439  	X_BITS_ENDIAN_H                     = 1                  // endian.h:20:1:
   440  	X_BITS_PTHREADTYPES_ARCH_H          = 1                  // pthreadtypes-arch.h:21:1:
   441  	X_BITS_PTHREADTYPES_COMMON_H        = 1                  // pthreadtypes.h:20:1:
   442  	X_BITS_SIGACTION_H                  = 1                  // sigaction.h:20:1:
   443  	X_BITS_SIGCONTEXT_H                 = 1                  // sigcontext.h:19:1:
   444  	X_BITS_SIGEVENT_CONSTS_H            = 1                  // sigevent-consts.h:20:1:
   445  	X_BITS_SIGINFO_ARCH_H               = 1                  // siginfo-arch.h:3:1:
   446  	X_BITS_SIGINFO_CONSTS_H             = 1                  // siginfo-consts.h:20:1:
   447  	X_BITS_SIGNUM_GENERIC_H             = 1                  // signum-generic.h:20:1:
   448  	X_BITS_SIGNUM_H                     = 1                  // signum.h:20:1:
   449  	X_BITS_SIGSTACK_H                   = 1                  // sigstack.h:20:1:
   450  	X_BITS_SIGTHREAD_H                  = 1                  // sigthread.h:20:1:
   451  	X_BITS_SS_FLAGS_H                   = 1                  // ss_flags.h:20:1:
   452  	X_BITS_TIME64_H                     = 1                  // time64.h:24:1:
   453  	X_BITS_TYPESIZES_H                  = 1                  // typesizes.h:24:1:
   454  	X_BITS_TYPES_H                      = 1                  // types.h:24:1:
   455  	X_BSD_SIZE_T_                       = 0                  // stddef.h:189:1:
   456  	X_BSD_SIZE_T_DEFINED_               = 0                  // stddef.h:192:1:
   457  	X_CALL_ELF                          = 2                  // <predefined>:415:1:
   458  	X_CALL_LINUX                        = 1                  // <predefined>:123:1:
   459  	X_DEFAULT_SOURCE                    = 1                  // features.h:227:1:
   460  	X_FEATURES_H                        = 1                  // features.h:19:1:
   461  	X_FILE_OFFSET_BITS                  = 64                 // <builtin>:25:1:
   462  	X_GCC_SIZE_T                        = 0                  // stddef.h:195:1:
   463  	X_LINUX_POSIX_TYPES_H               = 0                  // posix_types.h:3:1:
   464  	X_LINUX_TYPES_H                     = 0                  // types.h:3:1:
   465  	X_LITTLE_ENDIAN                     = 1                  // <predefined>:37:1:
   466  	X_LP64                              = 1                  // <predefined>:335:1:
   467  	X_NSIG                              = 65                 // signum-generic.h:100:1:
   468  	X_POSIX_C_SOURCE                    = 200809             // features.h:281:1:
   469  	X_POSIX_SOURCE                      = 1                  // features.h:279:1:
   470  	X_RWLOCK_INTERNAL_H                 = 0                  // struct_rwlock.h:21:1:
   471  	X_SIGNAL_H                          = 0                  // signal.h:23:1:
   472  	X_SIZET_                            = 0                  // stddef.h:196:1:
   473  	X_SIZE_T                            = 0                  // stddef.h:183:1:
   474  	X_SIZE_T_                           = 0                  // stddef.h:188:1:
   475  	X_SIZE_T_DECLARED                   = 0                  // stddef.h:193:1:
   476  	X_SIZE_T_DEFINED                    = 0                  // stddef.h:191:1:
   477  	X_SIZE_T_DEFINED_                   = 0                  // stddef.h:190:1:
   478  	X_STDC_PREDEF_H                     = 1                  // <predefined>:203:1:
   479  	X_STRUCT_TIMESPEC                   = 1                  // struct_timespec.h:3:1:
   480  	X_SYS_CDEFS_H                       = 1                  // cdefs.h:19:1:
   481  	X_SYS_SIZE_T_H                      = 0                  // stddef.h:184:1:
   482  	X_SYS_UCONTEXT_H                    = 1                  // ucontext.h:19:1:
   483  	X_THREAD_MUTEX_INTERNAL_H           = 1                  // struct_mutex.h:20:1:
   484  	X_THREAD_SHARED_TYPES_H             = 1                  // thread-shared-types.h:20:1:
   485  	X_T_SIZE                            = 0                  // stddef.h:186:1:
   486  	X_T_SIZE_                           = 0                  // stddef.h:185:1:
   487  	Linux                               = 1                  // <predefined>:263:1:
   488  	Unix                                = 1                  // <predefined>:222:1:
   489  )
   490  
   491  // POSIX names to access some of the members.
   492  
   493  // sigevent constants.  Linux version.
   494  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
   495  //    This file is part of the GNU C Library.
   496  //
   497  //    The GNU C Library is free software; you can redistribute it and/or
   498  //    modify it under the terms of the GNU Lesser General Public
   499  //    License as published by the Free Software Foundation; either
   500  //    version 2.1 of the License, or (at your option) any later version.
   501  //
   502  //    The GNU C Library is distributed in the hope that it will be useful,
   503  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   504  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   505  //    Lesser General Public License for more details.
   506  //
   507  //    You should have received a copy of the GNU Lesser General Public
   508  //    License along with the GNU C Library; if not, see
   509  //    <https://www.gnu.org/licenses/>.
   510  
   511  // `sigev_notify' values.
   512  const ( /* sigevent-consts.h:27:1: */
   513  	SIGEV_SIGNAL = 0 // Notify via signal.
   514  	SIGEV_NONE   = 1 // Other notification: meaningless.
   515  	SIGEV_THREAD = 2 // Deliver via thread creation.
   516  
   517  	SIGEV_THREAD_ID = 4
   518  )
   519  
   520  // `si_code' values for SIGSEGV signal.
   521  const ( /* siginfo-consts.h:119:1: */
   522  	SEGV_MAPERR  = 1 // Address not mapped to object.
   523  	SEGV_ACCERR  = 2 // Invalid permissions for mapped object.
   524  	SEGV_BNDERR  = 3 // Bounds checking failure.
   525  	SEGV_PKUERR  = 4 // Protection key checking failure.
   526  	SEGV_ACCADI  = 5 // ADI not enabled for mapped object.
   527  	SEGV_ADIDERR = 6 // Disrupting MCD error.
   528  	SEGV_ADIPERR = 7
   529  )
   530  
   531  // `si_code' values for SIGBUS signal.
   532  const ( /* siginfo-consts.h:138:1: */
   533  	BUS_ADRALN    = 1 // Invalid address alignment.
   534  	BUS_ADRERR    = 2 // Non-existant physical address.
   535  	BUS_OBJERR    = 3 // Object specific hardware error.
   536  	BUS_MCEERR_AR = 4 // Hardware memory error: action required.
   537  	BUS_MCEERR_AO = 5
   538  )
   539  
   540  // `si_code' values for SIGCHLD signal.
   541  const ( /* siginfo-consts.h:172:1: */
   542  	CLD_EXITED    = 1 // Child has exited.
   543  	CLD_KILLED    = 2 // Child was killed.
   544  	CLD_DUMPED    = 3 // Child terminated abnormally.
   545  	CLD_TRAPPED   = 4 // Traced child has trapped.
   546  	CLD_STOPPED   = 5 // Child has stopped.
   547  	CLD_CONTINUED = 6
   548  )
   549  
   550  // `si_code' values for SIGPOLL signal.
   551  const ( /* siginfo-consts.h:189:1: */
   552  	POLL_IN  = 1 // Data input available.
   553  	POLL_OUT = 2 // Output buffers available.
   554  	POLL_MSG = 3 // Input message available.
   555  	POLL_ERR = 4 // I/O error.
   556  	POLL_PRI = 5 // High priority input available.
   557  	POLL_HUP = 6
   558  )
   559  
   560  // X/Open requires some more fields with fixed names.
   561  
   562  // siginfo constants.  Linux version.
   563  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
   564  //    This file is part of the GNU C Library.
   565  //
   566  //    The GNU C Library is free software; you can redistribute it and/or
   567  //    modify it under the terms of the GNU Lesser General Public
   568  //    License as published by the Free Software Foundation; either
   569  //    version 2.1 of the License, or (at your option) any later version.
   570  //
   571  //    The GNU C Library is distributed in the hope that it will be useful,
   572  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   573  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   574  //    Lesser General Public License for more details.
   575  //
   576  //    You should have received a copy of the GNU Lesser General Public
   577  //    License along with the GNU C Library; if not, see
   578  //    <https://www.gnu.org/licenses/>.
   579  
   580  // Most of these constants are uniform across all architectures, but there
   581  //    is one exception.
   582  // Architecture-specific adjustments to siginfo_t.
   583  
   584  // Values for `si_code'.  Positive values are reserved for kernel-generated
   585  //
   586  //	signals.
   587  const ( /* siginfo-consts.h:35:1: */
   588  	SI_ASYNCNL  = -60 // Sent by asynch name lookup completion.
   589  	SI_DETHREAD = -7  // Sent by execve killing subsidiary
   590  	// 				   threads.
   591  	SI_TKILL   = -6 // Sent by tkill.
   592  	SI_SIGIO   = -5 // Sent by queued SIGIO.
   593  	SI_ASYNCIO = -4 // Sent by AIO completion.
   594  	SI_MESGQ   = -3 // Sent by real time mesq state change.
   595  	SI_TIMER   = -2 // Sent by timer expiration.
   596  	SI_QUEUE   = -1 // Sent by sigqueue.
   597  	SI_USER    = 0  // Sent by kill, sigsend.
   598  	SI_KERNEL  = 128
   599  )
   600  
   601  // `si_code' values for SIGILL signal.
   602  const ( /* siginfo-consts.h:71:1: */
   603  	ILL_ILLOPC   = 1 // Illegal opcode.
   604  	ILL_ILLOPN   = 2 // Illegal operand.
   605  	ILL_ILLADR   = 3 // Illegal addressing mode.
   606  	ILL_ILLTRP   = 4 // Illegal trap.
   607  	ILL_PRVOPC   = 5 // Privileged opcode.
   608  	ILL_PRVREG   = 6 // Privileged register.
   609  	ILL_COPROC   = 7 // Coprocessor error.
   610  	ILL_BADSTK   = 8 // Internal stack error.
   611  	ILL_BADIADDR = 9
   612  )
   613  
   614  // `si_code' values for SIGFPE signal.
   615  const ( /* siginfo-consts.h:94:1: */
   616  	FPE_INTDIV   = 1  // Integer divide by zero.
   617  	FPE_INTOVF   = 2  // Integer overflow.
   618  	FPE_FLTDIV   = 3  // Floating point divide by zero.
   619  	FPE_FLTOVF   = 4  // Floating point overflow.
   620  	FPE_FLTUND   = 5  // Floating point underflow.
   621  	FPE_FLTRES   = 6  // Floating point inexact result.
   622  	FPE_FLTINV   = 7  // Floating point invalid operation.
   623  	FPE_FLTSUB   = 8  // Subscript out of range.
   624  	FPE_FLTUNK   = 14 // Undiagnosed floating-point exception.
   625  	FPE_CONDTRAP = 15
   626  )
   627  
   628  // sigstack, sigaltstack definitions.
   629  //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
   630  //    This file is part of the GNU C Library.
   631  //
   632  //    The GNU C Library is free software; you can redistribute it and/or
   633  //    modify it under the terms of the GNU Lesser General Public
   634  //    License as published by the Free Software Foundation; either
   635  //    version 2.1 of the License, or (at your option) any later version.
   636  //
   637  //    The GNU C Library is distributed in the hope that it will be useful,
   638  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   639  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   640  //    Lesser General Public License for more details.
   641  //
   642  //    You should have received a copy of the GNU Lesser General Public
   643  //    License along with the GNU C Library; if not, see
   644  //    <https://www.gnu.org/licenses/>.
   645  
   646  // Minimum stack size for a signal handler.
   647  
   648  // System default stack size.
   649  
   650  // ss_flags values for stack_t.  Linux version.
   651  //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
   652  //    This file is part of the GNU C Library.
   653  //
   654  //    The GNU C Library is free software; you can redistribute it and/or
   655  //    modify it under the terms of the GNU Lesser General Public
   656  //    License as published by the Free Software Foundation; either
   657  //    version 2.1 of the License, or (at your option) any later version.
   658  //
   659  //    The GNU C Library is distributed in the hope that it will be useful,
   660  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   661  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   662  //    Lesser General Public License for more details.
   663  //
   664  //    You should have received a copy of the GNU Lesser General Public
   665  //    License along with the GNU C Library; if not, see
   666  //    <https://www.gnu.org/licenses/>.
   667  
   668  // Possible values for `ss_flags'.
   669  const ( /* ss_flags.h:27:1: */
   670  	SS_ONSTACK = 1
   671  	SS_DISABLE = 2
   672  )
   673  
   674  type Ptrdiff_t = int64 /* <builtin>:3:26 */
   675  
   676  type Size_t = uint64 /* <builtin>:9:23 */
   677  
   678  type Wchar_t = int32 /* <builtin>:15:24 */
   679  
   680  type X__int128_t = struct {
   681  	Flo int64
   682  	Fhi int64
   683  } /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
   684  type X__uint128_t = struct {
   685  	Flo uint64
   686  	Fhi uint64
   687  } /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
   688  
   689  type X__builtin_va_list = uintptr /* <builtin>:46:14 */
   690  type X__ieee128 = float64         /* <builtin>:47:21 */
   691  
   692  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
   693  //    This file is part of the GNU C Library.
   694  //
   695  //    The GNU C Library is free software; you can redistribute it and/or
   696  //    modify it under the terms of the GNU Lesser General Public
   697  //    License as published by the Free Software Foundation; either
   698  //    version 2.1 of the License, or (at your option) any later version.
   699  //
   700  //    The GNU C Library is distributed in the hope that it will be useful,
   701  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   702  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   703  //    Lesser General Public License for more details.
   704  //
   705  //    You should have received a copy of the GNU Lesser General Public
   706  //    License along with the GNU C Library; if not, see
   707  //    <https://www.gnu.org/licenses/>.
   708  
   709  //	ISO C99 Standard: 7.14 Signal handling <signal.h>
   710  
   711  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
   712  //    This file is part of the GNU C Library.
   713  //
   714  //    The GNU C Library is free software; you can redistribute it and/or
   715  //    modify it under the terms of the GNU Lesser General Public
   716  //    License as published by the Free Software Foundation; either
   717  //    version 2.1 of the License, or (at your option) any later version.
   718  //
   719  //    The GNU C Library is distributed in the hope that it will be useful,
   720  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   721  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   722  //    Lesser General Public License for more details.
   723  //
   724  //    You should have received a copy of the GNU Lesser General Public
   725  //    License along with the GNU C Library; if not, see
   726  //    <https://www.gnu.org/licenses/>.
   727  
   728  // These are defined by the user (or the compiler)
   729  //    to specify the desired environment:
   730  //
   731  //    __STRICT_ANSI__	ISO Standard C.
   732  //    _ISOC99_SOURCE	Extensions to ISO C89 from ISO C99.
   733  //    _ISOC11_SOURCE	Extensions to ISO C99 from ISO C11.
   734  //    _ISOC2X_SOURCE	Extensions to ISO C99 from ISO C2X.
   735  //    __STDC_WANT_LIB_EXT2__
   736  // 			Extensions to ISO C99 from TR 27431-2:2010.
   737  //    __STDC_WANT_IEC_60559_BFP_EXT__
   738  // 			Extensions to ISO C11 from TS 18661-1:2014.
   739  //    __STDC_WANT_IEC_60559_FUNCS_EXT__
   740  // 			Extensions to ISO C11 from TS 18661-4:2015.
   741  //    __STDC_WANT_IEC_60559_TYPES_EXT__
   742  // 			Extensions to ISO C11 from TS 18661-3:2015.
   743  //
   744  //    _POSIX_SOURCE	IEEE Std 1003.1.
   745  //    _POSIX_C_SOURCE	If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
   746  // 			if >=199309L, add IEEE Std 1003.1b-1993;
   747  // 			if >=199506L, add IEEE Std 1003.1c-1995;
   748  // 			if >=200112L, all of IEEE 1003.1-2004
   749  // 			if >=200809L, all of IEEE 1003.1-2008
   750  //    _XOPEN_SOURCE	Includes POSIX and XPG things.  Set to 500 if
   751  // 			Single Unix conformance is wanted, to 600 for the
   752  // 			sixth revision, to 700 for the seventh revision.
   753  //    _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
   754  //    _LARGEFILE_SOURCE	Some more functions for correct standard I/O.
   755  //    _LARGEFILE64_SOURCE	Additional functionality from LFS for large files.
   756  //    _FILE_OFFSET_BITS=N	Select default filesystem interface.
   757  //    _ATFILE_SOURCE	Additional *at interfaces.
   758  //    _GNU_SOURCE		All of the above, plus GNU extensions.
   759  //    _DEFAULT_SOURCE	The default set of features (taking precedence over
   760  // 			__STRICT_ANSI__).
   761  //
   762  //    _FORTIFY_SOURCE	Add security hardening to many library functions.
   763  // 			Set to 1 or 2; 2 performs stricter checks than 1.
   764  //
   765  //    _REENTRANT, _THREAD_SAFE
   766  // 			Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
   767  //
   768  //    The `-ansi' switch to the GNU C compiler, and standards conformance
   769  //    options such as `-std=c99', define __STRICT_ANSI__.  If none of
   770  //    these are defined, or if _DEFAULT_SOURCE is defined, the default is
   771  //    to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
   772  //    200809L, as well as enabling miscellaneous functions from BSD and
   773  //    SVID.  If more than one of these are defined, they accumulate.  For
   774  //    example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
   775  //    give you ISO C, 1003.1, and 1003.2, but nothing else.
   776  //
   777  //    These are defined by this file and are used by the
   778  //    header files to decide what to declare or define:
   779  //
   780  //    __GLIBC_USE (F)	Define things from feature set F.  This is defined
   781  // 			to 1 or 0; the subsequent macros are either defined
   782  // 			or undefined, and those tests should be moved to
   783  // 			__GLIBC_USE.
   784  //    __USE_ISOC11		Define ISO C11 things.
   785  //    __USE_ISOC99		Define ISO C99 things.
   786  //    __USE_ISOC95		Define ISO C90 AMD1 (C95) things.
   787  //    __USE_ISOCXX11	Define ISO C++11 things.
   788  //    __USE_POSIX		Define IEEE Std 1003.1 things.
   789  //    __USE_POSIX2		Define IEEE Std 1003.2 things.
   790  //    __USE_POSIX199309	Define IEEE Std 1003.1, and .1b things.
   791  //    __USE_POSIX199506	Define IEEE Std 1003.1, .1b, .1c and .1i things.
   792  //    __USE_XOPEN		Define XPG things.
   793  //    __USE_XOPEN_EXTENDED	Define X/Open Unix things.
   794  //    __USE_UNIX98		Define Single Unix V2 things.
   795  //    __USE_XOPEN2K        Define XPG6 things.
   796  //    __USE_XOPEN2KXSI     Define XPG6 XSI things.
   797  //    __USE_XOPEN2K8       Define XPG7 things.
   798  //    __USE_XOPEN2K8XSI    Define XPG7 XSI things.
   799  //    __USE_LARGEFILE	Define correct standard I/O things.
   800  //    __USE_LARGEFILE64	Define LFS things with separate names.
   801  //    __USE_FILE_OFFSET64	Define 64bit interface as default.
   802  //    __USE_MISC		Define things from 4.3BSD or System V Unix.
   803  //    __USE_ATFILE		Define *at interfaces and AT_* constants for them.
   804  //    __USE_GNU		Define GNU extensions.
   805  //    __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
   806  //
   807  //    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
   808  //    defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
   809  //    only for compatibility.  All new code should use the other symbols
   810  //    to test for features.
   811  //
   812  //    All macros listed above as possibly being defined by this file are
   813  //    explicitly undefined if they are not explicitly defined.
   814  //    Feature-test macros that are not defined by the user or compiler
   815  //    but are implied by the other feature-test macros defined (or by the
   816  //    lack of any definitions) are defined by the file.
   817  //
   818  //    ISO C feature test macros depend on the definition of the macro
   819  //    when an affected header is included, not when the first system
   820  //    header is included, and so they are handled in
   821  //    <bits/libc-header-start.h>, which does not have a multiple include
   822  //    guard.  Feature test macros that can be handled from the first
   823  //    system header included are handled here.
   824  
   825  // Undefine everything, so we get a clean slate.
   826  
   827  // Suppress kernel-name space pollution unless user expressedly asks
   828  //    for it.
   829  
   830  // Convenience macro to test the version of gcc.
   831  //    Use like this:
   832  //    #if __GNUC_PREREQ (2,8)
   833  //    ... code requiring gcc 2.8 or later ...
   834  //    #endif
   835  //    Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
   836  //    added in 2.0.
   837  
   838  // Similarly for clang.  Features added to GCC after version 4.2 may
   839  //    or may not also be available in clang, and clang's definitions of
   840  //    __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
   841  //    features can be queried via __has_extension/__has_feature.
   842  
   843  // Whether to use feature set F.
   844  
   845  // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
   846  //    _DEFAULT_SOURCE.  If _DEFAULT_SOURCE is present we do not
   847  //    issue a warning; the expectation is that the source is being
   848  //    transitioned to use the new macro.
   849  
   850  // If _GNU_SOURCE was defined by the user, turn on all the other features.
   851  
   852  // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
   853  //    define _DEFAULT_SOURCE.
   854  
   855  // This is to enable the ISO C2X extension.
   856  
   857  // This is to enable the ISO C11 extension.
   858  
   859  // This is to enable the ISO C99 extension.
   860  
   861  // This is to enable the ISO C90 Amendment 1:1995 extension.
   862  
   863  // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
   864  //    is defined, use POSIX.1-2008 (or another version depending on
   865  //    _XOPEN_SOURCE).
   866  
   867  // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
   868  //    defined in all multithreaded code.  GNU libc has not required this
   869  //    for many years.  We now treat them as compatibility synonyms for
   870  //    _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
   871  //    comprehensive support for multithreaded code.  Using them never
   872  //    lowers the selected level of POSIX conformance, only raises it.
   873  
   874  // The function 'gets' existed in C89, but is impossible to use
   875  //    safely.  It has been removed from ISO C11 and ISO C++14.  Note: for
   876  //    compatibility with various implementations of <cstdio>, this test
   877  //    must consider only the value of __cplusplus when compiling C++.
   878  
   879  // GNU formerly extended the scanf functions with modified format
   880  //    specifiers %as, %aS, and %a[...] that allocate a buffer for the
   881  //    input using malloc.  This extension conflicts with ISO C99, which
   882  //    defines %a as a standalone format specifier that reads a floating-
   883  //    point number; moreover, POSIX.1-2008 provides the same feature
   884  //    using the modifier letter 'm' instead (%ms, %mS, %m[...]).
   885  //
   886  //    We now follow C99 unless GNU extensions are active and the compiler
   887  //    is specifically in C89 or C++98 mode (strict or not).  For
   888  //    instance, with GCC, -std=gnu11 will have C99-compliant scanf with
   889  //    or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
   890  //    old extension.
   891  
   892  // Get definitions of __STDC_* predefined macros, if the compiler has
   893  //    not preincluded this header automatically.
   894  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
   895  //    This file is part of the GNU C Library.
   896  //
   897  //    The GNU C Library is free software; you can redistribute it and/or
   898  //    modify it under the terms of the GNU Lesser General Public
   899  //    License as published by the Free Software Foundation; either
   900  //    version 2.1 of the License, or (at your option) any later version.
   901  //
   902  //    The GNU C Library is distributed in the hope that it will be useful,
   903  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   904  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   905  //    Lesser General Public License for more details.
   906  //
   907  //    You should have received a copy of the GNU Lesser General Public
   908  //    License along with the GNU C Library; if not, see
   909  //    <https://www.gnu.org/licenses/>.
   910  
   911  // This macro indicates that the installed library is the GNU C Library.
   912  //    For historic reasons the value now is 6 and this will stay from now
   913  //    on.  The use of this variable is deprecated.  Use __GLIBC__ and
   914  //    __GLIBC_MINOR__ now (see below) when you want to test for a specific
   915  //    GNU C library version and use the values in <gnu/lib-names.h> to get
   916  //    the sonames of the shared libraries.
   917  
   918  // Major and minor version number of the GNU C library package.  Use
   919  //    these macros to test for features in specific releases.
   920  
   921  // This is here only because every header file already includes this one.
   922  // Copyright (C) 1992-2020 Free Software Foundation, Inc.
   923  //    This file is part of the GNU C Library.
   924  //
   925  //    The GNU C Library is free software; you can redistribute it and/or
   926  //    modify it under the terms of the GNU Lesser General Public
   927  //    License as published by the Free Software Foundation; either
   928  //    version 2.1 of the License, or (at your option) any later version.
   929  //
   930  //    The GNU C Library is distributed in the hope that it will be useful,
   931  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   932  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   933  //    Lesser General Public License for more details.
   934  //
   935  //    You should have received a copy of the GNU Lesser General Public
   936  //    License along with the GNU C Library; if not, see
   937  //    <https://www.gnu.org/licenses/>.
   938  
   939  // We are almost always included from features.h.
   940  
   941  // The GNU libc does not support any K&R compilers or the traditional mode
   942  //    of ISO C compilers anymore.  Check for some of the combinations not
   943  //    anymore supported.
   944  
   945  // Some user header file might have defined this before.
   946  
   947  // All functions, except those with callbacks or those that
   948  //    synchronize memory, are leaf functions.
   949  
   950  // GCC can always grok prototypes.  For C++ programs we add throw()
   951  //    to help it optimize the function calls.  But this works only with
   952  //    gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions
   953  //    as non-throwing using a function attribute since programs can use
   954  //    the -fexceptions options for C code as well.
   955  
   956  // Compilers that are not clang may object to
   957  //        #if defined __clang__ && __has_extension(...)
   958  //    even though they do not need to evaluate the right-hand side of the &&.
   959  
   960  // These two macros are not used in glibc anymore.  They are kept here
   961  //    only because some other projects expect the macros to be defined.
   962  
   963  // For these things, GCC behaves the ANSI way normally,
   964  //    and the non-ANSI way under -traditional.
   965  
   966  // This is not a typedef so `const __ptr_t' does the right thing.
   967  
   968  // C++ needs to know that types and declarations are C, not C++.
   969  
   970  // Fortify support.
   971  
   972  // Support for flexible arrays.
   973  //    Headers that should use flexible arrays only if they're "real"
   974  //    (e.g. only if they won't affect sizeof()) should test
   975  //    #if __glibc_c99_flexarr_available.
   976  
   977  // __asm__ ("xyz") is used throughout the headers to rename functions
   978  //    at the assembly language level.  This is wrapped by the __REDIRECT
   979  //    macro, in order to support compilers that can do this some other
   980  //    way.  When compilers don't support asm-names at all, we have to do
   981  //    preprocessor tricks instead (which don't have exactly the right
   982  //    semantics, but it's the best we can do).
   983  //
   984  //    Example:
   985  //    int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
   986  
   987  //
   988  // #elif __SOME_OTHER_COMPILER__
   989  //
   990  // # define __REDIRECT(name, proto, alias) name proto; 	_Pragma("let " #name " = " #alias)
   991  
   992  // GCC has various useful declarations that can be made with the
   993  //    `__attribute__' syntax.  All of the ways we use this do fine if
   994  //    they are omitted for compilers that don't understand it.
   995  
   996  // At some point during the gcc 2.96 development the `malloc' attribute
   997  //    for functions was introduced.  We don't want to use it unconditionally
   998  //    (although this would be possible) since it generates warnings.
   999  
  1000  // Tell the compiler which arguments to an allocation function
  1001  //    indicate the size of the allocation.
  1002  
  1003  // At some point during the gcc 2.96 development the `pure' attribute
  1004  //    for functions was introduced.  We don't want to use it unconditionally
  1005  //    (although this would be possible) since it generates warnings.
  1006  
  1007  // This declaration tells the compiler that the value is constant.
  1008  
  1009  // At some point during the gcc 3.1 development the `used' attribute
  1010  //    for functions was introduced.  We don't want to use it unconditionally
  1011  //    (although this would be possible) since it generates warnings.
  1012  
  1013  // Since version 3.2, gcc allows marking deprecated functions.
  1014  
  1015  // Since version 4.5, gcc also allows one to specify the message printed
  1016  //    when a deprecated function is used.  clang claims to be gcc 4.2, but
  1017  //    may also support this feature.
  1018  
  1019  // At some point during the gcc 2.8 development the `format_arg' attribute
  1020  //    for functions was introduced.  We don't want to use it unconditionally
  1021  //    (although this would be possible) since it generates warnings.
  1022  //    If several `format_arg' attributes are given for the same function, in
  1023  //    gcc-3.0 and older, all but the last one are ignored.  In newer gccs,
  1024  //    all designated arguments are considered.
  1025  
  1026  // At some point during the gcc 2.97 development the `strfmon' format
  1027  //    attribute for functions was introduced.  We don't want to use it
  1028  //    unconditionally (although this would be possible) since it
  1029  //    generates warnings.
  1030  
  1031  // The nonull function attribute allows to mark pointer parameters which
  1032  //    must not be NULL.
  1033  
  1034  // If fortification mode, we warn about unused results of certain
  1035  //    function calls which can lead to problems.
  1036  
  1037  // Forces a function to be always inlined.
  1038  // The Linux kernel defines __always_inline in stddef.h (283d7573), and
  1039  //    it conflicts with this definition.  Therefore undefine it first to
  1040  //    allow either header to be included first.
  1041  
  1042  // Associate error messages with the source location of the call site rather
  1043  //    than with the source location inside the function.
  1044  
  1045  // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
  1046  //    inline semantics, unless -fgnu89-inline is used.  Using __GNUC_STDC_INLINE__
  1047  //    or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
  1048  //    older than 4.3 may define these macros and still not guarantee GNU inlining
  1049  //    semantics.
  1050  //
  1051  //    clang++ identifies itself as gcc-4.2, but has support for GNU inlining
  1052  //    semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
  1053  //    __GNUC_GNU_INLINE__ macro definitions.
  1054  
  1055  // GCC 4.3 and above allow passing all anonymous arguments of an
  1056  //    __extern_always_inline function to some other vararg function.
  1057  
  1058  // It is possible to compile containing GCC extensions even if GCC is
  1059  //    run in pedantic mode if the uses are carefully marked using the
  1060  //    `__extension__' keyword.  But this is not generally available before
  1061  //    version 2.8.
  1062  
  1063  // __restrict is known in EGCS 1.2 and above.
  1064  
  1065  // ISO C99 also allows to declare arrays as non-overlapping.  The syntax is
  1066  //      array_name[restrict]
  1067  //    GCC 3.1 supports this.
  1068  
  1069  // Describes a char array whose address can safely be passed as the first
  1070  //    argument to strncpy and strncat, as the char array is not necessarily
  1071  //    a NUL-terminated string.
  1072  
  1073  // Undefine (also defined in libc-symbols.h).
  1074  // Copies attributes from the declaration or type referenced by
  1075  //    the argument.
  1076  
  1077  // Determine the wordsize from the preprocessor defines.
  1078  
  1079  // Properties of long double type.  ldbl-opt version.
  1080  //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  1081  //    This file is part of the GNU C Library.
  1082  //
  1083  //    The GNU C Library is free software; you can redistribute it and/or
  1084  //    modify it under the terms of the GNU Lesser General Public
  1085  //    License  published by the Free Software Foundation; either
  1086  //    version 2.1 of the License, or (at your option) any later version.
  1087  //
  1088  //    The GNU C Library is distributed in the hope that it will be useful,
  1089  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1090  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1091  //    Lesser General Public License for more details.
  1092  //
  1093  //    You should have received a copy of the GNU Lesser General Public
  1094  //    License along with the GNU C Library; if not, see
  1095  //    <https://www.gnu.org/licenses/>.
  1096  
  1097  // __glibc_macro_warning (MESSAGE) issues warning MESSAGE.  This is
  1098  //    intended for use in preprocessor macros.
  1099  //
  1100  //    Note: MESSAGE must be a _single_ string; concatenation of string
  1101  //    literals is not supported.
  1102  
  1103  // Generic selection (ISO C11) is a C-only feature, available in GCC
  1104  //    since version 4.9.  Previous versions do not provide generic
  1105  //    selection, even though they might set __STDC_VERSION__ to 201112L,
  1106  //    when in -std=c11 mode.  Thus, we must check for !defined __GNUC__
  1107  //    when testing __STDC_VERSION__ for generic selection support.
  1108  //    On the other hand, Clang also defines __GNUC__, so a clang-specific
  1109  //    check is required to enable the use of generic selection.
  1110  
  1111  // If we don't have __REDIRECT, prototypes will be missing if
  1112  //    __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
  1113  
  1114  // Decide whether we can define 'extern inline' functions in headers.
  1115  
  1116  // This is here only because every header file already includes this one.
  1117  //    Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
  1118  //    <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
  1119  //    that will always return failure (and set errno to ENOSYS).
  1120  // This file is automatically generated.
  1121  //    This file selects the right generated file of `__stub_FUNCTION' macros
  1122  //    based on the architecture being compiled for.
  1123  
  1124  // Determine the wordsize from the preprocessor defines.
  1125  
  1126  // This file is automatically generated.
  1127  //    It defines a symbol `__stub_FUNCTION' for each function
  1128  //    in the C library which is a stub, meaning it will fail
  1129  //    every time called, usually setting errno to ENOSYS.
  1130  
  1131  // bits/types.h -- definitions of __*_t types underlying *_t types.
  1132  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1133  //    This file is part of the GNU C Library.
  1134  //
  1135  //    The GNU C Library is free software; you can redistribute it and/or
  1136  //    modify it under the terms of the GNU Lesser General Public
  1137  //    License as published by the Free Software Foundation; either
  1138  //    version 2.1 of the License, or (at your option) any later version.
  1139  //
  1140  //    The GNU C Library is distributed in the hope that it will be useful,
  1141  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1142  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1143  //    Lesser General Public License for more details.
  1144  //
  1145  //    You should have received a copy of the GNU Lesser General Public
  1146  //    License along with the GNU C Library; if not, see
  1147  //    <https://www.gnu.org/licenses/>.
  1148  
  1149  // Never include this file directly; use <sys/types.h> instead.
  1150  
  1151  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1152  //    This file is part of the GNU C Library.
  1153  //
  1154  //    The GNU C Library is free software; you can redistribute it and/or
  1155  //    modify it under the terms of the GNU Lesser General Public
  1156  //    License as published by the Free Software Foundation; either
  1157  //    version 2.1 of the License, or (at your option) any later version.
  1158  //
  1159  //    The GNU C Library is distributed in the hope that it will be useful,
  1160  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1161  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1162  //    Lesser General Public License for more details.
  1163  //
  1164  //    You should have received a copy of the GNU Lesser General Public
  1165  //    License along with the GNU C Library; if not, see
  1166  //    <https://www.gnu.org/licenses/>.
  1167  
  1168  // Determine the wordsize from the preprocessor defines.
  1169  
  1170  // Bit size of the time_t type at glibc build time, general case.
  1171  //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  1172  //    This file is part of the GNU C Library.
  1173  //
  1174  //    The GNU C Library is free software; you can redistribute it and/or
  1175  //    modify it under the terms of the GNU Lesser General Public
  1176  //    License as published by the Free Software Foundation; either
  1177  //    version 2.1 of the License, or (at your option) any later version.
  1178  //
  1179  //    The GNU C Library is distributed in the hope that it will be useful,
  1180  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1181  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1182  //    Lesser General Public License for more details.
  1183  //
  1184  //    You should have received a copy of the GNU Lesser General Public
  1185  //    License along with the GNU C Library; if not, see
  1186  //    <https://www.gnu.org/licenses/>.
  1187  
  1188  // Determine the wordsize from the preprocessor defines.
  1189  
  1190  // Size in bits of the 'time_t' type of the default ABI.
  1191  
  1192  // Convenience types.
  1193  type X__u_char = uint8   /* types.h:31:23 */
  1194  type X__u_short = uint16 /* types.h:32:28 */
  1195  type X__u_int = uint32   /* types.h:33:22 */
  1196  type X__u_long = uint64  /* types.h:34:27 */
  1197  
  1198  // Fixed-size types, underlying types depend on word size and compiler.
  1199  type X__int8_t = int8     /* types.h:37:21 */
  1200  type X__uint8_t = uint8   /* types.h:38:23 */
  1201  type X__int16_t = int16   /* types.h:39:26 */
  1202  type X__uint16_t = uint16 /* types.h:40:28 */
  1203  type X__int32_t = int32   /* types.h:41:20 */
  1204  type X__uint32_t = uint32 /* types.h:42:22 */
  1205  type X__int64_t = int64   /* types.h:44:25 */
  1206  type X__uint64_t = uint64 /* types.h:45:27 */
  1207  
  1208  // Smallest types with at least a given width.
  1209  type X__int_least8_t = X__int8_t     /* types.h:52:18 */
  1210  type X__uint_least8_t = X__uint8_t   /* types.h:53:19 */
  1211  type X__int_least16_t = X__int16_t   /* types.h:54:19 */
  1212  type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
  1213  type X__int_least32_t = X__int32_t   /* types.h:56:19 */
  1214  type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
  1215  type X__int_least64_t = X__int64_t   /* types.h:58:19 */
  1216  type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
  1217  
  1218  // quad_t is also 64 bits.
  1219  type X__quad_t = int64    /* types.h:63:18 */
  1220  type X__u_quad_t = uint64 /* types.h:64:27 */
  1221  
  1222  // Largest integral types.
  1223  type X__intmax_t = int64   /* types.h:72:18 */
  1224  type X__uintmax_t = uint64 /* types.h:73:27 */
  1225  
  1226  // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
  1227  //    macros for each of the OS types we define below.  The definitions
  1228  //    of those macros must use the following macros for underlying types.
  1229  //    We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
  1230  //    variants of each of the following integer types on this machine.
  1231  //
  1232  // 	16		-- "natural" 16-bit type (always short)
  1233  // 	32		-- "natural" 32-bit type (always int)
  1234  // 	64		-- "natural" 64-bit type (long or long long)
  1235  // 	LONG32		-- 32-bit type, traditionally long
  1236  // 	QUAD		-- 64-bit type, traditionally long long
  1237  // 	WORD		-- natural type of __WORDSIZE bits (int or long)
  1238  // 	LONGWORD	-- type of __WORDSIZE bits, traditionally long
  1239  //
  1240  //    We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
  1241  //    conventional uses of `long' or `long long' type modifiers match the
  1242  //    types we define, even when a less-adorned type would be the same size.
  1243  //    This matters for (somewhat) portably writing printf/scanf formats for
  1244  //    these types, where using the appropriate l or ll format modifiers can
  1245  //    make the typedefs and the formats match up across all GNU platforms.  If
  1246  //    we used `long' when it's 64 bits where `long long' is expected, then the
  1247  //    compiler would warn about the formats not matching the argument types,
  1248  //    and the programmer changing them to shut up the compiler would break the
  1249  //    program's portability.
  1250  //
  1251  //    Here we assume what is presently the case in all the GCC configurations
  1252  //    we support: long long is always 64 bits, long is always word/address size,
  1253  //    and int is always 32 bits.
  1254  
  1255  // No need to mark the typedef with __extension__.
  1256  // bits/typesizes.h -- underlying types for *_t.  Generic version.
  1257  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1258  //    This file is part of the GNU C Library.
  1259  //
  1260  //    The GNU C Library is free software; you can redistribute it and/or
  1261  //    modify it under the terms of the GNU Lesser General Public
  1262  //    License as published by the Free Software Foundation; either
  1263  //    version 2.1 of the License, or (at your option) any later version.
  1264  //
  1265  //    The GNU C Library is distributed in the hope that it will be useful,
  1266  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1267  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1268  //    Lesser General Public License for more details.
  1269  //
  1270  //    You should have received a copy of the GNU Lesser General Public
  1271  //    License along with the GNU C Library; if not, see
  1272  //    <https://www.gnu.org/licenses/>.
  1273  
  1274  // See <bits/types.h> for the meaning of these macros.  This file exists so
  1275  //    that <bits/types.h> need not vary across different GNU platforms.
  1276  
  1277  // Tell the libc code that off_t and off64_t are actually the same type
  1278  //    for all ABI purposes, even if possibly expressed as different base types
  1279  //    for C type-checking purposes.
  1280  
  1281  // Same for ino_t and ino64_t.
  1282  
  1283  // And for rlim_t and rlim64_t.
  1284  
  1285  // And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
  1286  
  1287  // Number of descriptors that can fit in an `fd_set'.
  1288  
  1289  // bits/time64.h -- underlying types for __time64_t.  Generic version.
  1290  //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  1291  //    This file is part of the GNU C Library.
  1292  //
  1293  //    The GNU C Library is free software; you can redistribute it and/or
  1294  //    modify it under the terms of the GNU Lesser General Public
  1295  //    License as published by the Free Software Foundation; either
  1296  //    version 2.1 of the License, or (at your option) any later version.
  1297  //
  1298  //    The GNU C Library is distributed in the hope that it will be useful,
  1299  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1300  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1301  //    Lesser General Public License for more details.
  1302  //
  1303  //    You should have received a copy of the GNU Lesser General Public
  1304  //    License along with the GNU C Library; if not, see
  1305  //    <https://www.gnu.org/licenses/>.
  1306  
  1307  // Define __TIME64_T_TYPE so that it is always a 64-bit type.
  1308  
  1309  // If we already have 64-bit time type then use it.
  1310  
  1311  type X__dev_t = uint64                     /* types.h:145:25 */ // Type of device numbers.
  1312  type X__uid_t = uint32                     /* types.h:146:25 */ // Type of user identifications.
  1313  type X__gid_t = uint32                     /* types.h:147:25 */ // Type of group identifications.
  1314  type X__ino_t = uint64                     /* types.h:148:25 */ // Type of file serial numbers.
  1315  type X__ino64_t = uint64                   /* types.h:149:27 */ // Type of file serial numbers (LFS).
  1316  type X__mode_t = uint32                    /* types.h:150:26 */ // Type of file attribute bitmasks.
  1317  type X__nlink_t = uint64                   /* types.h:151:27 */ // Type of file link counts.
  1318  type X__off_t = int64                      /* types.h:152:25 */ // Type of file sizes and offsets.
  1319  type X__off64_t = int64                    /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
  1320  type X__pid_t = int32                      /* types.h:154:25 */ // Type of process identifications.
  1321  type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
  1322  type X__clock_t = int64                    /* types.h:156:27 */ // Type of CPU usage counts.
  1323  type X__rlim_t = uint64                    /* types.h:157:26 */ // Type for resource measurement.
  1324  type X__rlim64_t = uint64                  /* types.h:158:28 */ // Type for resource measurement (LFS).
  1325  type X__id_t = uint32                      /* types.h:159:24 */ // General type for IDs.
  1326  type X__time_t = int64                     /* types.h:160:26 */ // Seconds since the Epoch.
  1327  type X__useconds_t = uint32                /* types.h:161:30 */ // Count of microseconds.
  1328  type X__suseconds_t = int64                /* types.h:162:31 */ // Signed count of microseconds.
  1329  
  1330  type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address.
  1331  type X__key_t = int32   /* types.h:165:25 */ // Type of an IPC key.
  1332  
  1333  // Clock ID used in clock and timer functions.
  1334  type X__clockid_t = int32 /* types.h:168:29 */
  1335  
  1336  // Timer ID returned by `timer_create'.
  1337  type X__timer_t = uintptr /* types.h:171:12 */
  1338  
  1339  // Type to represent block size.
  1340  type X__blksize_t = int64 /* types.h:174:29 */
  1341  
  1342  // Types from the Large File Support interface.
  1343  
  1344  // Type to count number of disk blocks.
  1345  type X__blkcnt_t = int64   /* types.h:179:28 */
  1346  type X__blkcnt64_t = int64 /* types.h:180:30 */
  1347  
  1348  // Type to count file system blocks.
  1349  type X__fsblkcnt_t = uint64   /* types.h:183:30 */
  1350  type X__fsblkcnt64_t = uint64 /* types.h:184:32 */
  1351  
  1352  // Type to count file system nodes.
  1353  type X__fsfilcnt_t = uint64   /* types.h:187:30 */
  1354  type X__fsfilcnt64_t = uint64 /* types.h:188:32 */
  1355  
  1356  // Type of miscellaneous file system fields.
  1357  type X__fsword_t = int64 /* types.h:191:28 */
  1358  
  1359  type X__ssize_t = int64 /* types.h:193:27 */ // Type of a byte count, or error.
  1360  
  1361  // Signed long type used in system calls.
  1362  type X__syscall_slong_t = int64 /* types.h:196:33 */
  1363  // Unsigned long type used in system calls.
  1364  type X__syscall_ulong_t = uint64 /* types.h:198:33 */
  1365  
  1366  // These few don't really vary by system, they always correspond
  1367  //
  1368  //	to one of the other defined types.
  1369  type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS).
  1370  type X__caddr_t = uintptr   /* types.h:203:14 */
  1371  
  1372  // Duplicates info from stdint.h but this is used in unistd.h.
  1373  type X__intptr_t = int64 /* types.h:206:25 */
  1374  
  1375  // Duplicate info from sys/socket.h.
  1376  type X__socklen_t = uint32 /* types.h:209:23 */
  1377  
  1378  // C99: An integer type that can be accessed as an atomic entity,
  1379  //
  1380  //	even in the presence of asynchronous interrupts.
  1381  //	It is not currently necessary for this to be machine-specific.
  1382  type X__sig_atomic_t = int32 /* types.h:214:13 */
  1383  
  1384  // Seconds since the Epoch, visible to user code when time_t is too
  1385  //    narrow only for consistency with the old way of widening too-narrow
  1386  //    types.  User code should never use __time64_t.
  1387  
  1388  // Signal number definitions.  Linux version.
  1389  //    Copyright (C) 1995-2020 Free Software Foundation, Inc.
  1390  //    This file is part of the GNU C Library.
  1391  //
  1392  //    The GNU C Library is free software; you can redistribute it and/or
  1393  //    modify it under the terms of the GNU Lesser General Public
  1394  //    License as published by the Free Software Foundation; either
  1395  //    version 2.1 of the License, or (at your option) any later version.
  1396  //
  1397  //    The GNU C Library is distributed in the hope that it will be useful,
  1398  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1399  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1400  //    Lesser General Public License for more details.
  1401  //
  1402  //    You should have received a copy of the GNU Lesser General Public
  1403  //    License along with the GNU C Library; if not, see
  1404  //    <https://www.gnu.org/licenses/>.
  1405  
  1406  // Signal number constants.  Generic template.
  1407  //    Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1408  //    This file is part of the GNU C Library.
  1409  //
  1410  //    The GNU C Library is free software; you can redistribute it and/or
  1411  //    modify it under the terms of the GNU Lesser General Public
  1412  //    License as published by the Free Software Foundation; either
  1413  //    version 2.1 of the License, or (at your option) any later version.
  1414  //
  1415  //    The GNU C Library is distributed in the hope that it will be useful,
  1416  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1417  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1418  //    Lesser General Public License for more details.
  1419  //
  1420  //    You should have received a copy of the GNU Lesser General Public
  1421  //    License along with the GNU C Library; if not, see
  1422  //    <https://www.gnu.org/licenses/>.
  1423  
  1424  // Fake signal functions.
  1425  
  1426  // We define here all the signal names listed in POSIX (1003.1-2008);
  1427  //    as of 1003.1-2013, no additional signals have been added by POSIX.
  1428  //    We also define here signal names that historically exist in every
  1429  //    real-world POSIX variant (e.g. SIGWINCH).
  1430  //
  1431  //    Signals in the 1-15 range are defined with their historical numbers.
  1432  //    For other signals, we use the BSD numbers.
  1433  //    There are two unallocated signal numbers in the 1-31 range: 7 and 29.
  1434  //    Signal number 0 is reserved for use as kill(pid, 0), to test whether
  1435  //    a process exists without sending it a signal.
  1436  
  1437  // ISO C99 signals.
  1438  
  1439  // Historical signals specified by POSIX.
  1440  
  1441  // New(er) POSIX signals (1003.1-2008, 1003.1-2013).
  1442  
  1443  // Nonstandard signals found in all modern POSIX systems
  1444  //    (including both BSD and Linux).
  1445  
  1446  // Archaic names for compatibility.
  1447  
  1448  // Not all systems support real-time signals.  bits/signum.h indicates
  1449  //    that they are supported by overriding __SIGRTMAX to a value greater
  1450  //    than __SIGRTMIN.  These constants give the kernel-level hard limits,
  1451  //    but some real-time signals may be used internally by glibc.  Do not
  1452  //    use these constants in application code; use SIGRTMIN and SIGRTMAX
  1453  //    (defined in signal.h) instead.
  1454  
  1455  // Biggest signal number + 1 (including real-time signals).
  1456  
  1457  // Adjustments and additions to the signal number constants for
  1458  //    most Linux systems.
  1459  
  1460  // bits/types.h -- definitions of __*_t types underlying *_t types.
  1461  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1462  //    This file is part of the GNU C Library.
  1463  //
  1464  //    The GNU C Library is free software; you can redistribute it and/or
  1465  //    modify it under the terms of the GNU Lesser General Public
  1466  //    License as published by the Free Software Foundation; either
  1467  //    version 2.1 of the License, or (at your option) any later version.
  1468  //
  1469  //    The GNU C Library is distributed in the hope that it will be useful,
  1470  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1471  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1472  //    Lesser General Public License for more details.
  1473  //
  1474  //    You should have received a copy of the GNU Lesser General Public
  1475  //    License along with the GNU C Library; if not, see
  1476  //    <https://www.gnu.org/licenses/>.
  1477  
  1478  // Never include this file directly; use <sys/types.h> instead.
  1479  
  1480  // An integral type that can be modified atomically, without the
  1481  //
  1482  //	possibility of a signal arriving in the middle of the operation.
  1483  type Sig_atomic_t = X__sig_atomic_t /* sig_atomic_t.h:8:24 */
  1484  
  1485  type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
  1486  
  1487  // A set of signals to be blocked, unblocked, or waited for.
  1488  type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
  1489  
  1490  type Pid_t = X__pid_t /* signal.h:40:17 */
  1491  type Uid_t = X__uid_t /* signal.h:46:17 */
  1492  
  1493  // We need `struct timespec' later on.
  1494  // NB: Include guard matches what <linux/time.h> uses.
  1495  
  1496  // bits/types.h -- definitions of __*_t types underlying *_t types.
  1497  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1498  //    This file is part of the GNU C Library.
  1499  //
  1500  //    The GNU C Library is free software; you can redistribute it and/or
  1501  //    modify it under the terms of the GNU Lesser General Public
  1502  //    License as published by the Free Software Foundation; either
  1503  //    version 2.1 of the License, or (at your option) any later version.
  1504  //
  1505  //    The GNU C Library is distributed in the hope that it will be useful,
  1506  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1507  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1508  //    Lesser General Public License for more details.
  1509  //
  1510  //    You should have received a copy of the GNU Lesser General Public
  1511  //    License along with the GNU C Library; if not, see
  1512  //    <https://www.gnu.org/licenses/>.
  1513  
  1514  // Never include this file directly; use <sys/types.h> instead.
  1515  
  1516  // Endian macros for string.h functions
  1517  //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  1518  //    This file is part of the GNU C Library.
  1519  //
  1520  //    The GNU C Library is free software; you can redistribute it and/or
  1521  //    modify it under the terms of the GNU Lesser General Public
  1522  //    License as published by the Free Software Foundation; either
  1523  //    version 2.1 of the License, or (at your option) any later version.
  1524  //
  1525  //    The GNU C Library is distributed in the hope that it will be useful,
  1526  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1527  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1528  //    Lesser General Public License for more details.
  1529  //
  1530  //    You should have received a copy of the GNU Lesser General Public
  1531  //    License along with the GNU C Library; if not, see
  1532  //    <http://www.gnu.org/licenses/>.
  1533  
  1534  // Definitions for byte order, according to significance of bytes,
  1535  //    from low addresses to high addresses.  The value is what you get by
  1536  //    putting '4' in the most significant byte, '3' in the second most
  1537  //    significant byte, '2' in the second least significant byte, and '1'
  1538  //    in the least significant byte, and then writing down one digit for
  1539  //    each byte, starting with the byte at the lowest address at the left,
  1540  //    and proceeding to the byte with the highest address at the right.
  1541  
  1542  // This file defines `__BYTE_ORDER' for the particular machine.
  1543  
  1544  // PowerPC has selectable endianness.
  1545  
  1546  // Some machines may need to use a different endianness for floating point
  1547  //    values.
  1548  
  1549  // POSIX.1b structure for a time value.  This is like a `struct timeval' but
  1550  //
  1551  //	has nanoseconds instead of microseconds.
  1552  type Timespec = struct {
  1553  	Ftv_sec  X__time_t
  1554  	Ftv_nsec X__syscall_slong_t
  1555  } /* struct_timespec.h:10:1 */
  1556  
  1557  // Determine the wordsize from the preprocessor defines.
  1558  
  1559  // bits/types.h -- definitions of __*_t types underlying *_t types.
  1560  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1561  //    This file is part of the GNU C Library.
  1562  //
  1563  //    The GNU C Library is free software; you can redistribute it and/or
  1564  //    modify it under the terms of the GNU Lesser General Public
  1565  //    License as published by the Free Software Foundation; either
  1566  //    version 2.1 of the License, or (at your option) any later version.
  1567  //
  1568  //    The GNU C Library is distributed in the hope that it will be useful,
  1569  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1570  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1571  //    Lesser General Public License for more details.
  1572  //
  1573  //    You should have received a copy of the GNU Lesser General Public
  1574  //    License along with the GNU C Library; if not, see
  1575  //    <https://www.gnu.org/licenses/>.
  1576  
  1577  // Never include this file directly; use <sys/types.h> instead.
  1578  
  1579  // Define __sigval_t.
  1580  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  1581  //    This file is part of the GNU C Library.
  1582  //
  1583  //    The GNU C Library is free software; you can redistribute it and/or
  1584  //    modify it under the terms of the GNU Lesser General Public
  1585  //    License as published by the Free Software Foundation; either
  1586  //    version 2.1 of the License, or (at your option) any later version.
  1587  //
  1588  //    The GNU C Library is distributed in the hope that it will be useful,
  1589  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1590  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1591  //    Lesser General Public License for more details.
  1592  //
  1593  //    You should have received a copy of the GNU Lesser General Public
  1594  //    License along with the GNU C Library; if not, see
  1595  //    <https://www.gnu.org/licenses/>.
  1596  
  1597  // Type for data associated with a signal.
  1598  type Sigval = struct {
  1599  	F__ccgo_pad1 [0]uint64
  1600  	Fsival_int   int32
  1601  	F__ccgo_pad2 [4]byte
  1602  } /* __sigval_t.h:24:1 */
  1603  
  1604  type X__sigval_t = Sigval /* __sigval_t.h:30:22 */
  1605  
  1606  // Some fields of siginfo_t have architecture-specific variations.
  1607  // Architecture-specific adjustments to siginfo_t.
  1608  
  1609  // This architecture has no adjustments to make to siginfo_t.
  1610  
  1611  type Siginfo_t = struct {
  1612  	Fsi_signo  int32
  1613  	Fsi_errno  int32
  1614  	Fsi_code   int32
  1615  	F__pad0    int32
  1616  	F_sifields struct {
  1617  		F__ccgo_pad1 [0]uint64
  1618  		F_pad        [28]int32
  1619  	}
  1620  } /* siginfo_t.h:124:5 */
  1621  
  1622  // Architectures might also add architecture-specific constants.
  1623  //    These are all considered GNU extensions.
  1624  
  1625  // Define __sigval_t.
  1626  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  1627  //    This file is part of the GNU C Library.
  1628  //
  1629  //    The GNU C Library is free software; you can redistribute it and/or
  1630  //    modify it under the terms of the GNU Lesser General Public
  1631  //    License as published by the Free Software Foundation; either
  1632  //    version 2.1 of the License, or (at your option) any later version.
  1633  //
  1634  //    The GNU C Library is distributed in the hope that it will be useful,
  1635  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1636  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1637  //    Lesser General Public License for more details.
  1638  //
  1639  //    You should have received a copy of the GNU Lesser General Public
  1640  //    License along with the GNU C Library; if not, see
  1641  //    <https://www.gnu.org/licenses/>.
  1642  
  1643  // To avoid sigval_t (not a standard type name) having C++ name
  1644  //    mangling depending on whether the selected standard includes union
  1645  //    sigval, it should not be defined at all when using a standard for
  1646  //    which the sigval name is not reserved; in that case, headers should
  1647  //    not include <bits/types/sigval_t.h> and should use only the
  1648  //    internal __sigval_t name.
  1649  
  1650  type Sigval_t = X__sigval_t /* sigval_t.h:16:20 */
  1651  
  1652  // Determine the wordsize from the preprocessor defines.
  1653  
  1654  // bits/types.h -- definitions of __*_t types underlying *_t types.
  1655  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1656  //    This file is part of the GNU C Library.
  1657  //
  1658  //    The GNU C Library is free software; you can redistribute it and/or
  1659  //    modify it under the terms of the GNU Lesser General Public
  1660  //    License as published by the Free Software Foundation; either
  1661  //    version 2.1 of the License, or (at your option) any later version.
  1662  //
  1663  //    The GNU C Library is distributed in the hope that it will be useful,
  1664  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1665  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1666  //    Lesser General Public License for more details.
  1667  //
  1668  //    You should have received a copy of the GNU Lesser General Public
  1669  //    License along with the GNU C Library; if not, see
  1670  //    <https://www.gnu.org/licenses/>.
  1671  
  1672  // Never include this file directly; use <sys/types.h> instead.
  1673  
  1674  // Define __sigval_t.
  1675  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  1676  //    This file is part of the GNU C Library.
  1677  //
  1678  //    The GNU C Library is free software; you can redistribute it and/or
  1679  //    modify it under the terms of the GNU Lesser General Public
  1680  //    License as published by the Free Software Foundation; either
  1681  //    version 2.1 of the License, or (at your option) any later version.
  1682  //
  1683  //    The GNU C Library is distributed in the hope that it will be useful,
  1684  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1685  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1686  //    Lesser General Public License for more details.
  1687  //
  1688  //    You should have received a copy of the GNU Lesser General Public
  1689  //    License along with the GNU C Library; if not, see
  1690  //    <https://www.gnu.org/licenses/>.
  1691  
  1692  // Forward declaration.
  1693  type Pthread_attr_t1 = struct {
  1694  	F__ccgo_pad1 [0]uint64
  1695  	F__size      [56]uint8
  1696  } /* sigevent_t.h:17:9 */
  1697  
  1698  // Determine the wordsize from the preprocessor defines.
  1699  
  1700  // bits/types.h -- definitions of __*_t types underlying *_t types.
  1701  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  1702  //    This file is part of the GNU C Library.
  1703  //
  1704  //    The GNU C Library is free software; you can redistribute it and/or
  1705  //    modify it under the terms of the GNU Lesser General Public
  1706  //    License as published by the Free Software Foundation; either
  1707  //    version 2.1 of the License, or (at your option) any later version.
  1708  //
  1709  //    The GNU C Library is distributed in the hope that it will be useful,
  1710  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1711  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1712  //    Lesser General Public License for more details.
  1713  //
  1714  //    You should have received a copy of the GNU Lesser General Public
  1715  //    License along with the GNU C Library; if not, see
  1716  //    <https://www.gnu.org/licenses/>.
  1717  
  1718  // Never include this file directly; use <sys/types.h> instead.
  1719  
  1720  // Define __sigval_t.
  1721  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  1722  //    This file is part of the GNU C Library.
  1723  //
  1724  //    The GNU C Library is free software; you can redistribute it and/or
  1725  //    modify it under the terms of the GNU Lesser General Public
  1726  //    License as published by the Free Software Foundation; either
  1727  //    version 2.1 of the License, or (at your option) any later version.
  1728  //
  1729  //    The GNU C Library is distributed in the hope that it will be useful,
  1730  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1731  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1732  //    Lesser General Public License for more details.
  1733  //
  1734  //    You should have received a copy of the GNU Lesser General Public
  1735  //    License along with the GNU C Library; if not, see
  1736  //    <https://www.gnu.org/licenses/>.
  1737  
  1738  // Forward declaration.
  1739  type Pthread_attr_t = Pthread_attr_t1 /* sigevent_t.h:17:30 */
  1740  
  1741  // Structure to transport application-defined values with signals.
  1742  type Sigevent = struct {
  1743  	Fsigev_value  X__sigval_t
  1744  	Fsigev_signo  int32
  1745  	Fsigev_notify int32
  1746  	F_sigev_un    struct {
  1747  		F__ccgo_pad1 [0]uint64
  1748  		F_pad        [12]int32
  1749  	}
  1750  } /* sigevent_t.h:22:9 */
  1751  
  1752  // Structure to transport application-defined values with signals.
  1753  type Sigevent_t = Sigevent /* sigevent_t.h:42:5 */
  1754  
  1755  // Type of a signal handler.
  1756  type X__sighandler_t = uintptr /* signal.h:72:14 */
  1757  
  1758  // 4.4 BSD uses the name `sig_t' for this.
  1759  type Sig_t = X__sighandler_t /* signal.h:190:24 */
  1760  
  1761  // Get the system-specific definitions of `struct sigaction'
  1762  //    and the `SA_*' and `SIG_*'. constants.
  1763  // The proper definitions for Linux's sigaction.
  1764  //    Copyright (C) 1993-2020 Free Software Foundation, Inc.
  1765  //    This file is part of the GNU C Library.
  1766  //
  1767  //    The GNU C Library is free software; you can redistribute it and/or
  1768  //    modify it under the terms of the GNU Lesser General Public
  1769  //    License as published by the Free Software Foundation; either
  1770  //    version 2.1 of the License, or (at your option) any later version.
  1771  //
  1772  //    The GNU C Library is distributed in the hope that it will be useful,
  1773  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1774  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1775  //    Lesser General Public License for more details.
  1776  //
  1777  //    You should have received a copy of the GNU Lesser General Public
  1778  //    License along with the GNU C Library; if not, see
  1779  //    <https://www.gnu.org/licenses/>.
  1780  
  1781  // Structure describing the action to be taken when a signal arrives.
  1782  type Sigaction = struct {
  1783  	F__sigaction_handler struct{ Fsa_handler X__sighandler_t }
  1784  	Fsa_mask             X__sigset_t
  1785  	Fsa_flags            int32
  1786  	F__ccgo_pad1         [4]byte
  1787  	Fsa_restorer         uintptr
  1788  } /* sigaction.h:27:1 */
  1789  
  1790  // Get machine-dependent `struct sigcontext' and signal subcodes.
  1791  // Copyright (C) 1996-2020 Free Software Foundation, Inc.
  1792  //    This file is part of the GNU C Library.
  1793  //
  1794  //    The GNU C Library is free software; you can redistribute it and/or
  1795  //    modify it under the terms of the GNU Lesser General Public
  1796  //    License as published by the Free Software Foundation; either
  1797  //    version 2.1 of the License, or (at your option) any later version.
  1798  //
  1799  //    The GNU C Library is distributed in the hope that it will be useful,
  1800  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1801  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1802  //    Lesser General Public License for more details.
  1803  //
  1804  //    You should have received a copy of the GNU Lesser General Public
  1805  //    License along with the GNU C Library; if not, see
  1806  //    <https://www.gnu.org/licenses/>.
  1807  
  1808  // Kernel headers before 2.1.1 define a struct sigcontext_struct, but
  1809  //    we need sigcontext.
  1810  
  1811  // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
  1812  
  1813  // This program is free software; you can redistribute it and/or
  1814  // modify it under the terms of the GNU General Public License
  1815  // as published by the Free Software Foundation; either version
  1816  // 2 of the License, or (at your option) any later version.
  1817  
  1818  // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
  1819  // Copyright (C) 2001 PPC64 Team, IBM Corp
  1820  //
  1821  // This struct defines the way the registers are stored on the
  1822  // kernel stack during a system call or other kernel entry.
  1823  //
  1824  // this should only contain __volatile__ regs
  1825  // since we can keep non-volatile in the thread_struct
  1826  // should set this up when only volatiles are saved
  1827  // by intr code.
  1828  //
  1829  // Since this is going on the stack, *CARE MUST BE TAKEN* to insure
  1830  // that the overall structure is a multiple of 16 bytes in length.
  1831  //
  1832  // Note that the offsets of the fields in this struct correspond with
  1833  // the PT_* values below.  This simplifies arch/powerpc/kernel/ptrace.c.
  1834  //
  1835  // This program is free software; you can redistribute it and/or
  1836  // modify it under the terms of the GNU General Public License
  1837  // as published by the Free Software Foundation; either version
  1838  // 2 of the License, or (at your option) any later version.
  1839  
  1840  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1841  
  1842  // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
  1843  // This file is never included by application software unless
  1844  // explicitly requested (e.g., via linux/types.h) in which case the
  1845  // application is Linux specific so (user-) name space pollution is
  1846  // not a major issue.  However, for interoperability, libraries still
  1847  // need to be careful to avoid a name clashes.
  1848  //
  1849  // This program is free software; you can redistribute it and/or
  1850  // modify it under the terms of the GNU General Public License
  1851  // as published by the Free Software Foundation; either version
  1852  // 2 of the License, or (at your option) any later version.
  1853  
  1854  // This is here because we used to use l64 for 64bit powerpc
  1855  // and we don't want to impact user mode with our change to ll64
  1856  // in the kernel.
  1857  //
  1858  // However, some user programs are fine with this.  They can
  1859  // flag __SANE_USERSPACE_TYPES__ to get int-ll64.h here.
  1860  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1861  // asm-generic/int-l64.h
  1862  //
  1863  // Integer declarations for architectures which use "long"
  1864  // for 64-bit types.
  1865  
  1866  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1867  
  1868  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1869  
  1870  // There seems to be no way of detecting this automatically from user
  1871  // space, so 64 bit architectures should override this in their
  1872  // bitsperlong.h. In particular, an architecture that supports
  1873  // both 32 and 64 bit user space must not rely on CONFIG_64BIT
  1874  // to decide it, but rather check a compiler provided macro.
  1875  
  1876  // __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
  1877  // header files exported to user space
  1878  
  1879  type X__s8 = int8  /* int-l64.h:20:25 */
  1880  type X__u8 = uint8 /* int-l64.h:21:23 */
  1881  
  1882  type X__s16 = int16  /* int-l64.h:23:26 */
  1883  type X__u16 = uint16 /* int-l64.h:24:24 */
  1884  
  1885  type X__s32 = int32  /* int-l64.h:26:24 */
  1886  type X__u32 = uint32 /* int-l64.h:27:22 */
  1887  
  1888  type X__s64 = int64  /* int-l64.h:29:25 */
  1889  type X__u64 = uint64 /* int-l64.h:30:23 */
  1890  
  1891  type X__vector128 = struct {
  1892  	F__ccgo_pad1 [0]uint64
  1893  	Fu           [4]X__u32
  1894  } /* types.h:36:32 */
  1895  
  1896  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1897  
  1898  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1899  
  1900  // This allows for 1024 file descriptors: if NR_OPEN is ever grown
  1901  // beyond that you'll have to change this too. But 1024 fd's seem to be
  1902  // enough even for such "real" unices like OSF/1, so hopefully this is
  1903  // one limit that doesn't have to be changed [again].
  1904  //
  1905  // Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
  1906  // <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
  1907  // place for them. Solved by having dummy defines in <sys/time.h>.
  1908  
  1909  // This macro may have been defined in <gnu/types.h>. But we always
  1910  // use the one here.
  1911  
  1912  type X__kernel_fd_set = struct{ Ffds_bits [16]uint64 } /* posix_types.h:27:3 */
  1913  
  1914  // Type of a signal handler.
  1915  type X__kernel_sighandler_t = uintptr /* posix_types.h:30:14 */
  1916  
  1917  // Type of a SYSV IPC key.
  1918  type X__kernel_key_t = int32 /* posix_types.h:33:13 */
  1919  type X__kernel_mqd_t = int32 /* posix_types.h:34:13 */
  1920  
  1921  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1922  
  1923  // This file is generally used by user-level software, so you need to
  1924  // be a little careful about namespace pollution etc.  Also, we cannot
  1925  // assume GCC is being used.
  1926  
  1927  type X__kernel_old_dev_t = uint64 /* posix_types.h:12:23 */
  1928  
  1929  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1930  
  1931  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  1932  // This file is generally used by user-level software, so you need to
  1933  // be a little careful about namespace pollution etc.
  1934  //
  1935  // First the types that are often defined in different ways across
  1936  // architectures, so that you can override them.
  1937  
  1938  type X__kernel_long_t = int64   /* posix_types.h:15:15 */
  1939  type X__kernel_ulong_t = uint64 /* posix_types.h:16:23 */
  1940  
  1941  type X__kernel_ino_t = X__kernel_ulong_t /* posix_types.h:20:26 */
  1942  
  1943  type X__kernel_mode_t = uint32 /* posix_types.h:24:22 */
  1944  
  1945  type X__kernel_pid_t = int32 /* posix_types.h:28:14 */
  1946  
  1947  type X__kernel_ipc_pid_t = int32 /* posix_types.h:32:14 */
  1948  
  1949  type X__kernel_uid_t = uint32 /* posix_types.h:36:22 */
  1950  type X__kernel_gid_t = uint32 /* posix_types.h:37:22 */
  1951  
  1952  type X__kernel_suseconds_t = X__kernel_long_t /* posix_types.h:41:26 */
  1953  
  1954  type X__kernel_daddr_t = int32 /* posix_types.h:45:14 */
  1955  
  1956  type X__kernel_uid32_t = uint32 /* posix_types.h:49:22 */
  1957  type X__kernel_gid32_t = uint32 /* posix_types.h:50:22 */
  1958  
  1959  type X__kernel_old_uid_t = X__kernel_uid_t /* posix_types.h:54:24 */
  1960  type X__kernel_old_gid_t = X__kernel_gid_t /* posix_types.h:55:24 */
  1961  
  1962  // Most 32 bit architectures use "unsigned int" size_t,
  1963  // and all 64 bit architectures use "unsigned long" size_t.
  1964  type X__kernel_size_t = X__kernel_ulong_t   /* posix_types.h:72:26 */
  1965  type X__kernel_ssize_t = X__kernel_long_t   /* posix_types.h:73:25 */
  1966  type X__kernel_ptrdiff_t = X__kernel_long_t /* posix_types.h:74:25 */
  1967  
  1968  type X__kernel_fsid_t = struct{ Fval [2]int32 } /* posix_types.h:81:3 */
  1969  
  1970  // anything below here should be completely generic
  1971  type X__kernel_off_t = X__kernel_long_t      /* posix_types.h:87:25 */
  1972  type X__kernel_loff_t = int64                /* posix_types.h:88:19 */
  1973  type X__kernel_old_time_t = X__kernel_long_t /* posix_types.h:89:25 */
  1974  type X__kernel_time_t = X__kernel_long_t     /* posix_types.h:90:25 */
  1975  type X__kernel_time64_t = int64              /* posix_types.h:91:19 */
  1976  type X__kernel_clock_t = X__kernel_long_t    /* posix_types.h:92:25 */
  1977  type X__kernel_timer_t = int32               /* posix_types.h:93:14 */
  1978  type X__kernel_clockid_t = int32             /* posix_types.h:94:14 */
  1979  type X__kernel_caddr_t = uintptr             /* posix_types.h:95:14 */
  1980  type X__kernel_uid16_t = uint16              /* posix_types.h:96:24 */
  1981  type X__kernel_gid16_t = uint16              /* posix_types.h:97:24 */
  1982  
  1983  // Below are truly Linux-specific types that should never collide with
  1984  // any application/library that wants linux/types.h.
  1985  
  1986  type X__le16 = X__u16 /* types.h:24:25 */
  1987  type X__be16 = X__u16 /* types.h:25:25 */
  1988  type X__le32 = X__u32 /* types.h:26:25 */
  1989  type X__be32 = X__u32 /* types.h:27:25 */
  1990  type X__le64 = X__u64 /* types.h:28:25 */
  1991  type X__be64 = X__u64 /* types.h:29:25 */
  1992  
  1993  type X__sum16 = X__u16 /* types.h:31:25 */
  1994  type X__wsum = X__u32  /* types.h:32:25 */
  1995  
  1996  // aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
  1997  // common 32/64-bit compat problems.
  1998  // 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
  1999  // architectures) and to 8-byte boundaries on 64-bit architectures.  The new
  2000  // aligned_64 type enforces 8-byte alignment so that structs containing
  2001  // aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
  2002  // No conversions are necessary between 32-bit user-space and a 64-bit kernel.
  2003  
  2004  type X__poll_t = uint32 /* types.h:47:28 */
  2005  
  2006  type Pt_regs = struct {
  2007  	Fgpr       [32]uint64
  2008  	Fnip       uint64
  2009  	Fmsr       uint64
  2010  	Forig_gpr3 uint64
  2011  	Fctr       uint64
  2012  	Flink      uint64
  2013  	Fxer       uint64
  2014  	Fccr       uint64
  2015  	Fsofte     uint64
  2016  	Ftrap      uint64
  2017  	Fdar       uint64
  2018  	Fdsisr     uint64
  2019  	Fresult    uint64
  2020  } /* ptrace.h:32:1 */
  2021  
  2022  // Offsets used by 'ptrace' system call interface.
  2023  // These can't be changed without breaking binary compatibility
  2024  // with MkLinux, etc.
  2025  
  2026  // Only store first 32 VSRs here. The second 32 VSRs in VR0-31
  2027  
  2028  // Get/set all the altivec registers v0..v31, vscr, vrsave, in one go.
  2029  // The transfer totals 34 quadword.  Quadwords 0-31 contain the
  2030  // corresponding vector registers.  Quadword 32 contains the vscr as the
  2031  // last word (offset 12) within that quadword.  Quadword 33 contains the
  2032  // vrsave as the first word (offset 0) within the quadword.
  2033  //
  2034  // This definition of the VMX state is compatible with the current PPC32
  2035  // ptrace interface.  This allows signal handling and ptrace to use the same
  2036  // structures.  This also simplifies the implementation of a bi-arch
  2037  // (combined (32- and 64-bit) gdb.
  2038  
  2039  // Get/set all the upper 32-bits of the SPE registers, accumulator, and
  2040  // spefscr, in one go
  2041  
  2042  // Get the first 32 128bit VSX registers
  2043  
  2044  // Syscall emulation defines
  2045  
  2046  // Get or set a debug register. The first 16 are DABR registers and the
  2047  // second 16 are IABR registers.
  2048  
  2049  // (new) PTRACE requests using the same numbers as x86 and the same
  2050  // argument ordering. Additionally, they support more registers too
  2051  
  2052  // Calls to trace a 64bit program from a 32bit program
  2053  
  2054  type Ppc_debug_info = struct {
  2055  	Fversion             X__u32
  2056  	Fnum_instruction_bps X__u32
  2057  	Fnum_data_bps        X__u32
  2058  	Fnum_condition_regs  X__u32
  2059  	Fdata_bp_alignment   X__u32
  2060  	Fsizeof_condition    X__u32
  2061  	Ffeatures            X__u64
  2062  } /* ptrace.h:201:1 */
  2063  
  2064  // features will have bits indication whether there is support for:
  2065  
  2066  type Ppc_hw_breakpoint = struct {
  2067  	Fversion         X__u32
  2068  	Ftrigger_type    X__u32
  2069  	Faddr_mode       X__u32
  2070  	Fcondition_mode  X__u32
  2071  	Faddr            X__u64
  2072  	Faddr2           X__u64
  2073  	Fcondition_value X__u64
  2074  } /* ptrace.h:225:1 */
  2075  
  2076  // Trigger Type
  2077  
  2078  // Address Mode
  2079  
  2080  // Condition Mode
  2081  
  2082  // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
  2083  // ELF register definitions..
  2084  //
  2085  // This program is free software; you can redistribute it and/or
  2086  // modify it under the terms of the GNU General Public License
  2087  // as published by the Free Software Foundation; either version
  2088  // 2 of the License, or (at your option) any later version.
  2089  
  2090  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  2091  
  2092  // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
  2093  // Copyright (C) 2001 PPC64 Team, IBM Corp
  2094  //
  2095  // This struct defines the way the registers are stored on the
  2096  // kernel stack during a system call or other kernel entry.
  2097  //
  2098  // this should only contain __volatile__ regs
  2099  // since we can keep non-volatile in the thread_struct
  2100  // should set this up when only volatiles are saved
  2101  // by intr code.
  2102  //
  2103  // Since this is going on the stack, *CARE MUST BE TAKEN* to insure
  2104  // that the overall structure is a multiple of 16 bytes in length.
  2105  //
  2106  // Note that the offsets of the fields in this struct correspond with
  2107  // the PT_* values below.  This simplifies arch/powerpc/kernel/ptrace.c.
  2108  //
  2109  // This program is free software; you can redistribute it and/or
  2110  // modify it under the terms of the GNU General Public License
  2111  // as published by the Free Software Foundation; either version
  2112  // 2 of the License, or (at your option) any later version.
  2113  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  2114  
  2115  // in AT_HWCAP
  2116  
  2117  // Reserved - do not use		0x00000004
  2118  
  2119  // in AT_HWCAP2
  2120  
  2121  // IMPORTANT!
  2122  // All future PPC_FEATURE definitions should be allocated in cooperation with
  2123  // OPAL / skiboot firmware, in accordance with the ibm,powerpc-cpu-features
  2124  // device tree binding.
  2125  
  2126  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  2127  
  2128  // We need to put in some extra aux table entries to tell glibc what
  2129  // the cache block size is, so it can use the dcbz instruction safely.
  2130  // A special ignored type value for PPC, for glibc compatibility.
  2131  
  2132  // The vDSO location. We have to use the same value as x86 for glibc's
  2133  // sake :-)
  2134  
  2135  // AT_*CACHEBSIZE above represent the cache *block* size which is
  2136  // the size that is affected by the cache management instructions.
  2137  //
  2138  // It doesn't nececssarily matches the cache *line* size which is
  2139  // more of a performance tuning hint. Additionally the latter can
  2140  // be different for the different cache levels.
  2141  //
  2142  // The set of entries below represent more extensive information
  2143  // about the caches, in the form of two entry per cache type,
  2144  // one entry containing the cache size in bytes, and the other
  2145  // containing the cache line size in bytes in the bottom 16 bits
  2146  // and the cache associativity in the next 16 bits.
  2147  //
  2148  // The associativity is such that if N is the 16-bit value, the
  2149  // cache is N way set associative. A value if 0xffff means fully
  2150  // associative, a value of 1 means directly mapped.
  2151  //
  2152  // For all these fields, a value of 0 means that the information
  2153  // is not known.
  2154  
  2155  // PowerPC relocations defined by the ABIs
  2156  
  2157  // PowerPC relocations defined for the TLS access ABI.
  2158  
  2159  // keep this the last entry.
  2160  
  2161  type Elf_greg_t64 = uint64              /* elf.h:102:23 */
  2162  type Elf_gregset_t64 = [48]Elf_greg_t64 /* elf.h:103:22 */
  2163  
  2164  type Elf_greg_t32 = uint32                  /* elf.h:105:22 */
  2165  type Elf_gregset_t32 = [48]Elf_greg_t32     /* elf.h:106:22 */
  2166  type Compat_elf_gregset_t = Elf_gregset_t32 /* elf.h:107:25 */
  2167  
  2168  // ELF_ARCH, CLASS, and DATA are used to set parameters in the core dumps.
  2169  type Elf_greg_t = Elf_greg_t64       /* elf.h:119:22 */
  2170  type Elf_gregset_t = Elf_gregset_t64 /* elf.h:120:25 */
  2171  
  2172  // Floating point registers
  2173  type Elf_fpreg_t = float64            /* elf.h:138:16 */
  2174  type Elf_fpregset_t = [33]Elf_fpreg_t /* elf.h:139:21 */
  2175  
  2176  // Altivec registers
  2177  // The entries with indexes 0-31 contain the corresponding vector registers.
  2178  // The entry with index 32 contains the vscr as the last word (offset 12)
  2179  // within the quadword.  This allows the vscr to be stored as either a
  2180  // quadword (since it must be copied via a vector register to/from storage)
  2181  // or as a word.
  2182  //
  2183  // 64-bit kernel notes: The entry at index 33 contains the vrsave as the first
  2184  // word (offset 0) within the quadword.
  2185  //
  2186  // This definition of the VMX state is compatible with the current PPC32
  2187  // ptrace interface.  This allows signal handling and ptrace to use the same
  2188  // structures.  This also simplifies the implementation of a bi-arch
  2189  // (combined (32- and 64-bit) gdb.
  2190  //
  2191  // Note that it's _not_ compatible with 32 bits ucontext which stuffs the
  2192  // vrsave along with vscr and so only uses 33 vectors for the register set
  2193  type Elf_vrreg_t = X__vector128           /* elf.h:160:21 */
  2194  type Elf_vrregset_t = [34]Elf_vrreg_t     /* elf.h:161:21 */
  2195  type Elf_vrregset_t32 = [33]Elf_vrreg_t   /* elf.h:163:21 */
  2196  type Elf_vsrreghalf_t32 = [32]Elf_fpreg_t /* elf.h:164:21 */
  2197  
  2198  // PowerPC64 relocations defined by the ABIs
  2199  
  2200  // PowerPC64 relocations defined for the TLS access ABI.
  2201  
  2202  // Keep this the last entry.
  2203  
  2204  // There's actually a third entry here, but it's unused
  2205  type Ppc64_opd_entry = struct {
  2206  	Ffuncaddr uint64
  2207  	Fr2       uint64
  2208  } /* elf.h:293:1 */
  2209  
  2210  type Sigcontext = struct {
  2211  	F_unused     [4]uint64
  2212  	Fsignal      int32
  2213  	F_pad0       int32
  2214  	Fhandler     uint64
  2215  	Foldmask     uint64
  2216  	Fregs        uintptr
  2217  	Fgp_regs     Elf_gregset_t
  2218  	Ffp_regs     Elf_fpregset_t
  2219  	Fv_regs      uintptr
  2220  	Fvmx_reserve [101]int64
  2221  } /* sigcontext.h:17:1 */
  2222  
  2223  // Wide character type.
  2224  //    Locale-writers should change this as necessary to
  2225  //    be big enough to hold unique values not between 0 and 127,
  2226  //    and not (wchar_t) -1, for each defined multibyte character.
  2227  
  2228  // Define this type if we are doing the whole job,
  2229  //    or if we want this type in particular.
  2230  
  2231  // A null pointer constant.
  2232  
  2233  // Define stack_t.  Linux version.
  2234  //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  2235  //    This file is part of the GNU C Library.
  2236  //
  2237  //    The GNU C Library is free software; you can redistribute it and/or
  2238  //    modify it under the terms of the GNU Lesser General Public
  2239  //    License as published by the Free Software Foundation; either
  2240  //    version 2.1 of the License, or (at your option) any later version.
  2241  //
  2242  //    The GNU C Library is distributed in the hope that it will be useful,
  2243  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2244  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2245  //    Lesser General Public License for more details.
  2246  //
  2247  //    You should have received a copy of the GNU Lesser General Public
  2248  //    License along with the GNU C Library; if not, see
  2249  //    <https://www.gnu.org/licenses/>.
  2250  
  2251  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  2252  //
  2253  // This file is part of GCC.
  2254  //
  2255  // GCC is free software; you can redistribute it and/or modify
  2256  // it under the terms of the GNU General Public License as published by
  2257  // the Free Software Foundation; either version 3, or (at your option)
  2258  // any later version.
  2259  //
  2260  // GCC is distributed in the hope that it will be useful,
  2261  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  2262  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2263  // GNU General Public License for more details.
  2264  //
  2265  // Under Section 7 of GPL version 3, you are granted additional
  2266  // permissions described in the GCC Runtime Library Exception, version
  2267  // 3.1, as published by the Free Software Foundation.
  2268  //
  2269  // You should have received a copy of the GNU General Public License and
  2270  // a copy of the GCC Runtime Library Exception along with this program;
  2271  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  2272  // <http://www.gnu.org/licenses/>.
  2273  
  2274  // ISO C Standard:  7.17  Common definitions  <stddef.h>
  2275  
  2276  // Any one of these symbols __need_* means that GNU libc
  2277  //    wants us just to define one data type.  So don't define
  2278  //    the symbols that indicate this file's entire job has been done.
  2279  
  2280  // This avoids lossage on SunOS but only if stdtypes.h comes first.
  2281  //    There's no way to win with the other order!  Sun lossage.
  2282  
  2283  // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
  2284  //    Just ignore it.
  2285  
  2286  // On VxWorks, <type/vxTypesBase.h> may have defined macros like
  2287  //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
  2288  //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
  2289  //    not defined, and so that defining this macro defines _GCC_SIZE_T.
  2290  //    If we find that the macros are still defined at this point, we must
  2291  //    invoke them so that the type is defined as expected.
  2292  
  2293  // In case nobody has defined these types, but we aren't running under
  2294  //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
  2295  //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
  2296  //    parts of GCC is compiled by an older compiler, that actually
  2297  //    include gstddef.h, such as collect2.
  2298  
  2299  // Signed type of difference of two pointers.
  2300  
  2301  // Define this type if we are doing the whole job,
  2302  //    or if we want this type in particular.
  2303  
  2304  // Unsigned type of `sizeof' something.
  2305  
  2306  // Define this type if we are doing the whole job,
  2307  //    or if we want this type in particular.
  2308  
  2309  // Wide character type.
  2310  //    Locale-writers should change this as necessary to
  2311  //    be big enough to hold unique values not between 0 and 127,
  2312  //    and not (wchar_t) -1, for each defined multibyte character.
  2313  
  2314  // Define this type if we are doing the whole job,
  2315  //    or if we want this type in particular.
  2316  
  2317  // A null pointer constant.
  2318  
  2319  // Structure describing a signal stack.
  2320  type Stack_t = struct {
  2321  	Fss_sp       uintptr
  2322  	Fss_flags    int32
  2323  	F__ccgo_pad1 [4]byte
  2324  	Fss_size     Size_t
  2325  } /* stack_t.h:31:5 */
  2326  
  2327  // For 64-bit kernels with Altivec support, a machine context is exactly
  2328  // a sigcontext.  For older kernel (without Altivec) the sigcontext matches
  2329  // the mcontext upto but not including the v_regs field.  For kernels that
  2330  // don't set AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
  2331  // v_regs field may not exist and should not be referenced.  The v_regs field
  2332  // can be referenced safely only after verifying that PPC_FEATURE_HAS_ALTIVEC
  2333  // is set in AT_HWCAP.
  2334  
  2335  // Number of general registers.
  2336  
  2337  type Gregset_t = [48]uint64   /* ucontext.h:93:23 */
  2338  type Fpregset_t = [33]float64 /* ucontext.h:94:16 */
  2339  
  2340  // Container for Altivec/VMX Vector Status and Control Register.  Only 32-bits
  2341  //
  2342  //	but can only be copied to/from a 128-bit vector register.  So we allocated
  2343  //	a whole quadword speedup save/restore.
  2344  type X_libc_vscr = struct {
  2345  	Fvscr_word uint32
  2346  	F__pad     [3]uint32
  2347  } /* ucontext.h:99:9 */
  2348  
  2349  // Container for Altivec/VMX Vector Status and Control Register.  Only 32-bits
  2350  //
  2351  //	but can only be copied to/from a 128-bit vector register.  So we allocated
  2352  //	a whole quadword speedup save/restore.
  2353  type Vscr_t = X_libc_vscr /* ucontext.h:108:3 */
  2354  
  2355  // Container for Altivec/VMX registers and status.
  2356  //
  2357  //	Must to be aligned on a 16-byte boundary.
  2358  type X_libc_vrstate = struct {
  2359  	Fvrregs [32][4]uint32
  2360  	Fvscr   Vscr_t
  2361  	Fvrsave uint32
  2362  	F__pad  [3]uint32
  2363  } /* ucontext.h:112:9 */
  2364  
  2365  // Container for Altivec/VMX registers and status.
  2366  //
  2367  //	Must to be aligned on a 16-byte boundary.
  2368  type Vrregset_t = X_libc_vrstate /* ucontext.h:118:3 */
  2369  
  2370  type Mcontext_t = struct {
  2371  	F__glibc_reserved [4]uint64
  2372  	Fsignal           int32
  2373  	F__pad0           int32
  2374  	Fhandler          uint64
  2375  	Foldmask          uint64
  2376  	Fregs             uintptr
  2377  	Fgp_regs          Gregset_t
  2378  	Ffp_regs          Fpregset_t
  2379  	Fv_regs           uintptr
  2380  	Fvmx_reserve      [69]int64
  2381  } /* ucontext.h:150:3 */
  2382  
  2383  // Userlevel context.
  2384  type Ucontext_t1 = struct {
  2385  	Fuc_flags    uint64
  2386  	Fuc_link     uintptr
  2387  	Fuc_stack    Stack_t
  2388  	Fuc_sigmask  Sigset_t
  2389  	Fuc_mcontext Mcontext_t
  2390  } /* ucontext.h:155:9 */
  2391  
  2392  // Userlevel context.
  2393  type Ucontext_t = Ucontext_t1 /* ucontext.h:196:5 */
  2394  
  2395  // Define struct sigstack.
  2396  //    Copyright (C) 1998-2020 Free Software Foundation, Inc.
  2397  //    This file is part of the GNU C Library.
  2398  //
  2399  //    The GNU C Library is free software; you can redistribute it and/or
  2400  //    modify it under the terms of the GNU Lesser General Public
  2401  //    License as published by the Free Software Foundation; either
  2402  //    version 2.1 of the License, or (at your option) any later version.
  2403  //
  2404  //    The GNU C Library is distributed in the hope that it will be useful,
  2405  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2406  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2407  //    Lesser General Public License for more details.
  2408  //
  2409  //    You should have received a copy of the GNU Lesser General Public
  2410  //    License along with the GNU C Library; if not, see
  2411  //    <https://www.gnu.org/licenses/>.
  2412  
  2413  // Structure describing a signal stack (obsolete).
  2414  type Sigstack = struct {
  2415  	Fss_sp       uintptr
  2416  	Fss_onstack  int32
  2417  	F__ccgo_pad1 [4]byte
  2418  } /* struct_sigstack.h:23:1 */
  2419  
  2420  // Some of the functions for handling signals in threaded programs must
  2421  //    be defined here.
  2422  // Declaration of common pthread types for all architectures.
  2423  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  2424  //    This file is part of the GNU C Library.
  2425  //
  2426  //    The GNU C Library is free software; you can redistribute it and/or
  2427  //    modify it under the terms of the GNU Lesser General Public
  2428  //    License as published by the Free Software Foundation; either
  2429  //    version 2.1 of the License, or (at your option) any later version.
  2430  //
  2431  //    The GNU C Library is distributed in the hope that it will be useful,
  2432  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2433  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2434  //    Lesser General Public License for more details.
  2435  //
  2436  //    You should have received a copy of the GNU Lesser General Public
  2437  //    License along with the GNU C Library; if not, see
  2438  //    <https://www.gnu.org/licenses/>.
  2439  
  2440  // For internal mutex and condition variable definitions.
  2441  // Common threading primitives definitions for both POSIX and C11.
  2442  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  2443  //    This file is part of the GNU C Library.
  2444  //
  2445  //    The GNU C Library is free software; you can redistribute it and/or
  2446  //    modify it under the terms of the GNU Lesser General Public
  2447  //    License as published by the Free Software Foundation; either
  2448  //    version 2.1 of the License, or (at your option) any later version.
  2449  //
  2450  //    The GNU C Library is distributed in the hope that it will be useful,
  2451  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2452  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2453  //    Lesser General Public License for more details.
  2454  //
  2455  //    You should have received a copy of the GNU Lesser General Public
  2456  //    License along with the GNU C Library; if not, see
  2457  //    <https://www.gnu.org/licenses/>.
  2458  
  2459  // Arch-specific definitions.  Each architecture must define the following
  2460  //    macros to define the expected sizes of pthread data types:
  2461  //
  2462  //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
  2463  //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
  2464  //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
  2465  //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
  2466  //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
  2467  //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
  2468  //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
  2469  //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
  2470  //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
  2471  //
  2472  //    The additional macro defines any constraint for the lock alignment
  2473  //    inside the thread structures:
  2474  //
  2475  //    __LOCK_ALIGNMENT - for internal lock/futex usage.
  2476  //
  2477  //    Same idea but for the once locking primitive:
  2478  //
  2479  //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
  2480  
  2481  // Machine-specific pthread type layouts.  Generic version.
  2482  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  2483  //
  2484  //    This file is part of the GNU C Library.
  2485  //
  2486  //    The GNU C Library is free software; you can redistribute it and/or
  2487  //    modify it under the terms of the GNU Lesser General Public
  2488  //    License as published by the Free Software Foundation; either
  2489  //    version 2.1 of the License, or (at your option) any later version.
  2490  //
  2491  //    The GNU C Library is distributed in the hope that it will be useful,
  2492  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2493  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2494  //    Lesser General Public License for more details.
  2495  //
  2496  //    You should have received a copy of the GNU Lesser General Public
  2497  //    License along with the GNU C Library; if not, see
  2498  //    <http://www.gnu.org/licenses/>.
  2499  
  2500  // Determine the wordsize from the preprocessor defines.
  2501  
  2502  // Common definition of pthread_mutex_t.
  2503  
  2504  type X__pthread_internal_list = struct {
  2505  	F__prev uintptr
  2506  	F__next uintptr
  2507  } /* thread-shared-types.h:49:9 */
  2508  
  2509  // Some of the functions for handling signals in threaded programs must
  2510  //    be defined here.
  2511  // Declaration of common pthread types for all architectures.
  2512  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  2513  //    This file is part of the GNU C Library.
  2514  //
  2515  //    The GNU C Library is free software; you can redistribute it and/or
  2516  //    modify it under the terms of the GNU Lesser General Public
  2517  //    License as published by the Free Software Foundation; either
  2518  //    version 2.1 of the License, or (at your option) any later version.
  2519  //
  2520  //    The GNU C Library is distributed in the hope that it will be useful,
  2521  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2522  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2523  //    Lesser General Public License for more details.
  2524  //
  2525  //    You should have received a copy of the GNU Lesser General Public
  2526  //    License along with the GNU C Library; if not, see
  2527  //    <https://www.gnu.org/licenses/>.
  2528  
  2529  // For internal mutex and condition variable definitions.
  2530  // Common threading primitives definitions for both POSIX and C11.
  2531  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  2532  //    This file is part of the GNU C Library.
  2533  //
  2534  //    The GNU C Library is free software; you can redistribute it and/or
  2535  //    modify it under the terms of the GNU Lesser General Public
  2536  //    License as published by the Free Software Foundation; either
  2537  //    version 2.1 of the License, or (at your option) any later version.
  2538  //
  2539  //    The GNU C Library is distributed in the hope that it will be useful,
  2540  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2541  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2542  //    Lesser General Public License for more details.
  2543  //
  2544  //    You should have received a copy of the GNU Lesser General Public
  2545  //    License along with the GNU C Library; if not, see
  2546  //    <https://www.gnu.org/licenses/>.
  2547  
  2548  // Arch-specific definitions.  Each architecture must define the following
  2549  //    macros to define the expected sizes of pthread data types:
  2550  //
  2551  //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
  2552  //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
  2553  //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
  2554  //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
  2555  //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
  2556  //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
  2557  //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
  2558  //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
  2559  //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
  2560  //
  2561  //    The additional macro defines any constraint for the lock alignment
  2562  //    inside the thread structures:
  2563  //
  2564  //    __LOCK_ALIGNMENT - for internal lock/futex usage.
  2565  //
  2566  //    Same idea but for the once locking primitive:
  2567  //
  2568  //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
  2569  
  2570  // Machine-specific pthread type layouts.  Generic version.
  2571  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  2572  //
  2573  //    This file is part of the GNU C Library.
  2574  //
  2575  //    The GNU C Library is free software; you can redistribute it and/or
  2576  //    modify it under the terms of the GNU Lesser General Public
  2577  //    License as published by the Free Software Foundation; either
  2578  //    version 2.1 of the License, or (at your option) any later version.
  2579  //
  2580  //    The GNU C Library is distributed in the hope that it will be useful,
  2581  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2582  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2583  //    Lesser General Public License for more details.
  2584  //
  2585  //    You should have received a copy of the GNU Lesser General Public
  2586  //    License along with the GNU C Library; if not, see
  2587  //    <http://www.gnu.org/licenses/>.
  2588  
  2589  // Determine the wordsize from the preprocessor defines.
  2590  
  2591  // Common definition of pthread_mutex_t.
  2592  
  2593  type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
  2594  
  2595  type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
  2596  
  2597  type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
  2598  
  2599  // Arch-specific mutex definitions.  A generic implementation is provided
  2600  //    by sysdeps/nptl/bits/struct_mutex.h.  If required, an architecture
  2601  //    can override it by defining:
  2602  //
  2603  //    1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
  2604  //       definition).  It should contains at least the internal members
  2605  //       defined in the generic version.
  2606  //
  2607  //    2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
  2608  //       atomic operations.
  2609  //
  2610  //    3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
  2611  //       It should initialize the mutex internal flag.
  2612  
  2613  // PowerPC internal mutex struct definitions.
  2614  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  2615  //    This file is part of the GNU C Library.
  2616  //
  2617  //    The GNU C Library is free software; you can redistribute it and/or
  2618  //    modify it under the terms of the GNU Lesser General Public
  2619  //    License as published by the Free Software Foundation; either
  2620  //    version 2.1 of the License, or (at your option) any later version.
  2621  //
  2622  //    The GNU C Library is distributed in the hope that it will be useful,
  2623  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2624  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2625  //    Lesser General Public License for more details.
  2626  //
  2627  //    You should have received a copy of the GNU Lesser General Public
  2628  //    License along with the GNU C Library; if not, see
  2629  //    <http://www.gnu.org/licenses/>.
  2630  
  2631  type X__pthread_mutex_s = struct {
  2632  	F__lock    int32
  2633  	F__count   uint32
  2634  	F__owner   int32
  2635  	F__nusers  uint32
  2636  	F__kind    int32
  2637  	F__spins   int16
  2638  	F__elision int16
  2639  	F__list    X__pthread_list_t
  2640  } /* struct_mutex.h:22:1 */
  2641  
  2642  // Arch-sepecific read-write lock definitions.  A generic implementation is
  2643  //    provided by struct_rwlock.h.  If required, an architecture can override it
  2644  //    by defining:
  2645  //
  2646  //    1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
  2647  //       It should contain at least the internal members defined in the
  2648  //       generic version.
  2649  //
  2650  //    2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
  2651  //       It should initialize the rwlock internal type.
  2652  
  2653  // PowerPC internal rwlock struct definitions.
  2654  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  2655  //
  2656  //    This file is part of the GNU C Library.
  2657  //
  2658  //    The GNU C Library is free software; you can redistribute it and/or
  2659  //    modify it under the terms of the GNU Lesser General Public
  2660  //    License as published by the Free Software Foundation; either
  2661  //    version 2.1 of the License, or (at your option) any later version.
  2662  //
  2663  //    The GNU C Library is distributed in the hope that it will be useful,
  2664  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2665  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2666  //    Lesser General Public License for more details.
  2667  //
  2668  //    You should have received a copy of the GNU Lesser General Public
  2669  //    License along with the GNU C Library; if not, see
  2670  //    <http://www.gnu.org/licenses/>.
  2671  
  2672  type X__pthread_rwlock_arch_t = struct {
  2673  	F__readers       uint32
  2674  	F__writers       uint32
  2675  	F__wrphase_futex uint32
  2676  	F__writers_futex uint32
  2677  	F__pad3          uint32
  2678  	F__pad4          uint32
  2679  	F__cur_writer    int32
  2680  	F__shared        int32
  2681  	F__rwelision     uint8
  2682  	F__pad1          [7]uint8
  2683  	F__pad2          uint64
  2684  	F__flags         uint32
  2685  	F__ccgo_pad1     [4]byte
  2686  } /* struct_rwlock.h:23:1 */
  2687  
  2688  // Common definition of pthread_cond_t.
  2689  
  2690  type X__pthread_cond_s = struct {
  2691  	F__0            struct{ F__wseq uint64 }
  2692  	F__8            struct{ F__g1_start uint64 }
  2693  	F__g_refs       [2]uint32
  2694  	F__g_size       [2]uint32
  2695  	F__g1_orig_size uint32
  2696  	F__wrefs        uint32
  2697  	F__g_signals    [2]uint32
  2698  } /* thread-shared-types.h:92:1 */
  2699  
  2700  // Thread identifiers.  The structure of the attribute type is not
  2701  //
  2702  //	exposed on purpose.
  2703  type Pthread_t = uint64 /* pthreadtypes.h:27:27 */
  2704  
  2705  // Data structures for mutex handling.  The structure of the attribute
  2706  //
  2707  //	type is not exposed on purpose.
  2708  type Pthread_mutexattr_t = struct {
  2709  	F__ccgo_pad1 [0]uint32
  2710  	F__size      [4]uint8
  2711  } /* pthreadtypes.h:36:3 */
  2712  
  2713  // Data structure for condition variable handling.  The structure of
  2714  //
  2715  //	the attribute type is not exposed on purpose.
  2716  type Pthread_condattr_t = struct {
  2717  	F__ccgo_pad1 [0]uint32
  2718  	F__size      [4]uint8
  2719  } /* pthreadtypes.h:45:3 */
  2720  
  2721  // Keys for thread-specific data
  2722  type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
  2723  
  2724  // Once-only execution
  2725  type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
  2726  
  2727  type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
  2728  
  2729  type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
  2730  
  2731  // Data structure for reader-writer lock variable handling.  The
  2732  //
  2733  //	structure of the attribute type is deliberately not exposed.
  2734  type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
  2735  
  2736  type Pthread_rwlockattr_t = struct {
  2737  	F__ccgo_pad1 [0]uint64
  2738  	F__size      [8]uint8
  2739  } /* pthreadtypes.h:97:3 */
  2740  
  2741  // POSIX spinlock data type.
  2742  type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
  2743  
  2744  // POSIX barriers data type.  The structure of the type is
  2745  //
  2746  //	deliberately not exposed.
  2747  type Pthread_barrier_t = struct {
  2748  	F__ccgo_pad1 [0]uint64
  2749  	F__size      [32]uint8
  2750  } /* pthreadtypes.h:112:3 */
  2751  
  2752  type Pthread_barrierattr_t = struct {
  2753  	F__ccgo_pad1 [0]uint32
  2754  	F__size      [4]uint8
  2755  } /* pthreadtypes.h:118:3 */
  2756  
  2757  // System-specific extensions.
  2758  // System-specific extensions of <signal.h>, Linux version.
  2759  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  2760  //    This file is part of the GNU C Library.
  2761  //
  2762  //    The GNU C Library is free software; you can redistribute it and/or
  2763  //    modify it under the terms of the GNU Lesser General Public
  2764  //    License as published by the Free Software Foundation; either
  2765  //    version 2.1 of the License, or (at your option) any later version.
  2766  //
  2767  //    The GNU C Library is distributed in the hope that it will be useful,
  2768  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2769  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2770  //    Lesser General Public License for more details.
  2771  //
  2772  //    You should have received a copy of the GNU Lesser General Public
  2773  //    License along with the GNU C Library; if not, see
  2774  //    <https://www.gnu.org/licenses/>.
  2775  
  2776  var _ uint8 /* gen.c:2:13: */