📄 main.c
字号:
#ifdef PROTECTED_CHECK#include <features.h>#include <stdio.h>intmain (void){#if defined (__GLIBC__) && (__GLIBC__ > 2 \ || (__GLIBC__ == 2 \ && __GLIBC_MINOR__ >= 2)) puts ("yes");#else puts ("no");#endif return 0;}#else/* This is the main program for the shared library test. */#include <stdio.h>int mainvar = 1;int overriddenvar = 2;extern int shlibvar1;extern int shlib_mainvar ();extern int shlib_overriddenvar ();extern int shlib_shlibvar1 ();extern int shlib_shlibvar2 ();extern int shlib_shlibcall ();extern int shlib_maincall ();extern int shlib_checkfunptr1 ();extern int shlib_checkfunptr2 ();extern int (*shlib_getfunptr1 ()) ();extern int (*shlib_getfunptr2 ()) ();extern int shlib_check ();extern int shlib_shlibcall2 ();extern int visibility_check ();extern int visibility_checkfunptr ();extern void *visibility_funptr ();extern int visibility_checkvar ();extern int visibility_checkvarptr ();extern int visibility_varval ();extern void *visibility_varptr ();#ifdef HIDDEN_WEAK_TEST#define WEAK_TEST#endif#ifdef PROTECTED_WEAK_TEST#define WEAK_TEST#endif#ifdef PROTECTED_UNDEF_TEST#define PROTECTED_TEST#endif#ifndef WEAK_TESTextern int visibility ();extern int visibility_var;#endif#if !defined (HIDDEN_TEST) && defined (PROTECTED_TEST)intvisibility (){ return 1;}static intmain_visibility_check (){ return visibility_funptr () != visibility;}int visibility_var = 1;static intmain_visibility_checkvar (){ return visibility_varval () != visibility_var && visibility_varptr () != &visibility_var;}#elsestatic intmain_visibility_check (){#ifdef WEAK_TEST return visibility_funptr () == NULL;#else return visibility_funptr () == visibility;#endif}static intmain_visibility_checkvar (){#ifdef WEAK_TEST return visibility_varval () == 0 && visibility_varptr () == NULL;#else return visibility_varval () == visibility_var && visibility_varptr () == &visibility_var;#endif}#endif/* This function is called by the shared library. */intmain_called (){ return 6;}/* This function overrides a function in the shared library. */intshlib_overriddencall2 (){ return 8;}intmain (){ int (*p) (); printf ("mainvar == %d\n", mainvar); printf ("overriddenvar == %d\n", overriddenvar); printf ("shlibvar1 == %d\n", shlibvar1);#ifndef XCOFF_TEST printf ("shlib_mainvar () == %d\n", shlib_mainvar ()); printf ("shlib_overriddenvar () == %d\n", shlib_overriddenvar ());#endif printf ("shlib_shlibvar1 () == %d\n", shlib_shlibvar1 ()); printf ("shlib_shlibvar2 () == %d\n", shlib_shlibvar2 ()); printf ("shlib_shlibcall () == %d\n", shlib_shlibcall ());#ifndef XCOFF_TEST printf ("shlib_shlibcall2 () == %d\n", shlib_shlibcall2 ()); printf ("shlib_maincall () == %d\n", shlib_maincall ());#endif printf ("main_called () == %d\n", main_called ()); printf ("shlib_checkfunptr1 (shlib_shlibvar1) == %d\n", shlib_checkfunptr1 (shlib_shlibvar1));#ifndef XCOFF_TEST printf ("shlib_checkfunptr2 (main_called) == %d\n", shlib_checkfunptr2 (main_called));#endif p = shlib_getfunptr1 (); printf ("shlib_getfunptr1 () "); if (p == shlib_shlibvar1) printf ("=="); else printf ("!="); printf (" shlib_shlibvar1\n");#ifndef XCOFF_TEST p = shlib_getfunptr2 (); printf ("shlib_getfunptr2 () "); if (p == main_called) printf ("=="); else printf ("!="); printf (" main_called\n");#endif printf ("shlib_check () == %d\n", shlib_check ()); printf ("visibility_check () == %d\n", visibility_check ()); printf ("visibility_checkfunptr () == %d\n", visibility_checkfunptr ()); printf ("main_visibility_check () == %d\n", main_visibility_check ()); printf ("visibility_checkvar () == %d\n", visibility_checkvar ()); printf ("visibility_checkvarptr () == %d\n", visibility_checkvarptr ()); printf ("main_visibility_checkvar () == %d\n", main_visibility_checkvar ()); return 0;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -