mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Fixed memory leak on shutdown (Affects the embedded version & MyODBC) client/client_priv.h: Update copyright client/completion_hash.cc: Update copyright client/completion_hash.h: Update copyright client/connect_test.c: Update copyright client/errmsg.c: Update copyright client/get_password.c: Update copyright client/insert_test.c: Update copyright client/list_test.c: Update copyright client/my_readline.h: Update copyright client/mysql.cc: Update copyright client/mysqladmin.c: Update copyright client/mysqlbinlog.cc: Update copyright client/mysqlcheck.c: Update copyright client/mysqldump.c: Update copyright client/mysqlimport.c: Update copyright client/mysqlmanager-pwgen.c: Update copyright client/mysqlmanagerc.c: Update copyright client/mysqlshow.c: Update copyright client/mysqltest.c: Update copyright client/password.c: Update copyright client/readline.cc: Update copyright client/select_test.c: Update copyright client/showdb_test.c: Update copyright client/sql_string.cc: Update copyright client/sql_string.h: Update copyright client/ssl_test.c: Update copyright client/thimble.cc: Update copyright client/thread_test.c: Update copyright div/deadlock_test.c: Update copyright extra/comp_err.c: Update copyright extra/my_print_defaults.c: Update copyright extra/perror.c: Update copyright extra/replace.c: Update copyright extra/resolve_stack_dump.c: Update copyright extra/resolveip.c: Update copyright fs/database.c: Update copyright fs/libmysqlfs.c: Update copyright fs/mysqlcorbafs.c: Update copyright fs/mysqlcorbafs.h: Update copyright fs/mysqlcorbafs_test.c: Update copyright heap/_check.c: Update copyright heap/_rectest.c: Update copyright heap/heapdef.h: Update copyright heap/hp_block.c: Update copyright heap/hp_clear.c: Update copyright heap/hp_close.c: Update copyright heap/hp_create.c: Update copyright heap/hp_delete.c: Update copyright heap/hp_extra.c: Update copyright heap/hp_hash.c: Update copyright heap/hp_info.c: Update copyright heap/hp_open.c: Update copyright heap/hp_panic.c: Update copyright heap/hp_rename.c: Update copyright heap/hp_rfirst.c: Update copyright heap/hp_rkey.c: Update copyright heap/hp_rlast.c: Update copyright heap/hp_rnext.c: Update copyright heap/hp_rprev.c: Update copyright heap/hp_rrnd.c: Update copyright heap/hp_rsame.c: Update copyright heap/hp_scan.c: Update copyright heap/hp_static.c: Update copyright heap/hp_test1.c: Update copyright heap/hp_test2.c: Update copyright heap/hp_update.c: Update copyright heap/hp_write.c: Update copyright include/config-win.h: Update copyright include/dbug.h: Update copyright include/errmsg.h: Update copyright include/ft_global.h: Update copyright include/getopt.h: Update copyright include/hash.h: Update copyright include/heap.h: Update copyright include/m_ctype.h: Update copyright include/m_string.h: Update copyright include/md5.h: Update copyright include/merge.h: Update copyright include/my_alarm.h: Update copyright include/my_base.h: Update copyright include/my_bitmap.h: Update copyright include/my_dir.h: Update copyright include/my_global.h: Update copyright include/my_list.h: Update copyright include/my_net.h: Update copyright include/my_no_pthread.h: Update copyright include/my_nosys.h: Update copyright include/my_pthread.h: Update copyright include/my_sys.h: Update copyright include/my_tree.h: Update copyright include/myisam.h: Update copyright include/myisammrg.h: Update copyright include/myisampack.h: Update copyright include/mysql.h: Update copyright include/mysql_com.h: Update copyright include/mysql_embed.h: Update copyright include/mysqld_error.h: Update copyright include/mysys_err.h: Update copyright include/nisam.h: Update copyright include/queues.h: Update copyright include/raid.h: Update copyright include/sslopt-case.h: Update copyright include/sslopt-longopts.h: Update copyright include/sslopt-usage.h: Update copyright include/sslopt-vars.h: Update copyright include/t_ctype.h: Update copyright include/thr_alarm.h: Update copyright include/thr_lock.h: Update copyright include/violite.h: Update copyright isam/_cache.c: Update copyright isam/_dbug.c: Update copyright isam/_key.c: Update copyright isam/_locking.c: Update copyright isam/_packrec.c: Update copyright isam/_page.c: Update copyright isam/_search.c: Update copyright isam/_statrec.c: Update copyright isam/changed.c: Update copyright isam/close.c: Update copyright isam/create.c: Update copyright isam/delete.c: Update copyright isam/extra.c: Update copyright isam/info.c: Update copyright isam/isamchk.c: Update copyright isam/isamdef.h: Update copyright isam/log.c: Update copyright isam/open.c: Update copyright isam/panic.c: Update copyright isam/range.c: Update copyright isam/rfirst.c: Update copyright isam/rkey.c: Update copyright isam/rlast.c: Update copyright isam/rnext.c: Update copyright isam/rprev.c: Update copyright isam/rrnd.c: Update copyright isam/rsame.c: Update copyright isam/rsamepos.c: Update copyright isam/sort.c: Update copyright isam/static.c: Update copyright isam/test1.c: Update copyright isam/test2.c: Update copyright isam/test3.c: Update copyright isam/update.c: Update copyright isam/write.c: Update copyright libmysql/conf_to_src.c: Update copyright libmysql/dll.c: Update copyright libmysql/errmsg.c: Update copyright libmysql/get_password.c: Update copyright libmysql/libmysql.c: Update copyright libmysql/manager.c: Update copyright libmysql/net.c: Update copyright libmysql/password.c: Update copyright libmysqld/lib_sql.cc: Update copyright libmysqld/lib_vio.c: Update copyright libmysqld/libmysqld.c: Update copyright merge/mrg_close.c: Update copyright merge/mrg_create.c: Update copyright merge/mrg_def.h: Update copyright merge/mrg_delete.c: Update copyright merge/mrg_extra.c: Update copyright merge/mrg_info.c: Update copyright merge/mrg_locking.c: Update copyright merge/mrg_open.c: Update copyright merge/mrg_panic.c: Update copyright merge/mrg_rrnd.c: Update copyright merge/mrg_rsame.c: Update copyright merge/mrg_static.c: Update copyright merge/mrg_update.c: Update copyright myisam/ft_boolean_search.c: Update copyright myisam/ft_dump.c: Update copyright myisam/ft_eval.h: Update copyright myisam/ft_static.c: Update copyright myisam/ft_stem.c: Update copyright myisam/ft_stopwords.c: Update copyright myisam/ft_test1.h: Update copyright myisam/mi_cache.c: Update copyright myisam/mi_changed.c: Update copyright myisam/mi_check.c: Update copyright myisam/mi_checksum.c: Update copyright myisam/mi_close.c: Update copyright myisam/mi_create.c: Update copyright myisam/mi_dbug.c: Update copyright myisam/mi_delete.c: Update copyright myisam/mi_delete_all.c: Update copyright myisam/mi_delete_table.c: Update copyright myisam/mi_dynrec.c: Update copyright myisam/mi_extra.c: Update copyright myisam/mi_info.c: Update copyright myisam/mi_key.c: Update copyright myisam/mi_locking.c: Update copyright myisam/mi_log.c: Update copyright myisam/mi_open.c: Update copyright myisam/mi_packrec.c: Update copyright myisam/mi_page.c: Update copyright myisam/mi_panic.c: Update copyright myisam/mi_range.c: Update copyright myisam/mi_rename.c: Update copyright myisam/mi_rfirst.c: Update copyright myisam/mi_rlast.c: Update copyright myisam/mi_rnext_same.c: Update copyright myisam/mi_rrnd.c: Update copyright myisam/mi_rsame.c: Update copyright myisam/mi_rsamepos.c: Update copyright myisam/mi_scan.c: Update copyright myisam/mi_search.c: Update copyright myisam/mi_static.c: Update copyright myisam/mi_statrec.c: Update copyright myisam/mi_test1.c: Update copyright myisam/mi_test2.c: Update copyright myisam/mi_test3.c: Update copyright myisam/mi_unique.c: Update copyright myisam/mi_update.c: Update copyright myisam/mi_write.c: Update copyright myisam/myisamchk.c: Update copyright myisam/myisampack.c: Update copyright myisammrg/myrg_close.c: Update copyright myisammrg/myrg_create.c: Update copyright myisammrg/myrg_def.h: Update copyright myisammrg/myrg_delete.c: Update copyright myisammrg/myrg_locking.c: Update copyright myisammrg/myrg_open.c: Update copyright myisammrg/myrg_panic.c: Update copyright myisammrg/myrg_rsame.c: Update copyright myisammrg/myrg_static.c: Update copyright myisammrg/myrg_update.c: Update copyright myisammrg/myrg_write.c: Update copyright mysql-test/r/gcc296.result: Update of benchmark results mysql-test/r/innodb.result: Update of benchmark results mysql-test/r/join_outer.result: Update of benchmark results mysql-test/r/myisam.result: Update of benchmark results mysys/array.c: Update copyright mysys/charset.c: Fix for restart of character sets mysys/checksum.c: Update copyright mysys/default.c: Update copyright mysys/errors.c: Update copyright mysys/getopt.c: Cleanup mysys/getvar.c: Update copyright mysys/hash.c: Update copyright mysys/list.c: Update copyright mysys/make-conf.c: Update copyright mysys/md5.c: Update copyright mysys/mf_brkhant.c: Update copyright mysys/mf_cache.c: Update copyright mysys/mf_casecnv.c: Update copyright mysys/mf_dirname.c: Update copyright mysys/mf_fn_ext.c: Update copyright mysys/mf_format.c: Update copyright mysys/mf_getdate.c: Update copyright mysys/mf_iocache.c: Update copyright mysys/mf_iocache2.c: Update copyright mysys/mf_keycache.c: Update copyright mysys/mf_loadpath.c: Update copyright mysys/mf_pack.c: Update copyright mysys/mf_path.c: Update copyright mysys/mf_qsort.c: Update copyright mysys/mf_qsort2.c: Update copyright mysys/mf_radix.c: Update copyright mysys/mf_same.c: Update copyright mysys/mf_sleep.c: Update copyright mysys/mf_sort.c: Update copyright mysys/mf_soundex.c: Update copyright mysys/mf_stripp.c: Update copyright mysys/mf_tempfile.c: Update copyright mysys/mf_unixpath.c: Update copyright mysys/mf_util.c: Update copyright mysys/mf_wcomp.c: Update copyright mysys/mf_wfile.c: Update copyright mysys/mulalloc.c: Update copyright mysys/my_alarm.c: Update copyright mysys/my_alloc.c: Update copyright mysys/my_append.c: Update copyright mysys/my_bit.c: Update copyright mysys/my_bitmap.c: Update copyright mysys/my_chsize.c: Update copyright mysys/my_clock.c: Update copyright mysys/my_compress.c: Update copyright mysys/my_copy.c: Update copyright mysys/my_create.c: Update copyright mysys/my_delete.c: Update copyright mysys/my_div.c: Update copyright mysys/my_dup.c: Update copyright mysys/my_error.c: Update copyright mysys/my_fopen.c: Update copyright mysys/my_fstream.c: Update copyright mysys/my_getwd.c: Update copyright mysys/my_init.c: Free 'once_alloc' memory at shutdown. mysys/my_lib.c: Update copyright mysys/my_lock.c: Update copyright mysys/my_lockmem.c: Update copyright mysys/my_lread.c: Update copyright mysys/my_lwrite.c: Update copyright mysys/my_malloc.c: Update copyright mysys/my_messnc.c: Update copyright mysys/my_mkdir.c: Update copyright mysys/my_net.c: Update copyright mysys/my_once.c: Update copyright mysys/my_open.c: Update copyright mysys/my_pread.c: Update copyright mysys/my_pthread.c: Update copyright mysys/my_quick.c: Update copyright mysys/my_read.c: Update copyright mysys/my_realloc.c: Update copyright mysys/my_redel.c: Update copyright mysys/my_rename.c: Update copyright mysys/my_seek.c: Update copyright mysys/my_static.c: Update copyright mysys/my_static.h: Update copyright mysys/my_symlink.c: Update copyright mysys/my_symlink2.c: Update copyright mysys/my_tempnam.c: Update copyright mysys/my_thr_init.c: Update copyright mysys/my_vsnprintf.c: Update copyright mysys/my_wincond.c: Update copyright mysys/my_winthread.c: Update copyright mysys/my_write.c: Update copyright mysys/mysys_priv.h: Update copyright mysys/ptr_cmp.c: Update copyright mysys/queues.c: Update copyright mysys/raid.cc: Update copyright mysys/safemalloc.c: Update copyright mysys/string.c: Update copyright mysys/test_charset.c: Update copyright mysys/test_dir.c: Update copyright mysys/test_fn.c: Update copyright mysys/testhash.c: Update copyright mysys/thr_alarm.c: Update copyright mysys/thr_lock.c: Update copyright mysys/thr_mutex.c: Update copyright mysys/thr_rwlock.c: Update copyright mysys/tree.c: Update copyright mysys/typelib.c: Update copyright pstack/debug.c: Update copyright pstack/debug.h: Update copyright pstack/demangle.h: Update copyright pstack/ieee.c: Update copyright pstack/ieee.h: Update copyright pstack/pstack.c: Update copyright readline/bind.c: Cleanup empty lines readline/complete.c: Cleanup empty lines readline/display.c: Cleanup empty lines readline/funmap.c: Cleanup empty lines readline/histexpand.c: Cleanup empty lines readline/histfile.c: Cleanup empty lines readline/history.c: Cleanup empty lines readline/history.h: Cleanup empty lines readline/input.c: Cleanup empty lines readline/kill.c: Cleanup empty lines readline/readline.c: Cleanup empty lines readline/readline.h: Cleanup empty lines readline/vi_mode.c: Cleanup empty lines sql/cache_manager.cc: Update copyright sql/cache_manager.h: Update copyright sql/convert.cc: Update copyright sql/custom_conf.h: Update copyright sql/derror.cc: Update copyright sql/field.cc: Update copyright sql/field.h: Update copyright sql/field_conv.cc: Update copyright sql/filesort.cc: Update copyright sql/frm_crypt.cc: Update copyright sql/ha_berkeley.cc: Update copyright sql/ha_heap.cc: Update copyright sql/ha_heap.h: Update copyright sql/ha_innobase.cc: Update copyright sql/ha_isam.cc: Update copyright sql/ha_isam.h: Update copyright sql/ha_isammrg.cc: Update copyright sql/ha_isammrg.h: Update copyright sql/ha_myisam.cc: Update copyright sql/handler.cc: Update copyright sql/hash_filo.cc: Update copyright sql/hash_filo.h: Update copyright sql/hostname.cc: Update copyright sql/init.cc: Update copyright sql/item.cc: Update copyright sql/item.h: Update copyright sql/item_buff.cc: Update copyright sql/item_cmpfunc.cc: Update copyright sql/item_cmpfunc.h: Update copyright sql/item_create.cc: Update copyright sql/item_create.h: Update copyright sql/item_func.cc: Update copyright sql/item_strfunc.cc: Update copyright sql/item_sum.cc: Update copyright sql/item_sum.h: Update copyright sql/item_timefunc.cc: Update copyright sql/item_timefunc.h: Update copyright sql/item_uniq.cc: Update copyright sql/item_uniq.h: Update copyright sql/key.cc: Update copyright sql/lex_symbol.h: Update copyright sql/lock.cc: Update copyright sql/log.cc: Update copyright sql/log_event.cc: Update copyright sql/log_event.h: Update copyright sql/matherr.c: Update copyright sql/mf_iocache.cc: Update copyright sql/mini_client.cc: Update copyright sql/mini_client.h: Update copyright sql/my_lock.c: Update copyright sql/mysqld.cc: Update copyright sql/net_pkg.cc: Update copyright sql/net_serv.cc: Update copyright sql/opt_sum.cc: Update copyright sql/password.c: Update copyright sql/procedure.cc: Update copyright sql/procedure.h: Update copyright sql/records.cc: Update copyright sql/repl_failsafe.cc: Update copyright sql/slave.cc: Update copyright sql/slave.h: Update copyright sql/sql_acl.cc: Update copyright sql/sql_acl.h: Update copyright sql/sql_analyse.cc: Update copyright sql/sql_analyse.h: Update copyright sql/sql_base.cc: Update copyright sql/sql_cache.cc: Update copyright sql/sql_class.cc: Update copyright sql/sql_class.h: Update copyright sql/sql_crypt.cc: Update copyright sql/sql_crypt.h: Update copyright sql/sql_db.cc: Update copyright sql/sql_delete.cc: Update copyright sql/sql_handler.cc: Update copyright sql/sql_insert.cc: Update copyright sql/sql_lex.cc: Update copyright sql/sql_lex.h: Update copyright sql/sql_list.cc: Update copyright sql/sql_list.h: Update copyright sql/sql_load.cc: Update copyright sql/sql_map.cc: Update copyright sql/sql_map.h: Update copyright sql/sql_parse.cc: Update copyright sql/sql_rename.cc: Update copyright sql/sql_repl.cc: Update copyright sql/sql_select.h: Update copyright sql/sql_string.cc: Update copyright sql/sql_string.h: Update copyright sql/sql_table.cc: Update copyright sql/sql_test.cc: Update copyright sql/sql_udf.cc: Update copyright sql/sql_udf.h: Update copyright sql/stacktrace.c: Update copyright sql/structs.h: Update copyright sql/table.cc: Update copyright sql/table.h: Update copyright sql/thr_malloc.cc: Update copyright sql/time.cc: Update copyright sql/udf_example.cc: Update copyright sql/uniques.cc: Update copyright sql/unireg.cc: Update copyright sql/unireg.h: Update copyright strings/atof.c: Update copyright strings/bchange.c: Update copyright strings/bcmp.c: Update copyright strings/bcopy-duff.c: Update copyright strings/bfill.c: Update copyright strings/bmove.c: Update copyright strings/bmove512.c: Update copyright strings/bmove_upp.c: Update copyright strings/bzero.c: Update copyright strings/conf_to_src.c: Update copyright strings/ctype-big5.c: Update copyright strings/ctype-czech.c: Update copyright strings/ctype-euc_kr.c: Update copyright strings/ctype-gb2312.c: Update copyright strings/ctype-gbk.c: Update copyright strings/ctype-latin1_de.c: Update copyright strings/ctype-sjis.c: Update copyright strings/ctype-tis620.c: Update copyright strings/ctype-ujis.c: Update copyright strings/ctype.c: Update copyright strings/do_ctype.c: Update copyright strings/int2str.c: Update copyright strings/is_prefix.c: Update copyright strings/llstr.c: Update copyright strings/longlong2str.c: Update copyright strings/memcmp.c: Update copyright strings/memcpy.c: Update copyright strings/memset.c: Update copyright strings/r_strinstr.c: Update copyright strings/str2int.c: Update copyright strings/str_test.c: Update copyright strings/strappend.c: Update copyright strings/strcat.c: Update copyright strings/strcend.c: Update copyright strings/strchr.c: Update copyright strings/strcmp.c: Update copyright strings/strcont.c: Update copyright strings/strend.c: Update copyright strings/strfill.c: Update copyright strings/strings-not-used.h: Update copyright strings/strinstr.c: Update copyright strings/strlen.c: Update copyright strings/strmake.c: Update copyright strings/strmov.c: Update copyright strings/strnlen.c: Update copyright strings/strnmov.c: Update copyright strings/strrchr.c: Update copyright strings/strstr.c: Update copyright strings/strto.c: Update copyright strings/strtol.c: Update copyright strings/strtoll.c: Update copyright strings/strtoul.c: Update copyright strings/strtoull.c: Update copyright strings/strxmov.c: Update copyright strings/strxnmov.c: Update copyright strings/t_ctype.h: Update copyright strings/udiv.c: Update copyright tools/mysqlmanager.c: Update copyright vio/test-ssl.c: Update copyright vio/test-sslclient.c: Update copyright vio/test-sslserver.c: Update copyright vio/vio.c: Update copyright vio/viosocket.c: Update copyright vio/viossl.c: Update copyright vio/viosslfactories.c: Update copyright vio/viotest-ssl.c: Update copyright
		
			
				
	
	
		
			799 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			799 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* debug.h -- Describe generic debugging information.
 | 
						|
   Copyright (C) 1995, 1996 Free Software Foundation, Inc.
 | 
						|
   Written by Ian Lance Taylor <ian@cygnus.com>.
 | 
						|
 | 
						|
   This file is part of GNU Binutils.
 | 
						|
 | 
						|
   This program is free software; you can redistribute it and/or modify
 | 
						|
   it under the terms of the GNU General Public License as published by
 | 
						|
   the Free Software Foundation; either version 2 of the License, or
 | 
						|
   (at your option) any later version.
 | 
						|
 | 
						|
   This program is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
   GNU General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU General Public License
 | 
						|
   along with this program; if not, write to the Free Software
 | 
						|
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 | 
						|
   02111-1307, USA.  */
 | 
						|
 | 
						|
#ifndef DEBUG_H
 | 
						|
#define DEBUG_H
 | 
						|
 | 
						|
/* This header file describes a generic debugging information format.
 | 
						|
   We may eventually have readers which convert different formats into
 | 
						|
   this generic format, and writers which write it out.  The initial
 | 
						|
   impetus for this was writing a convertor from stabs to HP IEEE-695
 | 
						|
   debugging format.  */
 | 
						|
 | 
						|
/* Different kinds of types.  */
 | 
						|
 | 
						|
enum debug_type_kind
 | 
						|
{
 | 
						|
  /* Not used.  */
 | 
						|
  DEBUG_KIND_ILLEGAL,
 | 
						|
  /* Indirect via a pointer.  */
 | 
						|
  DEBUG_KIND_INDIRECT,
 | 
						|
  /* Void.  */
 | 
						|
  DEBUG_KIND_VOID,
 | 
						|
  /* Integer.  */
 | 
						|
  DEBUG_KIND_INT,
 | 
						|
  /* Floating point.  */
 | 
						|
  DEBUG_KIND_FLOAT,
 | 
						|
  /* Complex.  */
 | 
						|
  DEBUG_KIND_COMPLEX,
 | 
						|
  /* Boolean.  */
 | 
						|
  DEBUG_KIND_BOOL,
 | 
						|
  /* Struct.  */
 | 
						|
  DEBUG_KIND_STRUCT,
 | 
						|
  /* Union.  */
 | 
						|
  DEBUG_KIND_UNION,
 | 
						|
  /* Class.  */
 | 
						|
  DEBUG_KIND_CLASS,
 | 
						|
  /* Union class (can this really happen?).  */
 | 
						|
  DEBUG_KIND_UNION_CLASS,
 | 
						|
  /* Enumeration type.  */
 | 
						|
  DEBUG_KIND_ENUM,
 | 
						|
  /* Pointer.  */
 | 
						|
  DEBUG_KIND_POINTER,
 | 
						|
  /* Function.  */
 | 
						|
  DEBUG_KIND_FUNCTION,
 | 
						|
  /* Reference.  */
 | 
						|
  DEBUG_KIND_REFERENCE,
 | 
						|
  /* Range.  */
 | 
						|
  DEBUG_KIND_RANGE,
 | 
						|
  /* Array.  */
 | 
						|
  DEBUG_KIND_ARRAY,
 | 
						|
  /* Set.  */
 | 
						|
  DEBUG_KIND_SET,
 | 
						|
  /* Based pointer.  */
 | 
						|
  DEBUG_KIND_OFFSET,
 | 
						|
  /* Method.  */
 | 
						|
  DEBUG_KIND_METHOD,
 | 
						|
  /* Const qualified type.  */
 | 
						|
  DEBUG_KIND_CONST,
 | 
						|
  /* Volatile qualified type.  */
 | 
						|
  DEBUG_KIND_VOLATILE,
 | 
						|
  /* Named type.  */
 | 
						|
  DEBUG_KIND_NAMED,
 | 
						|
  /* Tagged type.  */
 | 
						|
  DEBUG_KIND_TAGGED
 | 
						|
};
 | 
						|
 | 
						|
/* Different kinds of variables.  */
 | 
						|
 | 
						|
enum debug_var_kind
 | 
						|
{
 | 
						|
  /* Not used.  */
 | 
						|
  DEBUG_VAR_ILLEGAL,
 | 
						|
  /* A global variable.  */
 | 
						|
  DEBUG_GLOBAL,
 | 
						|
  /* A static variable.  */
 | 
						|
  DEBUG_STATIC,
 | 
						|
  /* A local static variable.  */
 | 
						|
  DEBUG_LOCAL_STATIC,
 | 
						|
  /* A local variable.  */
 | 
						|
  DEBUG_LOCAL,
 | 
						|
  /* A register variable.  */
 | 
						|
  DEBUG_REGISTER
 | 
						|
};
 | 
						|
 | 
						|
/* Different kinds of function parameters.  */
 | 
						|
 | 
						|
enum debug_parm_kind
 | 
						|
{
 | 
						|
  /* Not used.  */
 | 
						|
  DEBUG_PARM_ILLEGAL,
 | 
						|
  /* A stack based parameter.  */
 | 
						|
  DEBUG_PARM_STACK,
 | 
						|
  /* A register parameter.  */
 | 
						|
  DEBUG_PARM_REG,
 | 
						|
  /* A stack based reference parameter.  */
 | 
						|
  DEBUG_PARM_REFERENCE,
 | 
						|
  /* A register reference parameter.  */
 | 
						|
  DEBUG_PARM_REF_REG
 | 
						|
};
 | 
						|
 | 
						|
