@@ -163,7 +163,8 @@ void dump_ct::operator()(std::ostream &os)
163163 }
164164
165165 // we don't want to dump in full all definitions
166- if (!tag_added && ignore (symbol))
166+ if (!tag_added &&
167+ system_symbols.is_symbol_internal_symbol (symbol, system_headers))
167168 continue ;
168169
169170 if (!symbols_sorted.insert (name_str).second )
@@ -344,7 +345,7 @@ void dump_ct::convert_compound(
344345 ns.lookup (to_symbol_type (type).get_identifier ());
345346 assert (symbol.is_type );
346347
347- if (!ignore (symbol))
348+ if (!system_symbols. is_symbol_internal_symbol (symbol, system_headers ))
348349 convert_compound (symbol.type , unresolved, recursive, os);
349350 }
350351 else if (type.id ()==ID_c_enum_tag)
@@ -353,7 +354,7 @@ void dump_ct::convert_compound(
353354 ns.lookup (to_c_enum_tag_type (type).get_identifier ());
354355 assert (symbol.is_type );
355356
356- if (!ignore (symbol))
357+ if (!system_symbols. is_symbol_internal_symbol (symbol, system_headers ))
357358 convert_compound (symbol.type , unresolved, recursive, os);
358359 }
359360 else if (type.id ()==ID_array || type.id ()==ID_pointer)
@@ -610,259 +611,6 @@ void dump_ct::convert_compound_enum(
610611
611612/* ******************************************************************\
612613
613- Function: dump_ct::init_system_library_map
614-
615- Inputs:
616-
617- Outputs:
618-
619- Purpose:
620-
621- \*******************************************************************/
622-
623- #define ADD_TO_SYSTEM_LIBRARY (v, header ) \
624- for (size_t i=0 ; i<sizeof (v)/sizeof (char *); ++i) \
625- system_library_map.insert( \
626- std::make_pair (v[i], header))
627-
628- void dump_ct::init_system_library_map()
629- {
630- // ctype.h
631- const char * ctype_syms[]=
632- {
633- " isalnum" , " isalpha" , " isblank" , " iscntrl" , " isdigit" , " isgraph" ,
634- " islower" , " isprint" , " ispunct" , " isspace" , " isupper" , " isxdigit" ,
635- " tolower" , " toupper"
636- };
637- ADD_TO_SYSTEM_LIBRARY (ctype_syms, " ctype.h" );
638-
639- // fcntl.h
640- const char * fcntl_syms[]=
641- {
642- " creat" , " fcntl" , " open"
643- };
644- ADD_TO_SYSTEM_LIBRARY (fcntl_syms, " fcntl.h" );
645-
646- // locale.h
647- const char * locale_syms[]=
648- {
649- " setlocale"
650- };
651- ADD_TO_SYSTEM_LIBRARY (locale_syms, " locale.h" );
652-
653- // math.h
654- const char * math_syms[]=
655- {
656- " acos" , " acosh" , " asin" , " asinh" , " atan" , " atan2" , " atanh" ,
657- " cbrt" , " ceil" , " copysign" , " cos" , " cosh" , " erf" , " erfc" , " exp" ,
658- " exp2" , " expm1" , " fabs" , " fdim" , " floor" , " fma" , " fmax" , " fmin" ,
659- " fmod" , " fpclassify" , " frexp" , " hypot" , " ilogb" , " isfinite" ,
660- " isinf" , " isnan" , " isnormal" , " j0" , " j1" , " jn" , " ldexp" , " lgamma" ,
661- " llrint" , " llround" , " log" , " log10" , " log1p" , " log2" , " logb" ,
662- " lrint" , " lround" , " modf" , " nan" , " nearbyint" , " nextafter" , " pow" ,
663- " remainder" , " remquo" , " rint" , " round" , " scalbln" , " scalbn" ,
664- " signbit" , " sin" , " sinh" , " sqrt" , " tan" , " tanh" , " tgamma" ,
665- " trunc" , " y0" , " y1" , " yn"
666- };
667- ADD_TO_SYSTEM_LIBRARY (math_syms, " math.h" );
668-
669- // pthread.h
670- const char * pthread_syms[]=
671- {
672- " pthread_cleanup_pop" , " pthread_cleanup_push" ,
673- " pthread_cond_broadcast" , " pthread_cond_destroy" ,
674- " pthread_cond_init" , " pthread_cond_signal" ,
675- " pthread_cond_timedwait" , " pthread_cond_wait" , " pthread_create" ,
676- " pthread_detach" , " pthread_equal" , " pthread_exit" ,
677- " pthread_getspecific" , " pthread_join" , " pthread_key_delete" ,
678- " pthread_mutex_destroy" , " pthread_mutex_init" ,
679- " pthread_mutex_lock" , " pthread_mutex_trylock" ,
680- " pthread_mutex_unlock" , " pthread_once" , " pthread_rwlock_destroy" ,
681- " pthread_rwlock_init" , " pthread_rwlock_rdlock" ,
682- " pthread_rwlock_unlock" , " pthread_rwlock_wrlock" ,
683- " pthread_rwlockattr_destroy" , " pthread_rwlockattr_getpshared" ,
684- " pthread_rwlockattr_init" , " pthread_rwlockattr_setpshared" ,
685- " pthread_self" , " pthread_setspecific"
686- };
687- ADD_TO_SYSTEM_LIBRARY (pthread_syms, " pthread.h" );
688-
689- // setjmp.h
690- const char * setjmp_syms[]=
691- {
692- " _longjmp" , " _setjmp" , " longjmp" , " longjmperror" , " setjmp" ,
693- " siglongjmp" , " sigsetjmp"
694- };
695- ADD_TO_SYSTEM_LIBRARY (setjmp_syms, " setjmp.h" );
696-
697- // stdio.h
698- const char * stdio_syms[]=
699- {
700- " asprintf" , " clearerr" , " fclose" , " fdopen" , " feof" , " ferror" ,
701- " fflush" , " fgetc" , " fgetln" , " fgetpos" , " fgets" , " fgetwc" ,
702- " fgetws" , " fileno" , " fopen" , " fprintf" , " fpurge" , " fputc" ,
703- " fputs" , " fputwc" , " fputws" , " fread" , " freopen" , " fropen" ,
704- " fscanf" , " fseek" , " fsetpos" , " ftell" , " funopen" , " fwide" ,
705- " fwopen" , " fwprintf" , " fwrite" , " getc" , " getchar" , " getdelim" ,
706- " getline" , " gets" , " getw" , " getwc" , " getwchar" , " mkdtemp" ,
707- " mkstemp" , " mktemp" , " perror" , " printf" , " putc" , " putchar" ,
708- " puts" , " putw" , " putwc" , " putwchar" , " remove" , " rewind" , " scanf" ,
709- " setbuf" , " setbuffer" , " setlinebuf" , " setvbuf" , " snprintf" ,
710- " sprintf" , " sscanf" , " strerror" , " swprintf" , " sys_errlist" ,
711- " sys_nerr" , " tempnam" , " tmpfile" , " tmpnam" , " ungetc" , " ungetwc" ,
712- " vasprintf" , " vfprintf" , " vfscanf" , " vfwprintf" , " vprintf" ,
713- " vscanf" , " vsnprintf" , " vsprintf" , " vsscanf" , " vswprintf" ,
714- " vwprintf" , " wprintf" ,
715- /* non-public struct types */
716- " tag-__sFILE" , " tag-__sbuf" , // OS X
717- " tag-_IO_FILE" , " tag-_IO_marker" , // Linux
718- };
719- ADD_TO_SYSTEM_LIBRARY (stdio_syms, " stdio.h" );
720-
721- // stdlib.h
722- const char * stdlib_syms[]=
723- {
724- " abort" , " abs" , " atexit" , " atof" , " atoi" , " atol" , " atoll" ,
725- " bsearch" , " calloc" , " div" , " exit" , " free" , " getenv" , " labs" ,
726- " ldiv" , " llabs" , " lldiv" , " malloc" , " mblen" , " mbstowcs" , " mbtowc" ,
727- " qsort" , " rand" , " realloc" , " srand" , " strtod" , " strtof" , " strtol" ,
728- " strtold" , " strtoll" , " strtoul" , " strtoull" , " system" , " wcstombs" ,
729- " wctomb"
730- };
731- ADD_TO_SYSTEM_LIBRARY (stdlib_syms, " stdlib.h" );
732-
733- // string.h
734- const char * string_syms[]=
735- {
736- " strcat" , " strncat" , " strchr" , " strrchr" , " strcmp" , " strncmp" ,
737- " strcpy" , " strncpy" , " strerror" , " strlen" , " strpbrk" , " strspn" ,
738- " strcspn" , " strstr" , " strtok"
739- };
740- ADD_TO_SYSTEM_LIBRARY (string_syms, " string.h" );
741-
742- // time.h
743- const char * time_syms[]=
744- {
745- " asctime" , " asctime_r" , " ctime" , " ctime_r" , " difftime" , " gmtime" ,
746- " gmtime_r" , " localtime" , " localtime_r" , " mktime" ,
747- /* non-public struct types */
748- " tag-timespec" , " tag-timeval"
749- };
750- ADD_TO_SYSTEM_LIBRARY (time_syms, " time.h" );
751-
752- // unistd.h
753- const char * unistd_syms[]=
754- {
755- " _exit" , " access" , " alarm" , " chdir" , " chown" , " close" , " dup" ,
756- " dup2" , " execl" , " execle" , " execlp" , " execv" , " execve" , " execvp" ,
757- " fork" , " fpathconf" , " getcwd" , " getegid" , " geteuid" , " getgid" ,
758- " getgroups" , " getlogin" , " getpgrp" , " getpid" , " getppid" , " getuid" ,
759- " isatty" , " link" , " lseek" , " pathconf" , " pause" , " pipe" , " read" ,
760- " rmdir" , " setgid" , " setpgid" , " setsid" , " setuid" , " sleep" ,
761- " sysconf" , " tcgetpgrp" , " tcsetpgrp" , " ttyname" , " ttyname_r" ,
762- " unlink" , " write"
763- };
764- ADD_TO_SYSTEM_LIBRARY (unistd_syms, " unistd.h" );
765-
766- // sys/select.h
767- const char * sys_select_syms[]=
768- {
769- " select"
770- };
771- ADD_TO_SYSTEM_LIBRARY (sys_select_syms, " sys/select.h" );
772-
773- // sys/socket.h
774- const char * sys_socket_syms[]=
775- {
776- " accept" , " bind" , " connect"
777- };
778- ADD_TO_SYSTEM_LIBRARY (sys_socket_syms, " sys/socket.h" );
779-
780- // sys/stat.h
781- const char * sys_stat_syms[]=
782- {
783- " fstat" , " lstat" , " stat"
784- };
785- ADD_TO_SYSTEM_LIBRARY (sys_stat_syms, " sys/stat.h" );
786-
787- /*
788- // sys/types.h
789- const char* sys_types_syms[]=
790- {
791- };
792- ADD_TO_SYSTEM_LIBRARY(sys_types_syms, "sys/types.h");
793- */
794-
795- // sys/wait.h
796- const char * sys_wait_syms[]=
797- {
798- " wait" , " waitpid"
799- };
800- ADD_TO_SYSTEM_LIBRARY (sys_wait_syms, " sys/wait.h" );
801- }
802-
803- /* ******************************************************************\
804-
805- Function: dump_ct::ignore
806-
807- Inputs:
808-
809- Outputs:
810-
811- Purpose:
812-
813- \*******************************************************************/
814-
815- bool dump_ct::ignore (const symbolt &symbol)
816- {
817- const std::string &name_str=id2string (symbol.name );
818-
819- if (has_prefix (name_str, CPROVER_PREFIX) ||
820- name_str==" __func__" ||
821- name_str==" __FUNCTION__" ||
822- name_str==" __PRETTY_FUNCTION__" ||
823- name_str==" argc'" ||
824- name_str==" argv'" ||
825- name_str==" envp'" ||
826- name_str==" envp_size'" )
827- return true ;
828-
829- const std::string &file_str=id2string (symbol.location .get_file ());
830-
831- // don't dump internal GCC builtins
832- if ((file_str==" gcc_builtin_headers_alpha.h" ||
833- file_str==" gcc_builtin_headers_arm.h" ||
834- file_str==" gcc_builtin_headers_ia32.h" ||
835- file_str==" gcc_builtin_headers_mips.h" ||
836- file_str==" gcc_builtin_headers_power.h" ||
837- file_str==" gcc_builtin_headers_generic.h" ) &&
838- has_prefix (name_str, " __builtin_" ))
839- return true ;
840-
841- if (name_str==" __builtin_va_start" ||
842- name_str==" __builtin_va_end" ||
843- symbol.name ==ID_gcc_builtin_va_arg)
844- {
845- system_headers.insert (" stdarg.h" );
846- return true ;
847- }
848-
849- if (name_str.find (" $link" )!=std::string::npos)
850- return false ;
851-
852- system_library_mapt::const_iterator it=
853- system_library_map.find (symbol.name );
854-
855- if (it!=system_library_map.end ())
856- {
857- system_headers.insert (it->second );
858- return true ;
859- }
860-
861- return false ;
862- }
863-
864- /* ******************************************************************\
865-
866614Function: dump_ct::cleanup_decl
867615
868616Inputs:
0 commit comments