⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitfields2.c

📁 gdb-6.8 Linux下的调试程序 最新版本
💻 C
字号:
/* Test program to test bit field operations on bit fields of large   integer types.  *//* This file is expected to fail to compile if the type long long int   is not supported, but in that case it is irrelevant.  */#include <stdlib.h>#include <string.h>#if !defined(__STDC__) && !defined(__cplusplus)#define signed  /**/#endifstruct fields{  unsigned long long u1 : 15;  unsigned long long u2 : 33;  unsigned long long u3 : 16;  signed long long   s1 : 15;  signed long long   s2 : 33;  signed long long   s3 : 16;} flags;void break1 (){}void break2 (){}void break3 (){}void break4 (){}void break5 (){}void break6 (){}void break7 (){}void break8 (){}void break9 (){}void break10 (){}/* This is used by bitfields.exp to determine if the target understands   signed bitfields.  */int i;void tester (){  memset ((char *) &flags, 0, sizeof (flags));  /* For each member, set that member to 1, allow gdb to verify that the     member (and only that member) is 1, and then reset it back to 0. */  flags.s1 = 1;  break1 ();  flags.s1 = 0;  flags.u1 = 1;  break1 ();  flags.u1 = 0;  flags.s2  = 1;  break1 ();  flags.s2 = 0;  flags.u2 = 1;  break1 ();  flags.u2 = 0;  flags.s3  = 1;  break1 ();  flags.s3 = 0;  flags.u3 = 1;  break1 ();  flags.u3 = 0;  /* Fill alternating fields with all 1's and verify that none of the bits     "bleed over" to the other fields. */  flags.u1 = 0x7FFF;  flags.u3 = 0xFFFF;  flags.s2 = -1LL;  break2 ();  flags.u1 = 0;  flags.u3 = 0;  flags.s2 = 0;  flags.u2 = 0x1FFFFFFFFLL;  flags.s1 = -1;  flags.s3 = -1;  break2 ();  flags.u2 = 0;  flags.s1 = 0;  flags.s3 = 0;  /* Fill the unsigned fields with the maximum positive value and verify     that the values are printed correctly. */  flags.u1 = 0x7FFF;  flags.u2 = 0x1FFFFFFFFLL;  flags.u3 = 0xFFFF;  break3 ();  flags.u1 = 0;  flags.u2 = 0;  flags.u3 = 0;  /* Fill the signed fields with the maximum positive value, then the maximally     negative value, then -1, and verify in each case that the values are     printed correctly. */  /* Maximum positive values */  flags.s1 = 0x3FFF;  flags.s2 = 0xFFFFFFFFLL;  flags.s3 = 0x7FFF;  break4 ();  /* Maximally negative values */  flags.s1 = -0x4000;  flags.s2 = -0x100000000LL;  flags.s3 = -0x8000;  /* Extract bitfield value so that bitfield.exp can check if the target     understands signed bitfields.  */  i = flags.s3;  break4 ();  /* -1 */  flags.s1 = -1;  flags.s2 = -1;  flags.s3 = -1;  break4 ();  flags.s1 = 0;  flags.s2 = 0;  flags.s3 = 0;  break5 ();}int main () {  int i;#ifdef usestubs  set_debug_traps();  breakpoint();#endif  for (i = 0; i < 5; i += 1)    tester ();  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -