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

📄 fixctors.c

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 C
字号:
/* Code to byte-swap static constructor/destructor tables on   broken a.out little-endian targets. The startup code should call   __fix_ctors just before calling main.  It is safe to use on non-broken   or big-endian targets. */extern long __CTOR_LIST__[];extern long __DTOR_LIST__[];static voidbyte_swap (long *entry){  unsigned char *p = (unsigned char *)entry;  unsigned char tmp;  tmp = p[0];  p[0] = p[3];  p[3] = tmp;  tmp = p[1];  p[1] = p[2];  p[2] = tmp;}static voidfix_table (long *table){  long len = table[0];  /* The heuristic for deciding if a table is broken is to examine     the word at the start of the table, which contains the number     of function pointers immediately following.  If the low word     is zero, and the high word is non-zero, it's very likely that     it is byte-swapped.  This test will fail if the program has     an exact multiple of 64K static constructors or destructors, a very     unlikely situation. */  if ((len & 0xffff) == 0 && (len & 0xffff0000) != 0)    {      /* The table looks broken.  Byte-swap all the words in the table, up         to a NULL entry, which marks the end of the table. */      do	{	  byte_swap (table);	  table++;	}      while (*table);    }}void__fix_ctors (void){  fix_table (__CTOR_LIST__);  fix_table (__DTOR_LIST__);}

⌨️ 快捷键说明

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