/* Different kinds of visibility.  */
 | 
						|
 | 
						|
enum debug_visibility
 | 
						|
{
 | 
						|
  /* A public field (e.g., a field in a C struct).  */
 | 
						|
  DEBUG_VISIBILITY_PUBLIC,
 | 
						|
  /* A protected field.  */
 | 
						|
  DEBUG_VISIBILITY_PROTECTED,
 | 
						|
  /* A private field.  */
 | 
						|
  DEBUG_VISIBILITY_PRIVATE,
 | 
						|
  /* A field which should be ignored.  */
 | 
						|
  DEBUG_VISIBILITY_IGNORE
 | 
						|
};
 | 
						|
 | 
						|
/* A type.  */
 | 
						|
 | 
						|
typedef struct debug_type *debug_type;
 | 
						|
 | 
						|
#define DEBUG_TYPE_NULL ((debug_type) NULL)
 | 
						|
 | 
						|
/* A field in a struct or union.  */
 | 
						|
 | 
						|
typedef struct debug_field *debug_field;
 | 
						|
 | 
						|
#define DEBUG_FIELD_NULL ((debug_field) NULL)
 | 
						|
 | 
						|
/* A base class for an object.  */
 | 
						|
 | 
						|
typedef struct debug_baseclass *debug_baseclass;
 | 
						|
 | 
						|
#define DEBUG_BASECLASS_NULL ((debug_baseclass) NULL)
 | 
						|
 | 
						|
/* A method of an object.  */
 | 
						|
 | 
						|
typedef struct debug_method *debug_method;
 | 
						|
 | 
						|
#define DEBUG_METHOD_NULL ((debug_method) NULL)
 | 
						|
 | 
						|
/* The arguments to a method function of an object.  These indicate
 | 
						|
   which method to run.  */
 | 
						|
 | 
						|
typedef struct debug_method_variant *debug_method_variant;
 | 
						|
 | 
						|
#define DEBUG_METHOD_VARIANT_NULL ((debug_method_variant) NULL)
 | 
						|
 | 
						|
/* This structure is passed to debug_write.  It holds function
 | 
						|
   pointers that debug_write will call based on the accumulated
 | 
						|
   debugging information.  */
 | 
						|
 | 
						|
