@@ -163,7 +163,8 @@ void dump_ct::operator()(std::ostream &os)
163
163
}
164
164
165
165
// 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))
167
168
continue ;
168
169
169
170
if (!symbols_sorted.insert (name_str).second )
@@ -344,7 +345,7 @@ void dump_ct::convert_compound(
344
345
ns.lookup (to_symbol_type (type).get_identifier ());
345
346
assert (symbol.is_type );
346
347
347
- if (!ignore (symbol))
348
+ if (!system_symbols. is_symbol_internal_symbol (symbol, system_headers ))
348
349
convert_compound (symbol.type , unresolved, recursive, os);
349
350
}
350
351
else if (type.id ()==ID_c_enum_tag)
@@ -353,7 +354,7 @@ void dump_ct::convert_compound(
353
354
ns.lookup (to_c_enum_tag_type (type).get_identifier ());
354
355
assert (symbol.is_type );
355
356
356
- if (!ignore (symbol))
357
+ if (!system_symbols. is_symbol_internal_symbol (symbol, system_headers ))
357
358
convert_compound (symbol.type , unresolved, recursive, os);
358
359
}
359
360
else if (type.id ()==ID_array || type.id ()==ID_pointer)
@@ -610,259 +611,6 @@ void dump_ct::convert_compound_enum(
610
611
611
612
/* ******************************************************************\
612
613
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
-
866
614
Function: dump_ct::cleanup_decl
867
615
868
616
Inputs:
0 commit comments