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

📄 sh1.c

📁 GNU binutils是GNU交叉工具链中的一个源码包
💻 C
字号:
#ifndef NULL#define NULL ((void *) 0)#endif/* This is part of the shared library ld test.  This file becomes part   of a shared library.  *//* This variable is supplied by the main program.  */#ifndef XCOFF_TESTextern int mainvar;#endif/* This variable is defined in the shared library, and overridden by   the main program.  */#ifndef XCOFF_TESTint overriddenvar = -1;#endif/* This variable is defined in the shared library.  */int shlibvar1 = 3;/* This variable is defined by another object in the shared library.  */extern int shlibvar2;/* These functions return the values of the above variables as seen in   the shared library.  */#ifndef XCOFF_TESTintshlib_mainvar (){  return mainvar;}#endif#ifndef XCOFF_TESTintshlib_overriddenvar (){  return overriddenvar;}#endifintshlib_shlibvar1 (){  return shlibvar1;}intshlib_shlibvar2 (){  return shlibvar2;}/* This function calls a function defined by another object in the   shared library.  */extern int shlib_shlibcalled ();intshlib_shlibcall (){  return shlib_shlibcalled ();}#ifndef XCOFF_TEST/* This function calls a function defined in this object in the shared   library.  The main program will override the called function.  */extern int shlib_overriddencall2 ();intshlib_shlibcall2 (){  return shlib_overriddencall2 ();}intshlib_overriddencall2 (){  return 7;}#endif/* This function calls a function defined by the main program.  */#ifndef XCOFF_TESTextern int main_called ();intshlib_maincall (){  return main_called ();}#endif/* This function is passed a function pointer to shlib_mainvar.  It   confirms that the pointer compares equally.  */int shlib_checkfunptr1 (p)     int (*p) ();{  return p == shlib_shlibvar1;}/* This function is passed a function pointer to main_called.  It   confirms that the pointer compares equally.  */#ifndef XCOFF_TESTintshlib_checkfunptr2 (p)     int (*p) ();{  return p == main_called;}#endif/* This function returns a pointer to shlib_mainvar.  */int(*shlib_getfunptr1 ()) (){  return shlib_shlibvar1;}/* This function returns a pointer to main_called.  */#ifndef XCOFF_TESTint(*shlib_getfunptr2 ()) (){  return main_called;}#endif/* This function makes sure that constant data and local functions   work.  */#ifndef __STDC__#define const#endifstatic int i = 6;static const char *str = "Hello, world\n";intshlib_check (){  const char *s1, *s2;  if (i != 6)    return 0;  /* To isolate the test, don't rely on any external functions, such     as strcmp.  */  s1 = "Hello, world\n";  s2 = str;  while (*s1 != '\0')    if (*s1++ != *s2++)      return 0;  if (*s2 != '\0')    return 0;  if (shlib_shlibvar1 () != 3)    return 0;  return 1;}#ifdef HIDDEN_WEAK_TEST#define HIDDEN_UNDEF_TEST#define WEAK_TEST#endif#ifdef PROTECTED_WEAK_TEST#define PROTECTED_UNDEF_TEST#define WEAK_TEST#endif#if defined (HIDDEN_UNDEF_TEST) || defined (PROTECTED_UNDEF_TEST)#ifdef WEAK_TEST#pragma weak visibility#endifextern int visibility ();#elseintvisibility (){  return 2;}#endif#ifdef HIDDEN_NORMAL_TESTasm (".hidden visibility_normal");intvisibility_normal (){  return 2;}#endifintvisibility_checkfunptr (){#ifdef WEAK_TEST  return 1;#else#ifdef HIDDEN_NORMAL_TEST  int (*v) () = visibility_normal;#else  int (*v) () = visibility;#endif  return (*v) () == 2;#endif}intvisibility_check (){#ifdef WEAK_TEST  if (&visibility)    return visibility () == 1;  else    return 1;#else#ifdef HIDDEN_NORMAL_TEST  return visibility_normal () == 2;#else  return visibility () == 2;#endif#endif}void *visibility_funptr (){#ifdef WEAK_TEST  if (&visibility == NULL)    return NULL;  else#endif    return visibility;}#if defined (HIDDEN_UNDEF_TEST) || defined (PROTECTED_UNDEF_TEST)#ifdef WEAK_TEST#pragma weak visibility_var#endifextern int visibility_var;#elseint visibility_var = 2;#endif#ifdef HIDDEN_NORMAL_TESTasm (".hidden visibility_var_normal");int visibility_var_normal = 2;#endifintvisibility_checkvarptr (){#ifdef WEAK_TEST  if (&visibility_var)    return visibility_var == 1;  else    return 1;#else#ifdef HIDDEN_NORMAL_TEST  int *v = &visibility_var_normal;#else  int *v = &visibility_var;#endif  return *v == 2;#endif}intvisibility_checkvar (){#ifdef WEAK_TEST  return 1;#else#ifdef HIDDEN_NORMAL_TEST  return visibility_var_normal == 2;#else  return visibility_var == 2;#endif#endif}void *visibility_varptr (){#ifdef WEAK_TEST  if (&visibility_var == NULL)    return NULL;  else#endif    return &visibility_var;}intvisibility_varval (){#ifdef WEAK_TEST  if (&visibility_var == NULL)    return 0;  else#endif    return visibility_var;}#if defined (HIDDEN_TEST) || defined (HIDDEN_UNDEF_TEST)asm (".hidden visibility");asm (".hidden visibility_var");#else#if defined (PROTECTED_TEST) || defined (PROTECTED_UNDEF_TEST) || defined (PROTECTED_WEAK_TEST)asm (".protected visibility");asm (".protected visibility_var");#endif#endif#ifdef HIDDEN_NORMAL_TESTint shlib_visibility_com;asm (".hidden shlib_visibility_com");intshlib_visibility_checkcom (){  return shlib_visibility_com == 0;}intshlib_visibility_checkweak (){  return 1;}#elif defined (HIDDEN_WEAK_TEST)#pragma weak shlib_visibility_undef_var_weakextern int shlib_visibility_undef_var_weak;asm (".hidden shlib_visibility_undef_var_weak");#pragma weak shlib_visibility_undef_func_weakextern int shlib_visibility_undef_func_weak ();asm (".hidden shlib_visibility_undef_func_weak");#pragma weak shlib_visibility_var_weakextern int shlib_visibility_var_weak;asm (".hidden shlib_visibility_var_weak");#pragma weak shlib_visibility_func_weakextern int shlib_visibility_func_weak ();asm (".hidden shlib_visibility_func_weak");intshlib_visibility_checkcom (){  return 1;}intshlib_visibility_checkweak (){  return &shlib_visibility_undef_var_weak == NULL	 && &shlib_visibility_undef_func_weak == NULL	 && &shlib_visibility_func_weak == NULL	 && &shlib_visibility_var_weak == NULL;}#elseintshlib_visibility_checkcom (){  return 1;}intshlib_visibility_checkweak (){  return 1;}#endif#ifdef PROTECTED_TESTint shared_data = 100; int *shared_data_p (){  return &shared_data;} intshared_func (){  return 100;} void *shared_func_p (){  return shared_func;}#endif

⌨️ 快捷键说明

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