struct debug_write_fns
 | 
						|
{
 | 
						|
  /* This is called at the start of each new compilation unit with the
 | 
						|
     name of the main file in the new unit.  */
 | 
						|
  boolean (*start_compilation_unit) PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
  /* This is called at the start of each source file within a
 | 
						|
     compilation unit, before outputting any global information for
 | 
						|
     that file.  The argument is the name of the file.  */
 | 
						|
  boolean (*start_source) PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
  /* Each writer must keep a stack of types.  */
 | 
						|
 | 
						|
  /* Push an empty type onto the type stack.  This type can appear if
 | 
						|
     there is a reference to a type which is never defined.  */
 | 
						|
  boolean (*empty_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Push a void type onto the type stack.  */
 | 
						|
  boolean (*void_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Push an integer type onto the type stack, given the size and
 | 
						|
     whether it is unsigned.  */
 | 
						|
  boolean (*int_type) PARAMS ((PTR, unsigned int, boolean));
 | 
						|
 | 
						|
  /* Push a floating type onto the type stack, given the size.  */
 | 
						|
  boolean (*float_type) PARAMS ((PTR, unsigned int));
 | 
						|
 | 
						|
  /* Push a complex type onto the type stack, given the size.  */
 | 
						|
  boolean (*complex_type) PARAMS ((PTR, unsigned int));
 | 
						|
 | 
						|
  /* Push a boolean type onto the type stack, given the size.  */
 | 
						|
  boolean (*bool_type) PARAMS ((PTR, unsigned int));
 | 
						|
 | 
						|
  /* Push an enum type onto the type stack, given the tag, a NULL
 | 
						|
     terminated array of names and the associated values.  If there is
 | 
						|
     no tag, the tag argument will be NULL.  If this is an undefined
 | 
						|
     enum, the names and values arguments will be NULL.  */
 | 
						|
  boolean (*enum_type) PARAMS ((PTR, const char *, const char **,
 | 
						|
				bfd_signed_vma *));
 | 
						|
 | 
						|
  /* Pop the top type on the type stack, and push a pointer to that
 | 
						|
     type onto the type stack.  */
 | 
						|
  boolean (*pointer_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Push a function type onto the type stack.  The second argument
 | 
						|
     indicates the number of argument types that have been pushed onto
 | 
						|
     the stack.  If the number of argument types is passed as -1, then
 | 
						|
     the argument types of the function are unknown, and no types have
 | 
						|
     been pushed onto the stack.  The third argument is true if the
 | 
						|
     function takes a variable number of arguments.  The return type
 | 
						|
     of the function is pushed onto the type stack below the argument
 | 
						|
     types, if any.  */
 | 
						|
  boolean (*function_type) PARAMS ((PTR, int, boolean));
 | 
						|
 | 
						|
  /* Pop the top type on the type stack, and push a reference to that
 | 
						|
     type onto the type stack.  */
 | 
						|
  boolean (*reference_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Pop the top type on the type stack, and push a range of that type
 | 
						|
     with the given lower and upper bounds onto the type stack.  */
 | 
						|
  boolean (*range_type) PARAMS ((PTR, bfd_signed_vma, bfd_signed_vma));
 | 
						|
 | 
						|
  /* Push an array type onto the type stack.  The top type on the type
 | 
						|
     stack is the range, and the next type on the type stack is the
 | 
						|
     element type.  These should be popped before the array type is
 | 
						|
     pushed.  The arguments are the lower bound, the upper bound, and
 | 
						|
     whether the array is a string.  */
 | 
						|
  boolean (*array_type) PARAMS ((PTR, bfd_signed_vma, bfd_signed_vma,
 | 
						|
				 boolean));
 | 
						|
 | 
						|
  /* Pop the top type on the type stack, and push a set of that type
 | 
						|
     onto the type stack.  The argument indicates whether this set is
 | 
						|
     a bitstring.  */
 | 
						|
  boolean (*set_type) PARAMS ((PTR, boolean));
 | 
						|
 | 
						|
  /* Push an offset type onto the type stack.  The top type on the
 | 
						|
     type stack is the target type, and the next type on the type
 | 
						|
     stack is the base type.  These should be popped before the offset
 | 
						|
     type is pushed.  */
 | 
						|
  boolean (*offset_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Push a method type onto the type stack.  If the second argument
 | 
						|
     is true, the top type on the stack is the class to which the
 | 
						|
     method belongs; otherwise, the class must be determined by the
 | 
						|
     class to which the method is attached.  The third argument is the
 | 
						|
     number of argument types; these are pushed onto the type stack in
 | 
						|
     reverse order (the first type popped is the last argument to the
 | 
						|
     method).  A value of -1 for the third argument means that no
 | 
						|
     argument information is available.  The fourth argument is true
 | 
						|
     if the function takes a variable number of arguments.  The next
 | 
						|
     type on the type stack below the domain and the argument types is
 | 
						|
     the return type of the method.  All these types must be popped,
 | 
						|
     and then the method type must be pushed.  */
 | 
						|
  boolean (*method_type) PARAMS ((PTR, boolean, int, boolean));
 | 
						|
 | 
						|
  /* Pop the top type off the type stack, and push a const qualified
 | 
						|
     version of that type onto the type stack.  */
 | 
						|
  boolean (*const_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Pop the top type off the type stack, and push a volatile
 | 
						|
     qualified version of that type onto the type stack.  */
 | 
						|
  boolean (*volatile_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Start building a struct.  This is followed by calls to the
 | 
						|
     struct_field function, and finished by a call to the
 | 
						|
     end_struct_type function.  The second argument is the tag; this
 | 
						|
     will be NULL if there isn't one.  If the second argument is NULL,
 | 
						|
     the third argument is a constant identifying this struct for use
 | 
						|
     with tag_type.  The fourth argument is true for a struct, false
 | 
						|
     for a union.  The fifth argument is the size.  If this is an
 | 
						|
     undefined struct or union, the size will be 0 and struct_field
 | 
						|
     will not be called before end_struct_type is called.  */
 | 
						|
  boolean (*start_struct_type) PARAMS ((PTR, const char *, unsigned int,
 | 
						|
					boolean, unsigned int));
 | 
						|
 | 
						|
  /* Add a field to the struct type currently being built.  The type
 | 
						|
     of the field should be popped off the type stack.  The arguments
 | 
						|
     are the name, the bit position, the bit size (may be zero if the
 | 
						|
     field is not packed), and the visibility.  */
 | 
						|
  boolean (*struct_field) PARAMS ((PTR, const char *, bfd_vma, bfd_vma,
 | 
						|
				   enum debug_visibility));
 | 
						|
 | 
						|
  /* Finish building a struct, and push it onto the type stack.  */
 | 
						|
  boolean (*end_struct_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Start building a class.  This is followed by calls to several
 | 
						|
     functions: struct_field, class_static_member, class_baseclass,
 | 
						|
     class_start_method, class_method_variant,
 | 
						|
     class_static_method_variant, and class_end_method.  The class is
 | 
						|
     finished by a call to end_class_type.  The first five arguments
 | 
						|
     are the same as for start_struct_type.  The sixth argument is
 | 
						|
     true if there is a virtual function table; if there is, the
 | 
						|
     seventh argument is true if the virtual function table can be
 | 
						|
     found in the type itself, and is false if the type of the object
 | 
						|
     holding the virtual function table should be popped from the type
 | 
						|
     stack.  */
 | 
						|
  boolean (*start_class_type) PARAMS ((PTR, const char *, unsigned int,
 | 
						|
				       boolean, unsigned int, boolean,
 | 
						|
				       boolean));
 | 
						|
 | 
						|
  /* Add a static member to the class currently being built.  The
 | 
						|
     arguments are the field name, the physical name, and the
 | 
						|
     visibility.  The type must be popped off the type stack.  */
 | 
						|
  boolean (*class_static_member) PARAMS ((PTR, const char *, const char *,
 | 
						|
					  enum debug_visibility));
 | 
						|
 | 
						|
  /* Add a baseclass to the class currently being built.  The type of
 | 
						|
     the baseclass must be popped off the type stack.  The arguments
 | 
						|
     are the bit position, whether the class is virtual, and the
 | 
						|
     visibility.  */
 | 
						|
  boolean (*class_baseclass) PARAMS ((PTR, bfd_vma, boolean,
 | 
						|
				      enum debug_visibility));
 | 
						|
 | 
						|
  /* Start adding a method to the class currently being built.  This
 | 
						|
     is followed by calls to class_method_variant and
 | 
						|
     class_static_method_variant to describe different variants of the
 | 
						|
     method which take different arguments.  The method is finished
 | 
						|
     with a call to class_end_method.  The argument is the method
 | 
						|
     name.  */
 | 
						|
  boolean (*class_start_method) PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
  /* Describe a variant to the class method currently being built.
 | 
						|
     The type of the variant must be popped off the type stack.  The
 | 
						|
     second argument is the physical name of the function.  The
 | 
						|
     following arguments are the visibility, whether the variant is
 | 
						|
     const, whether the variant is volatile, the offset in the virtual
 | 
						|
     function table, and whether the context is on the type stack
 | 
						|
     (below the variant type).  */
 | 
						|
  boolean (*class_method_variant) PARAMS ((PTR, const char *,
 | 
						|
					   enum debug_visibility,
 | 
						|
					   boolean, boolean,
 | 
						|
					   bfd_vma, boolean));
 | 
						|
 | 
						|
  /* Describe a static variant to the class method currently being
 | 
						|
     built.  The arguments are the same as for class_method_variant,
 | 
						|
     except that the last two arguments are omitted.  The type of the
 | 
						|
     variant must be popped off the type stack.  */
 | 
						|
  boolean (*class_static_method_variant) PARAMS ((PTR, const char *,
 | 
						|
						  enum debug_visibility,
 | 
						|
						  boolean, boolean));
 | 
						|
 | 
						|
  /* Finish describing a class method.  */
 | 
						|
  boolean (*class_end_method) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Finish describing a class, and push it onto the type stack.  */
 | 
						|
  boolean (*end_class_type) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Push a type on the stack which was given a name by an earlier
 | 
						|
     call to typdef.  */
 | 
						|
  boolean (*typedef_type) PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
  /* Push a tagged type on the stack which was defined earlier.  If
 | 
						|
     the second argument is not NULL, the type was defined by a call
 | 
						|
     to tag.  If the second argument is NULL, the type was defined by
 | 
						|
     a call to start_struct_type or start_class_type with a tag of
 | 
						|
     NULL and the number of the third argument.  Either way, the
 | 
						|
     fourth argument is the tag kind.  Note that this may be called
 | 
						|
     for a struct (class) being defined, in between the call to
 | 
						|
     start_struct_type (start_class_type) and the call to
 | 
						|
     end_struct_type (end_class_type).  */
 | 
						|
  boolean (*tag_type) PARAMS ((PTR, const char *, unsigned int,
 | 
						|
			       enum debug_type_kind));
 | 
						|
 | 
						|
  /* Pop the type stack, and typedef it to the given name.  */
 | 
						|
  boolean (*typdef) PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
  /* Pop the type stack, and declare it as a tagged struct or union or
 | 
						|
     enum or whatever.  The tag passed down here is redundant, since
 | 
						|
     was also passed when enum_type, start_struct_type, or
 | 
						|
     start_class_type was called.  */
 | 
						|
  boolean (*tag) PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
  /* This is called to record a named integer constant.  */
 | 
						|
  boolean (*int_constant) PARAMS ((PTR, const char *, bfd_vma));
 | 
						|
 | 
						|
  /* This is called to record a named floating point constant.  */
 | 
						|
  boolean (*float_constant) PARAMS ((PTR, const char *, double));
 | 
						|
 | 
						|
  /* This is called to record a typed integer constant.  The type is
 | 
						|
     popped off the type stack.  */
 | 
						|
  boolean (*typed_constant) PARAMS ((PTR, const char *, bfd_vma));
 | 
						|
 | 
						|
  /* This is called to record a variable.  The type is popped off the
 | 
						|
     type stack.  */
 | 
						|
  boolean (*variable) PARAMS ((PTR, const char *, enum debug_var_kind,
 | 
						|
			       bfd_vma));
 | 
						|
 | 
						|
  /* Start writing out a function.  The return type must be popped off
 | 
						|
     the stack.  The boolean is true if the function is global.  This
 | 
						|
     is followed by calls to function_parameter, followed by block
 | 
						|
     information.  */
 | 
						|
  boolean (*start_function) PARAMS ((PTR, const char *, boolean));
 | 
						|
 | 
						|
  /* Record a function parameter for the current function.  The type
 | 
						|
     must be popped off the stack.  */
 | 
						|
  boolean (*function_parameter) PARAMS ((PTR, const char *,
 | 
						|
					 enum debug_parm_kind, bfd_vma));
 | 
						|
 | 
						|
  /* Start writing out a block.  There is at least one top level block
 | 
						|
     per function.  Blocks may be nested.  The argument is the
 | 
						|
     starting address of the block.  */
 | 
						|
  boolean (*start_block) PARAMS ((PTR, bfd_vma));
 | 
						|
 | 
						|
  /* Finish writing out a block.  The argument is the ending address
 | 
						|
     of the block.  */
 | 
						|
  boolean (*end_block) PARAMS ((PTR, bfd_vma));
 | 
						|
 | 
						|
  /* Finish writing out a function.  */
 | 
						|
  boolean (*end_function) PARAMS ((PTR));
 | 
						|
 | 
						|
  /* Record line number information for the current compilation unit.  */
 | 
						|
  boolean (*lineno) PARAMS ((PTR, const char *, unsigned long, bfd_vma));
 | 
						|
};
 | 
						|
 | 
						|
/* Exported functions.  */
 | 
						|
 | 
						|
/* The first argument to most of these functions is a handle.  This
 | 
						|
   handle is returned by the debug_init function.  The purpose of the
 | 
						|
   handle is to permit the debugging routines to not use static
 | 
						|
   variables, and hence to be reentrant.  This would be useful for a
 | 
						|
   program which wanted to handle two executables simultaneously.  */
 | 
						|
 | 
						|
/* Return a debugging handle.  */
 | 
						|
 | 
						|
extern PTR debug_init PARAMS ((void));
 | 
						|
 | 
						|
/* Set the source filename.  This implicitly starts a new compilation
 | 
						|
   unit.  */
 | 
						|
 | 
						|
extern boolean debug_set_filename PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
/* Change source files to the given file name.  This is used for
 | 
						|
   include files in a single compilation unit.  */
 | 
						|
 | 
						|
extern boolean debug_start_source PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
/* Record a function definition.  This implicitly starts a function
 | 
						|
   block.  The debug_type argument is the type of the return value.
 | 
						|
   The boolean indicates whether the function is globally visible.
 | 
						|
   The bfd_vma is the address of the start of the function.  Currently
 | 
						|
   the parameter types are specified by calls to
 | 
						|
   debug_record_parameter.  */
 | 
						|
 | 
						|
extern boolean debug_record_function
 | 
						|
  PARAMS ((PTR, const char *, debug_type, boolean, bfd_vma));
 | 
						|
 | 
						|
/* Record a parameter for the current function.  */
 | 
						|
 | 
						|
extern boolean debug_record_parameter
 | 
						|
  PARAMS ((PTR, const char *, debug_type, enum debug_parm_kind, bfd_vma));
 | 
						|
 | 
						|
/* End a function definition.  The argument is the address where the
 | 
						|
   function ends.  */
 | 
						|
 | 
						|
extern boolean debug_end_function PARAMS ((PTR, bfd_vma));
 | 
						|
 | 
						|
/* Start a block in a function.  All local information will be
 | 
						|
   recorded in this block, until the matching call to debug_end_block.
 | 
						|
   debug_start_block and debug_end_block may be nested.  The argument
 | 
						|
   is the address at which this block starts.  */
 | 
						|
 | 
						|
extern boolean debug_start_block PARAMS ((PTR, bfd_vma));
 | 
						|
 | 
						|
/* Finish a block in a function.  This matches the call to
 | 
						|
   debug_start_block.  The argument is the address at which this block
 | 
						|
   ends.  */
 | 
						|
 | 
						|
extern boolean debug_end_block PARAMS ((PTR, bfd_vma));
 | 
						|
 | 
						|
/* Associate a line number in the current source file with a given
 | 
						|
   address.  */
 | 
						|
 | 
						|
extern boolean debug_record_line PARAMS ((PTR, unsigned long, bfd_vma));
 | 
						|
 | 
						|
/* Start a named common block.  This is a block of variables that may
 | 
						|
   move in memory.  */
 | 
						|
 | 
						|
extern boolean debug_start_common_block PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
/* End a named common block.  */
 | 
						|
 | 
						|
extern boolean debug_end_common_block PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
/* Record a named integer constant.  */
 | 
						|
 | 
						|
extern boolean debug_record_int_const PARAMS ((PTR, const char *, bfd_vma));
 | 
						|
 | 
						|
/* Record a named floating point constant.  */
 | 
						|
 | 
						|
extern boolean debug_record_float_const PARAMS ((PTR, const char *, double));
 | 
						|
 | 
						|
/* Record a typed constant with an integral value.  */
 | 
						|
 | 
						|
extern boolean debug_record_typed_const
 | 
						|
  PARAMS ((PTR, const char *, debug_type, bfd_vma));
 | 
						|
 | 
						|
/* Record a label.  */
 | 
						|
 | 
						|
extern boolean debug_record_label
 | 
						|
  PARAMS ((PTR, const char *, debug_type, bfd_vma));
 | 
						|
 | 
						|
/* Record a variable.  */
 | 
						|
 | 
						|
extern boolean debug_record_variable
 | 
						|
  PARAMS ((PTR, const char *, debug_type, enum debug_var_kind, bfd_vma));
 | 
						|
 | 
						|
/* Make an indirect type.  The first argument is a pointer to the
 | 
						|
   location where the real type will be placed.  The second argument
 | 
						|
   is the type tag, if there is one; this may be NULL; the only
 | 
						|
   purpose of this argument is so that debug_get_type_name can return
 | 
						|
   something useful.  This function may be used when a type is
 | 
						|
   referenced before it is defined.  */
 | 
						|
 | 
						|
extern debug_type debug_make_indirect_type
 | 
						|
  PARAMS ((PTR, debug_type *, const char *));
 | 
						|
 | 
						|
/* Make a void type.  */
 | 
						|
 | 
						|
extern debug_type debug_make_void_type PARAMS ((PTR));
 | 
						|
 | 
						|
/* Make an integer type of a given size.  The boolean argument is true
 | 
						|
   if the integer is unsigned.  */
 | 
						|
 | 
						|
extern debug_type debug_make_int_type PARAMS ((PTR, unsigned int, boolean));
 | 
						|
 | 
						|
/* Make a floating point type of a given size.  FIXME: On some
 | 
						|
   platforms, like an Alpha, you probably need to be able to specify
 | 
						|
   the format.  */
 | 
						|
 | 
						|
extern debug_type debug_make_float_type PARAMS ((PTR, unsigned int));
 | 
						|
 | 
						|
/* Make a boolean type of a given size.  */
 | 
						|
 | 
						|
extern debug_type debug_make_bool_type PARAMS ((PTR, unsigned int));
 | 
						|
 | 
						|
/* Make a complex type of a given size.  */
 | 
						|
 | 
						|
extern debug_type debug_make_complex_type PARAMS ((PTR, unsigned int));
 | 
						|
 | 
						|
/* Make a structure type.  The second argument is true for a struct,
 | 
						|
   false for a union.  The third argument is the size of the struct.
 | 
						|
   The fourth argument is a NULL terminated array of fields.  */
 | 
						|
 | 
						|
extern debug_type debug_make_struct_type
 | 
						|
  PARAMS ((PTR, boolean, bfd_vma, debug_field *));
 | 
						|
 | 
						|
/* Make an object type.  The first three arguments after the handle
 | 
						|
   are the same as for debug_make_struct_type.  The next arguments are
 | 
						|
   a NULL terminated array of base classes, a NULL terminated array of
 | 
						|
   methods, the type of the object holding the virtual function table
 | 
						|
   if it is not this object, and a boolean which is true if this
 | 
						|
   object has its own virtual function table.  */
 | 
						|
 | 
						|
extern debug_type debug_make_object_type
 | 
						|
  PARAMS ((PTR, boolean, bfd_vma, debug_field *, debug_baseclass *,
 | 
						|
	   debug_method *, debug_type, boolean));
 | 
						|
 | 
						|
/* Make an enumeration type.  The arguments are a null terminated
 | 
						|
   array of strings, and an array of corresponding values.  */
 | 
						|
 | 
						|
extern debug_type debug_make_enum_type
 | 
						|
  PARAMS ((PTR, const char **, bfd_signed_vma *));
 | 
						|
 | 
						|
/* Make a pointer to a given type.  */
 | 
						|
 | 
						|
extern debug_type debug_make_pointer_type
 | 
						|
  PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Make a function type.  The second argument is the return type.  The
 | 
						|
   third argument is a NULL terminated array of argument types.  The
 | 
						|
   fourth argument is true if the function takes a variable number of
 | 
						|
   arguments.  If the third argument is NULL, then the argument types
 | 
						|
   are unknown.  */
 | 
						|
 | 
						|
extern debug_type debug_make_function_type
 | 
						|
  PARAMS ((PTR, debug_type, debug_type *, boolean));
 | 
						|
 | 
						|
/* Make a reference to a given type.  */
 | 
						|
 | 
						|
extern debug_type debug_make_reference_type PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Make a range of a given type from a lower to an upper bound.  */
 | 
						|
 | 
						|
extern debug_type debug_make_range_type
 | 
						|
  PARAMS ((PTR, debug_type, bfd_signed_vma, bfd_signed_vma));
 | 
						|
 | 
						|
/* Make an array type.  The second argument is the type of an element
 | 
						|
   of the array.  The third argument is the type of a range of the
 | 
						|
   array.  The fourth and fifth argument are the lower and upper
 | 
						|
   bounds, respectively (if the bounds are not known, lower should be
 | 
						|
   0 and upper should be -1).  The sixth argument is true if this
 | 
						|
   array is actually a string, as in C.  */
 | 
						|
 | 
						|
extern debug_type debug_make_array_type
 | 
						|
  PARAMS ((PTR, debug_type, debug_type, bfd_signed_vma, bfd_signed_vma,
 | 
						|
	   boolean));
 | 
						|
 | 
						|
/* Make a set of a given type.  For example, a Pascal set type.  The
 | 
						|
   boolean argument is true if this set is actually a bitstring, as in
 | 
						|
   CHILL.  */
 | 
						|
 | 
						|
extern debug_type debug_make_set_type PARAMS ((PTR, debug_type, boolean));
 | 
						|
 | 
						|
/* Make a type for a pointer which is relative to an object.  The
 | 
						|
   second argument is the type of the object to which the pointer is
 | 
						|
   relative.  The third argument is the type that the pointer points
 | 
						|
   to.  */
 | 
						|
 | 
						|
extern debug_type debug_make_offset_type
 | 
						|
  PARAMS ((PTR, debug_type, debug_type));
 | 
						|
 | 
						|
/* Make a type for a method function.  The second argument is the
 | 
						|
   return type.  The third argument is the domain.  The fourth
 | 
						|
   argument is a NULL terminated array of argument types.  The fifth
 | 
						|
   argument is true if the function takes a variable number of
 | 
						|
   arguments, in which case the array of argument types indicates the
 | 
						|
   types of the first arguments.  The domain and the argument array
 | 
						|
   may be NULL, in which case this is a stub method and that
 | 
						|
   information is not available.  Stabs debugging uses this, and gets
 | 
						|
   the argument types from the mangled name.  */
 | 
						|
 | 
						|
extern debug_type debug_make_method_type
 | 
						|
  PARAMS ((PTR, debug_type, debug_type, debug_type *, boolean));
 | 
						|
 | 
						|
/* Make a const qualified version of a given type.  */
 | 
						|
 | 
						|
extern debug_type debug_make_const_type PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Make a volatile qualified version of a given type.  */
 | 
						|
 | 
						|
extern debug_type debug_make_volatile_type PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Make an undefined tagged type.  For example, a struct which has
 | 
						|
   been mentioned, but not defined.  */
 | 
						|
 | 
						|
extern debug_type debug_make_undefined_tagged_type
 | 
						|
  PARAMS ((PTR, const char *, enum debug_type_kind));
 | 
						|
 | 
						|
/* Make a base class for an object.  The second argument is the base
 | 
						|
   class type.  The third argument is the bit position of this base
 | 
						|
   class in the object.  The fourth argument is whether this is a
 | 
						|
   virtual class.  The fifth argument is the visibility of the base
 | 
						|
   class.  */
 | 
						|
 | 
						|
extern debug_baseclass debug_make_baseclass
 | 
						|
  PARAMS ((PTR, debug_type, bfd_vma, boolean, enum debug_visibility));
 | 
						|
 | 
						|
/* Make a field for a struct.  The second argument is the name.  The
 | 
						|
   third argument is the type of the field.  The fourth argument is
 | 
						|
   the bit position of the field.  The fifth argument is the size of
 | 
						|
   the field (it may be zero).  The sixth argument is the visibility
 | 
						|
   of the field.  */
 | 
						|
 | 
						|
extern debug_field debug_make_field
 | 
						|
  PARAMS ((PTR, const char *, debug_type, bfd_vma, bfd_vma,
 | 
						|
	   enum debug_visibility));
 | 
						|
 | 
						|
/* Make a static member of an object.  The second argument is the
 | 
						|
   name.  The third argument is the type of the member.  The fourth
 | 
						|
   argument is the physical name of the member (i.e., the name as a
 | 
						|
   global variable).  The fifth argument is the visibility of the
 | 
						|
   member.  */
 | 
						|
 | 
						|
extern debug_field debug_make_static_member
 | 
						|
  PARAMS ((PTR, const char *, debug_type, const char *,
 | 
						|
	   enum debug_visibility));
 | 
						|
 | 
						|
/* Make a method.  The second argument is the name, and the third
 | 
						|
   argument is a NULL terminated array of method variants.  Each
 | 
						|
   method variant is a method with this name but with different
 | 
						|
   argument types.  */
 | 
						|
 | 
						|
extern debug_method debug_make_method
 | 
						|
  PARAMS ((PTR, const char *, debug_method_variant *));
 | 
						|
 | 
						|
/* Make a method variant.  The second argument is the physical name of
 | 
						|
   the function.  The third argument is the type of the function,
 | 
						|
   probably constructed by debug_make_method_type.  The fourth
 | 
						|
   argument is the visibility.  The fifth argument is whether this is
 | 
						|
   a const function.  The sixth argument is whether this is a volatile
 | 
						|
   function.  The seventh argument is the index in the virtual
 | 
						|
   function table, if any.  The eighth argument is the virtual
 | 
						|
   function context.  */
 | 
						|
 | 
						|
extern debug_method_variant debug_make_method_variant
 | 
						|
  PARAMS ((PTR, const char *, debug_type, enum debug_visibility, boolean,
 | 
						|
	   boolean, bfd_vma, debug_type));
 | 
						|
 | 
						|
/* Make a static method argument.  The arguments are the same as for
 | 
						|
   debug_make_method_variant, except that the last two are omitted
 | 
						|
   since a static method can not also be virtual.  */
 | 
						|
 | 
						|
extern debug_method_variant debug_make_static_method_variant
 | 
						|
  PARAMS ((PTR, const char *, debug_type, enum debug_visibility, boolean,
 | 
						|
	   boolean));
 | 
						|
 | 
						|
/* Name a type.  This returns a new type with an attached name.  */
 | 
						|
 | 
						|
extern debug_type debug_name_type PARAMS ((PTR, const char *, debug_type));
 | 
						|
 | 
						|
/* Give a tag to a type, such as a struct or union.  This returns a
 | 
						|
   new type with an attached tag.  */
 | 
						|
 | 
						|
extern debug_type debug_tag_type PARAMS ((PTR, const char *, debug_type));
 | 
						|
 | 
						|
/* Record the size of a given type.  */
 | 
						|
 | 
						|
extern boolean debug_record_type_size PARAMS ((PTR, debug_type, unsigned int));
 | 
						|
 | 
						|
/* Find a named type.  */
 | 
						|
 | 
						|
extern debug_type debug_find_named_type PARAMS ((PTR, const char *));
 | 
						|
 | 
						|
/* Find a tagged type.  */
 | 
						|
 | 
						|
extern debug_type debug_find_tagged_type
 | 
						|
  PARAMS ((PTR, const char *, enum debug_type_kind));
 | 
						|
 | 
						|
/* Get the kind of a type.  */
 | 
						|
 | 
						|
extern enum debug_type_kind debug_get_type_kind PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Get the name of a type.  */
 | 
						|
 | 
						|
extern const char *debug_get_type_name PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Get the size of a type.  */
 | 
						|
 | 
						|
extern bfd_vma debug_get_type_size PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Get the return type of a function or method type.  */
 | 
						|
 | 
						|
extern debug_type debug_get_return_type PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Get the NULL terminated array of parameter types for a function or
 | 
						|
   method type (actually, parameter types are not currently stored for
 | 
						|
   function types).  This may be used to determine whether a method
 | 
						|
   type is a stub method or not.  The last argument points to a
 | 
						|
   boolean which is set to true if the function takes a variable
 | 
						|
   number of arguments.  */
 | 
						|
 | 
						|
extern const debug_type *debug_get_parameter_types PARAMS ((PTR,
 | 
						|
							    debug_type,
 | 
						|
							    boolean *));
 | 
						|
 | 
						|
/* Get the target type of a pointer or reference or const or volatile
 | 
						|
   type.  */
 | 
						|
 | 
						|
extern debug_type debug_get_target_type PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Get the NULL terminated array of fields for a struct, union, or
 | 
						|
   class.  */
 | 
						|
 | 
						|
extern const debug_field *debug_get_fields PARAMS ((PTR, debug_type));
 | 
						|
 | 
						|
/* Get the type of a field.  */
 | 
						|
 | 
						|
extern debug_type debug_get_field_type PARAMS ((PTR, debug_field));
 | 
						|
 | 
						|
/* Get the name of a field.  */
 | 
						|
 | 
						|
extern const char *debug_get_field_name PARAMS ((PTR, debug_field));
 | 
						|
 | 
						|
/* Get the bit position of a field within the containing structure.
 | 
						|
   If the field is a static member, this will return (bfd_vma) -1.  */
 | 
						|
 | 
						|
extern bfd_vma debug_get_field_bitpos PARAMS ((PTR, debug_field));
 | 
						|
 | 
						|
/* Get the bit size of a field.  If the field is a static member, this
 | 
						|
   will return (bfd_vma) -1.  */
 | 
						|
 | 
						|
extern bfd_vma debug_get_field_bitsize PARAMS ((PTR, debug_field));
 | 
						|
 | 
						|
/* Get the visibility of a field.  */
 | 
						|
 | 
						|
extern enum debug_visibility debug_get_field_visibility
 | 
						|
  PARAMS ((PTR, debug_field));
 | 
						|
 | 
						|
/* Get the physical name of a field, if it is a static member.  If the
 | 
						|
   field is not a static member, this will return NULL.  */
 | 
						|
 | 
						|
extern const char *debug_get_field_physname PARAMS ((PTR, debug_field));
 | 
						|
 | 
						|
/* Write out the recorded debugging information.  This takes a set of
 | 
						|
   function pointers which are called to do the actual writing.  The
 | 
						|
   first PTR is the debugging handle.  The second PTR is a handle
 | 
						|
   which is passed to the functions.  */
 | 
						|
 | 
						|
extern boolean debug_write PARAMS ((PTR, const struct debug_write_fns *, PTR));
 | 
						|
 | 
						|
#endif /* DEBUG_H */
 |