Libdwarf annotations.
authorjbj <devnull@localhost>
Thu, 7 Nov 2002 13:13:41 +0000 (13:13 +0000)
committerjbj <devnull@localhost>
Thu, 7 Nov 2002 13:13:41 +0000 (13:13 +0000)
CVS patchset: 5832
CVS date: 2002/11/07 13:13:41

88 files changed:
elfutils/lib/dynamicsizehash.c
elfutils/lib/dynamicsizehash.h
elfutils/libdwarf/.splintrc [new file with mode: 0644]
elfutils/libdwarf/Makefile.am
elfutils/libdwarf/dwarf_arrayorder.c
elfutils/libdwarf/dwarf_attr.c
elfutils/libdwarf/dwarf_attrlist.c
elfutils/libdwarf/dwarf_bitoffset.c
elfutils/libdwarf/dwarf_bitsize.c
elfutils/libdwarf/dwarf_bytesize.c
elfutils/libdwarf/dwarf_child.c
elfutils/libdwarf/dwarf_dealloc.c
elfutils/libdwarf/dwarf_die_CU_offset.c
elfutils/libdwarf/dwarf_diename.c
elfutils/libdwarf/dwarf_dieoffset.c
elfutils/libdwarf/dwarf_elf_init.c
elfutils/libdwarf/dwarf_errmsg.c
elfutils/libdwarf/dwarf_find_macro_value_start.c
elfutils/libdwarf/dwarf_finish.c
elfutils/libdwarf/dwarf_formaddr.c
elfutils/libdwarf/dwarf_formblock.c
elfutils/libdwarf/dwarf_formflag.c
elfutils/libdwarf/dwarf_formref.c
elfutils/libdwarf/dwarf_formsdata.c
elfutils/libdwarf/dwarf_formstring.c
elfutils/libdwarf/dwarf_formudata.c
elfutils/libdwarf/dwarf_get_abbrev.c
elfutils/libdwarf/dwarf_get_abbrev_children_flag.c
elfutils/libdwarf/dwarf_get_abbrev_code.c
elfutils/libdwarf/dwarf_get_abbrev_entry.c
elfutils/libdwarf/dwarf_get_abbrev_tag.c
elfutils/libdwarf/dwarf_get_address_size.c
elfutils/libdwarf/dwarf_get_arange.c
elfutils/libdwarf/dwarf_get_arange_info.c
elfutils/libdwarf/dwarf_get_aranges.c
elfutils/libdwarf/dwarf_get_cie_info.c
elfutils/libdwarf/dwarf_get_cie_of_fde.c
elfutils/libdwarf/dwarf_get_cu_die_offset.c
elfutils/libdwarf/dwarf_get_elf.c
elfutils/libdwarf/dwarf_get_fde_at_pc.c
elfutils/libdwarf/dwarf_get_fde_instr_bytes.c
elfutils/libdwarf/dwarf_get_fde_list_eh.c
elfutils/libdwarf/dwarf_get_fde_n.c
elfutils/libdwarf/dwarf_get_fde_range.c
elfutils/libdwarf/dwarf_get_globals.c
elfutils/libdwarf/dwarf_get_loclist_entry.c
elfutils/libdwarf/dwarf_get_str.c
elfutils/libdwarf/dwarf_getabbrev.c
elfutils/libdwarf/dwarf_getconstant.c
elfutils/libdwarf/dwarf_global_cu_offset.c
elfutils/libdwarf/dwarf_global_die_offset.c
elfutils/libdwarf/dwarf_global_formref.c
elfutils/libdwarf/dwarf_global_name_offsets.c
elfutils/libdwarf/dwarf_globname.c
elfutils/libdwarf/dwarf_hasattr.c
elfutils/libdwarf/dwarf_hasform.c
elfutils/libdwarf/dwarf_highpc.c
elfutils/libdwarf/dwarf_init.c
elfutils/libdwarf/dwarf_lineaddr.c
elfutils/libdwarf/dwarf_linebeginstatement.c
elfutils/libdwarf/dwarf_lineblock.c
elfutils/libdwarf/dwarf_lineendsequence.c
elfutils/libdwarf/dwarf_lineepiloguebegin.c
elfutils/libdwarf/dwarf_lineno.c
elfutils/libdwarf/dwarf_lineoff.c
elfutils/libdwarf/dwarf_lineprologueend.c
elfutils/libdwarf/dwarf_linesrc.c
elfutils/libdwarf/dwarf_loclist.c
elfutils/libdwarf/dwarf_lowpc.c
elfutils/libdwarf/dwarf_next_cu_header.c
elfutils/libdwarf/dwarf_offdie.c
elfutils/libdwarf/dwarf_seterrarg.c
elfutils/libdwarf/dwarf_seterrhand.c
elfutils/libdwarf/dwarf_siblingof.c
elfutils/libdwarf/dwarf_srcfiles.c
elfutils/libdwarf/dwarf_srclang.c
elfutils/libdwarf/dwarf_srclines.c
elfutils/libdwarf/dwarf_tag.c
elfutils/libdwarf/dwarf_whatattr.c
elfutils/libdwarf/dwarf_whatform.c
elfutils/libdwarf/libdwarf.h
elfutils/libdwarf/libdwarfP.h
elfutils/libdwarf/memory-access.h
elfutils/libebl/Makefile.am
elfutils/libelf/.splintrc [new file with mode: 0644]
elfutils/libelf/Makefile.am
elfutils/libelf/libelf.h
elfutils/libltdl/Makefile.am

index 56b1fbc2b7da3a02e369328f49fdda8be76f696b..b3046b070fa4dc44b24aba6be1c4becf4c574266 100644 (file)
 
 
 static size_t
-lookup (htab, hval, val)
-     NAME *htab;
-     unsigned long int hval;
-     TYPE val;
+lookup (NAME *htab, unsigned long int hval, /*@null@*/ TYPE val)
+       /*@*/
 {
   /* First hash function: simply take the modul but prevent zero.  */
   size_t idx = 1 + hval % htab->size;
@@ -71,6 +69,7 @@ lookup (htab, hval, val)
 
 static void
 insert_entry_2 (NAME *htab, unsigned long int hval, size_t idx, TYPE data)
+       /*@modifies htab @*/
 {
 #ifdef ITERATE
   if (htab->table[idx].hashval == 0)
@@ -117,7 +116,7 @@ insert_entry_2 (NAME *htab, unsigned long int hval, size_t idx, TYPE data)
       first = htab->first;
       htab->first = NULL;
 #endif
-      htab->table = xcalloc ((1 + htab->size), sizeof (htab->table[0]));
+      htab->table = calloc ((1 + htab->size), sizeof (htab->table[0]));
       if (htab->table == NULL)
        {
          /* We cannot enlarge the table.  Live with what we got.  This
@@ -163,9 +162,7 @@ int
 #define INIT(name) _INIT (name)
 #define _INIT(name) \
   name##_init
-INIT(NAME) (htab, init_size)
-     NAME *htab;
-     unsigned long int init_size;
+INIT(NAME) (NAME *htab, unsigned long int init_size)
 {
   /* We need the size to be a prime.  */
   init_size = next_prime (init_size);
@@ -176,7 +173,7 @@ INIT(NAME) (htab, init_size)
 #ifdef ITERATE
   htab->first = NULL;
 #endif
-  htab->table = (void *) xcalloc ((init_size + 1), sizeof (htab->table[0]));
+  htab->table = (void *) calloc ((init_size + 1), sizeof (htab->table[0]));
   if (htab->table == NULL)
     return -1;
 
@@ -188,8 +185,7 @@ int
 #define FREE(name) _FREE (name)
 #define _FREE(name) \
   name##_free
-FREE(NAME) (htab)
-     NAME *htab;
+FREE(NAME) (NAME *htab)
 {
   free (htab->table);
   return 0;
@@ -200,15 +196,12 @@ int
 #define INSERT(name) _INSERT (name)
 #define _INSERT(name) \
   name##_insert
-INSERT(NAME) (htab, hval, data)
-     NAME *htab;
-     unsigned long int hval;
-     TYPE data;
+INSERT(NAME) (NAME *htab, unsigned long int hval, TYPE data)
 {
   size_t idx;
 
   /* Make the hash value nonzero.  */
-  hval = hval ?: 1;
+  hval = hval ? hval : 1;
 
   idx = lookup (htab, hval, data);
 
@@ -227,15 +220,12 @@ int
 #define INSERT(name) _INSERT (name)
 #define _INSERT(name) \
   name##_overwrite
-INSERT(NAME) (htab, hval, data)
-     NAME *htab;
-     unsigned long int hval;
-     TYPE data;
+INSERT(NAME) (NAME *htab, unsigned long int hval, TYPE data)
 {
   size_t idx;
 
   /* Make the hash value nonzero.  */
-  hval = hval ?: 1;
+  hval = hval ? hval : 1;
 
   idx = lookup (htab, hval, data);
 
@@ -250,15 +240,12 @@ TYPE
 #define FIND(name) _FIND (name)
 #define _FIND(name) \
   name##_find
-FIND(NAME) (htab, hval, val)
-     NAME *htab;
-     unsigned long int hval;
-     TYPE val;
+FIND(NAME) (NAME *htab, unsigned long int hval, TYPE val)
 {
   size_t idx;
 
   /* Make the hash value nonzero.  */
-  hval = hval ?: 1;
+  hval = hval ? hval : 1;
 
   idx = lookup (htab, hval, val);
 
@@ -274,9 +261,7 @@ FIND(NAME) (htab, hval, val)
 # define _ITERATEFCT(name) \
   name##_iterate
 TYPE
-ITERATEFCT(NAME) (htab, ptr)
-     NAME *htab;
-     void **ptr;
+ITERATEFCT(NAME) (NAME *htab, void **ptr)
 {
 # define TYPENAME(name) _TYPENAME (name)
 # define _TYPENAME(name) \
index 8fdf3fa955bf2dbf0fc196a448020a5239e41831..f96daa330e382d1168f2a436d1edea7c2d0fb59a 100644 (file)
@@ -70,19 +70,25 @@ DYNHASHTYPE (NAME);
 
 #define _FUNCTIONS(name) \
 /* Initialize the hash table.  */                                            \
-extern int name##_init (name *htab, unsigned long int init_size);            \
+extern int name##_init (name *htab, unsigned long int init_size)             \
+       /*@modifies htab @*/;                                                 \
                                                                              \
 /* Free resources allocated for hash table.  */                                      \
-extern int name##_free (name *htab);                                         \
+extern int name##_free (name *htab)                                          \
+       /*@modifies htab @*/;                                                 \
                                                                              \
 /* Insert new entry.  */                                                     \
-extern int name##_insert (name *htab, unsigned long int hval, TYPE data);     \
+extern int name##_insert (name *htab, unsigned long int hval, /*@null@*/ TYPE data) \
+       /*@modifies htab @*/;                                                 \
                                                                              \
 /* Insert new entry, possibly overwrite old entry.  */                       \
-extern int name##_overwrite (name *htab, unsigned long int hval, TYPE data);  \
+extern int name##_overwrite (name *htab, unsigned long int hval, TYPE data)   \
+       /*@*/;                                                                \
                                                                              \
 /* Find entry in hash table.  */                                             \
-extern TYPE name##_find (name *htab, unsigned long int hval, TYPE val);
+/*@null@*/                                                                   \
+extern TYPE name##_find (name *htab, unsigned long int hval, /*@null@*/ TYPE val) \
+       /*@*/;
 #define FUNCTIONS(name) _FUNCTIONS (name)
 FUNCTIONS (NAME)
 
@@ -90,7 +96,8 @@ FUNCTIONS (NAME)
 #ifdef ITERATE
 # define _XFUNCTIONS(name) \
 /* Get next element in table.  */                                            \
-extern TYPE name##_iterate (name *htab, void **ptr);
+extern TYPE name##_iterate (name *htab, void **ptr)                          \
+       /*@*/;
 # define XFUNCTIONS(name) _XFUNCTIONS (name)
 XFUNCTIONS (NAME)
 #endif
diff --git a/elfutils/libdwarf/.splintrc b/elfutils/libdwarf/.splintrc
new file mode 100644 (file)
index 0000000..8bf9330
--- /dev/null
@@ -0,0 +1,91 @@
+-D__GNUC__
+
++partial
++forcehints
+
+-warnunixlib
+-warnposix
+
+#+unixlib
++posixlib
+
++strict                        # lclint level
+
+# --- in progress
+-branchstate
+-compdef
+#-compmempass
+-internalglobs
+-modobserveruncon
+-moduncon              # 1 dgettext
+-noeffectuncon         # 1 dbg->dbg_errhand
+-nullderef             # 15
+-nullpass              # 1 faux
+-nullstate             # 12
+-paramuse
+-protoparammatch
+-redef
+-retalias              # 4
+-retvalint
+-shadow                        # 3
+-sysunrecog
+-unrecog
+-usereleased
+
+-dependenttrans
+-immediatetrans
+-kepttrans
+-observertrans
+-onlytrans
+-readonlytrans
+-statictrans
+-temptrans
+-unqualifiedtrans
+
+-looploopbreak
+-loopswitchbreak
+-sizeoftype
+
+# --- +partial artifacts
+-declundef
+-exportheader
+-exportheadervar
+-exportlocal
+
+-enummemuse
+-fcnuse
+-typeuse
+-varuse
+
+# --- not-yet at strict level
+-bitwisesigned
+-elseifcomplete
+-exportconst
+-exportfcn
+-exporttype
+-exportvar
+-fielduse
+-forblock               # tedious
+-ifblock                # tedious
+-namechecks             # tedious ANSI compliance checks
+-ptrarith               # tedious
+
+-compdestroy
+-mustdefine
+-sys-dir-errors
+
+-strictops
+-whileblock             # tedious
+
+# --- not-yet at checks level
++enumint
+-mustfree
+-predboolptr
+-usedef
+
+# --- not-yet at standard level
+-boolops
++boolint
++charint
++ignorequals
++matchanyintegral
index 024f2d18984644f3dd46bab1d5da0faeb7538dae..f899b860e132450e3cee4c1fc0cb058945e5cee3 100644 (file)
@@ -20,6 +20,8 @@ DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DDWARF_DEBUG
 AM_CFLAGS = -Wall -Werror
 INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib
 
+LINT = splint
+
 #lib_LTLIBRARIES = libdwarf.la
 noinst_LTLIBRARIES = libdwarf.la
 
@@ -74,3 +76,9 @@ EXTRA_DIST = AVAILABLE libdwarf.map
 libdwarf_la_LDFLAGS = -Wl,--version-script,$(srcdir)/libdwarf.map
 libdwarf_la_LIBADD = ../lib/libeu.la ../libelf/libelf.la
 libdwarf_la_DEPENDENCIES = $(libdwarf_la_LIBADD) libdwarf.map
+
+.PSEUDO: lint
+lint:
+       $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) \
+               $(addprefix $(srcdir)/,$(libdwarf_la_SOURCES))
+
index 43315f95f397dde88dd0591145a3044216fd153d..5f5a5de8d769654bbf1cb394a68e46dbd692ac4b 100644 (file)
 
 
 int
-dwarf_arrayorder (die, return_order, error)
-     Dwarf_Die die;
-     Dwarf_Unsigned *return_order;
-     Dwarf_Error *error;
+dwarf_arrayorder (Dwarf_Die die, Dwarf_Unsigned *return_order,
+               Dwarf_Error *error)
 {
   return __libdwarf_getconstant (die, DW_AT_ordering, return_order, error);
 }
index 1a5a232e0012469d3670a4a39cef574a5a49d4ba..7ee53b876977114d5a5ca426924f254ec88cc37a 100644 (file)
 
 
 int
-dwarf_attr (die, attr, return_attr, error)
-     Dwarf_Die die;
-     Dwarf_Half attr;
-     Dwarf_Attribute *return_attr;
-     Dwarf_Error *error;
+dwarf_attr (Dwarf_Die die, Dwarf_Half attr, Dwarf_Attribute *return_attr,
+               Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
index 4b79e28b6d5d2c1c2096e58337c6665929082358..425ccace597ef71dac8450fcc447d72dfc16c826 100644 (file)
@@ -32,11 +32,8 @@ struct attrlist
 
 
 int
-dwarf_attrlist (die, attrbuf, attrcount, error)
-     Dwarf_Die die;
-     Dwarf_Attribute **attrbuf;
-     Dwarf_Signed *attrcount;
-     Dwarf_Error *error;
+dwarf_attrlist (Dwarf_Die die, Dwarf_Attribute **attrbuf,
+               Dwarf_Signed *attrcount, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
@@ -149,7 +146,11 @@ dwarf_attrlist (die, attrbuf, attrcount, error)
     }
 
   if (nattr == 0)
-    return DW_DLV_NO_ENTRY;
+    {
+      *attrcount = 0;
+      *attrbuf = NULL;
+      return DW_DLV_NO_ENTRY;
+    }
 
   /* Allocate the array for the result.  */
   result = (Dwarf_Attribute *) malloc (nattr * sizeof (Dwarf_Attribute));
index cfa97a724806db279f34a52b7c0353e7b8563021..e0da982b644c5ba876e0b1ff1d654b3700e197f0 100644 (file)
 
 
 int
-dwarf_bitoffset (die, return_size, error)
-     Dwarf_Die die;
-     Dwarf_Unsigned *return_size;
-     Dwarf_Error *error;
+dwarf_bitoffset (Dwarf_Die die, Dwarf_Unsigned *return_size,
+               Dwarf_Error *error)
 {
   return __libdwarf_getconstant (die, DW_AT_bit_offset, return_size, error);
 }
index 7823d7ca96b07165c9a1c55cd59649dcc7d49ac2..8ea0d1cb9496e7030f4b7381cf24e07b8869e78e 100644 (file)
 
 
 int
-dwarf_bitsize (die, return_size, error)
-     Dwarf_Die die;
-     Dwarf_Unsigned *return_size;
-     Dwarf_Error *error;
+dwarf_bitsize (Dwarf_Die die, Dwarf_Unsigned *return_size, Dwarf_Error *error)
 {
   return __libdwarf_getconstant (die, DW_AT_bit_size, return_size, error);
 }
index f1f59adb588070e693c580d8112e5f1a485187ea..21d60b429db1f2045fd53bb25fe98af72f75512e 100644 (file)
 
 
 int
-dwarf_bytesize (die, return_size, error)
-     Dwarf_Die die;
-     Dwarf_Unsigned *return_size;
-     Dwarf_Error *error;
+dwarf_bytesize (Dwarf_Die die, Dwarf_Unsigned *return_size, Dwarf_Error *error)
 {
   return __libdwarf_getconstant (die, DW_AT_byte_size, return_size, error);
 }
index d68193bd832a1c19beeabf9540a2693a1eb710f0..769d43acae78ae2036f3f6e1cb59db5e9f0bba48 100644 (file)
 
 
 int
-dwarf_child (die, return_kid, error)
-     Dwarf_Die die;
-     Dwarf_Die *return_kid;
-     Dwarf_Error *error;
+dwarf_child (Dwarf_Die die, Dwarf_Die *return_kid, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Abbrev abbrev;
index 87d7003b0d1a3db04424c831b85122c969e49d0d..4cb4f4663a65f591dcd61f9aff2e3662e4c5aa25 100644 (file)
 
 
 void
-dwarf_dealloc (dbg, space, alloc_type)
-     Dwarf_Debug dbg;
-     Dwarf_Ptr space;
-     Dwarf_Unsigned alloc_type;
+dwarf_dealloc (Dwarf_Debug dbg, Dwarf_Ptr space, Dwarf_Unsigned alloc_type)
 {
   /* XXX For now we don't do anything fancy.  */
   free (space);
index c3f3d0466b4a1e5933f6f2dbfa61a72bdc33923a..c4fbbb5839148f5423916f1c5bbc8e38a35337e5 100644 (file)
 
 
 int
-dwarf_die_CU_offset (die, return_offset, error)
-     Dwarf_Die die;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_die_CU_offset (Dwarf_Die die, Dwarf_Off *return_offset,
+               Dwarf_Error *error)
 {
   *return_offset =
     (die->addr
index 0d4c3d0e408ccb94cf2d93aae9dfe2a12c9bccfd..7d402ed6988996e1598d64f3123697b57678ea00 100644 (file)
 
 
 int
-dwarf_diename (die, return_name, error)
-     Dwarf_Die die;
-     char **return_name;
-     Dwarf_Error *error;
+dwarf_diename (Dwarf_Die die, char **return_name, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
index 9d75f4f49ae234dfce7a0d24e578f07495664f64..30984406252c18d05595d81c3ca7b5add68ed228 100644 (file)
 
 
 int
-dwarf_dieoffset (die, return_offset, error)
-     Dwarf_Die die;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_dieoffset (Dwarf_Die die, Dwarf_Off *return_offset, Dwarf_Error *error)
 {
   *return_offset =
     (die->addr - (Dwarf_Small *) die->cu->dbg->sections[IDX_debug_info].addr);
index 70113bd302874cce404f9943a39c94359e6e84b0..cf175af8a24c40076c152095c4475f9f68c56120 100644 (file)
@@ -29,6 +29,7 @@
 
 
 /* Section names.  */
+/*@unchecked@*/
 static const char dwarf_scnnames[IDX_last][17] =
 {
   [IDX_debug_info] = ".debug_info",
@@ -50,13 +51,8 @@ static const char dwarf_scnnames[IDX_last][17] =
 
 
 int
-dwarf_elf_init (elf, access, errhand, errarg, dbg, error)
-     Elf *elf;
-     Dwarf_Unsigned access;
-     Dwarf_Handler errhand;
-     Dwarf_Ptr errarg;
-     Dwarf_Debug *dbg;
-     Dwarf_Error *error;
+dwarf_elf_init (Elf *elf, Dwarf_Unsigned access, Dwarf_Handler errhand,
+               Dwarf_Ptr errarg, Dwarf_Debug *dbg, Dwarf_Error *error)
 {
   int result = DW_DLV_ERROR;
   Dwarf_Debug newdbg;
index df802c5afb86f56bc90b7ff77ee75d1312ca2165..51e6a2f8368b3171eb2e59d161a4957b0e3dc5bc 100644 (file)
@@ -25,6 +25,7 @@
 /* Map error values to strings.  */
 /* XXX This table should avoid string pointers.  Fixing it can wait
    until the code is stable.  */
+/*@unchecked@*/
 static const char *msgs[] =
 {
   [DW_E_NOERROR] = N_("no error"),
@@ -53,6 +54,7 @@ static const char *msgs[] =
   [DW_E_VERSION_ERROR] = N_("version mismatch"),
   [DW_E_INVALID_DIR_IDX] = N_("invalid directory index"),
   [DW_E_INVALID_ADDR] = N_("invalid address"),
+  [DW_E_NO_ABBR] = N_("no valid abbreviation"),
 };
 #define nmsgs (sizeof (msgs) / sizeof (msgs[0]))
 
index f21ad7d77123cf2b790152142633cc7f392ac3ce..e9102d1104833dfb21ef82c37be09499986ec36d 100644 (file)
@@ -23,8 +23,7 @@
 
 
 char *
-dwarf_find_macro_value_start (macro_string)
-     char *macro_string;
+dwarf_find_macro_value_start (char *macro_string)
 {
   int with_paren = 0;
 
index a08b118491a974029fc72c37bafb9b164c8b3d56..be912baba4e39005d1fa71bca0be640bad1f6a03 100644 (file)
@@ -25,9 +25,7 @@
 
 
 int
-dwarf_finish (dbg, error)
-     Dwarf_Debug dbg;
-     Dwarf_Error *error;
+dwarf_finish (Dwarf_Debug dbg, Dwarf_Error *error)
 {
   if (dbg == NULL)
     return DW_DLV_ERROR;
index 59858850a57289c6c0cd3f4b285db03749c5219e..147fd0cb0fcde8dc9639cdb6c373942defe7e0e3 100644 (file)
 
 
 int
-dwarf_formaddr (attr, return_addr, error)
-     Dwarf_Attribute attr;
-     Dwarf_Addr *return_addr;
-     Dwarf_Error *error;
+dwarf_formaddr (Dwarf_Attribute attr, Dwarf_Addr *return_addr,
+               Dwarf_Error *error)
 {
   if (unlikely (attr->form != DW_FORM_addr))
     {
index c7d57927dc956ee1a61467975d4e5f396d3670c3..8da1b38445274720eda201e4bfc2f2c5f54f8e68 100644 (file)
 
 
 int
-dwarf_formblock (attr, return_block, error)
-     Dwarf_Attribute attr;
-     Dwarf_Block **return_block;
-     Dwarf_Error *error;
+dwarf_formblock (Dwarf_Attribute attr, Dwarf_Block **return_block,
+               Dwarf_Error *error)
 {
   Dwarf_Small *attrp = attr->valp;
   Dwarf_Unsigned len;
index eabdd34d3f410d4bcf5308dfbeb80e73c1d6dd24..4d1d300fe650a7435e7eb5cb3d427db85ef93f8c 100644 (file)
 
 
 int
-dwarf_formflag (attr, return_bool, error)
-     Dwarf_Attribute attr;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_formflag (Dwarf_Attribute attr, Dwarf_Bool *return_bool,
+               Dwarf_Error *error)
 {
   if (unlikely (attr->form != DW_FORM_flag))
     {
index cde8383b4c37a62a332d7bc9399c02d48f5e82a4..ec06dd3b63dc20dac53f549c8c81d57655741e35 100644 (file)
 
 
 int
-dwarf_formref (attr, return_offset, error)
-     Dwarf_Attribute attr;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_formref (Dwarf_Attribute attr, Dwarf_Off *return_offset,
+               Dwarf_Error *error)
 {
-  switch (attr->code)
+  switch (attr->form)
     {
     case DW_FORM_ref1:
       *return_offset = *attr->valp;
index 41db0446fef8c60b99d8405b31a6e365305546ac..db2f18e591e837e0704b681515dd2dbc3ce10b7a 100644 (file)
 
 
 int
-dwarf_formsdata (attr, return_sval, error)
-     Dwarf_Attribute attr;
-     Dwarf_Signed *return_sval;
-     Dwarf_Error *error;
+dwarf_formsdata (Dwarf_Attribute attr, Dwarf_Signed *return_sval,
+               Dwarf_Error *error)
 {
   Dwarf_Signed u128;
 
index 60da53a8e992921151e11cce4d3fbf174f0e5f10..93055ede66accb138413f2ef6e92cad71a903749 100644 (file)
 
 
 int
-dwarf_formstring (attr, return_string, error)
-     Dwarf_Attribute attr;
-     char **return_string;
-     Dwarf_Error *error;
+dwarf_formstring (Dwarf_Attribute attr, char **return_string,
+               Dwarf_Error *error)
 {
   char *result;
 
index af43425cbe36d4db6607e216c7d1c1618e91560a..5263662a54ec0829e193946d0762a19cc84f7404 100644 (file)
 
 
 int
-dwarf_formudata (attr, return_uval, error)
-     Dwarf_Attribute attr;
-     Dwarf_Unsigned *return_uval;
-     Dwarf_Error *error;
+dwarf_formudata (Dwarf_Attribute attr, Dwarf_Unsigned *return_uval,
+               Dwarf_Error *error)
 {
   Dwarf_Unsigned u128;
 
index 39c6965ff589dbe2839ee916860bf5938c69a834..be809b659c36a91f388dcc20ebccb4bf1a51ef74 100644 (file)
 
 
 int
-dwarf_get_abbrev (dbg, offset, return_abbrev, length, attr_count, error)
-     Dwarf_Debug dbg;
-     Dwarf_Unsigned offset;
-     Dwarf_Abbrev *return_abbrev;
-     Dwarf_Unsigned *length;
-     Dwarf_Unsigned *attr_count;
-     Dwarf_Error *error;
+dwarf_get_abbrev (Dwarf_Debug dbg, Dwarf_Unsigned offset,
+               Dwarf_Abbrev *return_abbrev, Dwarf_Unsigned *length,
+               Dwarf_Unsigned *attr_count, Dwarf_Error *error)
 {
   Dwarf_Abbrev ent;
   Dwarf_Small *abbrevp;
index f4bfd383df550ca2bbf4a31227202edd11706c05..c3cfcb4ed57c909fd0d7aa58894f5602821718ac 100644 (file)
 #include "libdwarfP.h"
 
 
-int dwarf_get_abbrev_children_flag (abbrev, return_flag, error)
-     Dwarf_Abbrev abbrev;
-     Dwarf_Signed *return_flag;
-     Dwarf_Error *error;
+int dwarf_get_abbrev_children_flag (Dwarf_Abbrev abbrev,
+               Dwarf_Signed *return_flag, Dwarf_Error *error)
 {
   *return_flag = abbrev->has_children;
   return DW_DLV_OK;
index adc538483f7a77a4b2c3d6cde94b3fc1a9a544a7..a5d66eb7e096308de4c4b52800aafa95f69ef335 100644 (file)
 #include "libdwarfP.h"
 
 
-int dwarf_get_abbrev_code (abbrev, return_code, error)
-     Dwarf_Abbrev abbrev;
-     Dwarf_Unsigned *return_code;
-     Dwarf_Error *error;
+int dwarf_get_abbrev_code (Dwarf_Abbrev abbrev, Dwarf_Unsigned *return_code,
+               Dwarf_Error *error)
 {
   *return_code = abbrev->code;
   return DW_DLV_OK;
index 0fb656787ccb83c31c4e4ed3749262137ec90101..c392a0720bf333fdf78bc5a95d52f49f4715fb04 100644 (file)
 
 
 int
-dwarf_get_abbrev_entry (abbrev, idx, attr_num, form, offset, error)
-     Dwarf_Abbrev abbrev;
-     Dwarf_Signed idx;
-     Dwarf_Half *attr_num;
-     Dwarf_Signed *form;
-     Dwarf_Off *offset;
-     Dwarf_Error *error;
+dwarf_get_abbrev_entry (Dwarf_Abbrev abbrev, Dwarf_Signed idx,
+               Dwarf_Half *attr_num, Dwarf_Signed *form, Dwarf_Off *offset,
+               Dwarf_Error *error)
 {
   Dwarf_Small *attrp;
   Dwarf_Small *start_attrp;
index 1743336998c528dca6c48fb823e1cad367f5a029..81aa5055ec4f76b57dadc27b87b8ef6237c19cdc 100644 (file)
 #include "libdwarfP.h"
 
 
-int dwarf_get_abbrev_tag (abbrev, return_tag, error)
-     Dwarf_Abbrev abbrev;
-     Dwarf_Half *return_tag;
-     Dwarf_Error *error;
+int dwarf_get_abbrev_tag (Dwarf_Abbrev abbrev, Dwarf_Half *return_tag,
+               Dwarf_Error *error)
 {
   *return_tag = abbrev->tag;
   return DW_DLV_OK;
index 8eadbcd63af6a44e90153bac6de1320f2cdee142..4f681d377e4c324e84c47c80dd2a4c31f78f1584 100644 (file)
 
 
 int
-dwarf_get_address_size (dbg, addr_size, error)
-     Dwarf_Debug dbg;
-     Dwarf_Half *addr_size;
-     Dwarf_Error *error;
+dwarf_get_address_size (Dwarf_Debug dbg, Dwarf_Half *addr_size,
+               Dwarf_Error *error)
 {
   *addr_size = elf_getident (dbg->elf, NULL)[EI_CLASS] == ELFCLASS64 ? 8 : 4;
   return DW_DLV_OK;
index e6dc634d7190bb0ad25fa41f358a33b09402bee9..79605e17bf262d23aa51ca47497781a7ec479992 100644 (file)
 
 
 int
-dwarf_get_arange (aranges, arange_count, address, return_arange, error)
-     Dwarf_Arange *aranges;
-     Dwarf_Unsigned arange_count;
-     Dwarf_Addr address;
-     Dwarf_Arange *return_arange;
-     Dwarf_Error *error;
+dwarf_get_arange (Dwarf_Arange *aranges, Dwarf_Unsigned arange_count,
+               Dwarf_Addr address, Dwarf_Arange *return_arange,
+               Dwarf_Error *error)
 {
   Dwarf_Unsigned cnt;
 
index d562c20527954b9483c74596c074b16a6a8283b3..2b9360cc901382b5351431a2d41a1edcc5b33bf3 100644 (file)
 
 
 int
-dwarf_get_arange_info (arange, start, length, cu_die_offset, error)
-     Dwarf_Arange arange;
-     Dwarf_Addr *start;
-     Dwarf_Unsigned *length;
-     Dwarf_Off *cu_die_offset;
-     Dwarf_Error *error;
+dwarf_get_arange_info (Dwarf_Arange arange, Dwarf_Addr *start,
+               Dwarf_Unsigned *length, Dwarf_Off *cu_die_offset,
+               Dwarf_Error *error)
 {
   Dwarf_Small *cu_header;
   unsigned int offset_size;
index dc40ee6f752145fc442f94751530b87a20f4080a..ea0efec28af560303b9b41995e96b0f672dedba4 100644 (file)
@@ -32,11 +32,8 @@ struct arangelist
 
 
 int
-dwarf_get_aranges (dbg, aranges, return_count, error)
-     Dwarf_Debug dbg;
-     Dwarf_Arange **aranges;
-     Dwarf_Signed *return_count;
-     Dwarf_Error *error;
+dwarf_get_aranges (Dwarf_Debug dbg, Dwarf_Arange **aranges,
+               Dwarf_Signed *return_count, Dwarf_Error *error)
 {
   Dwarf_Small *readp;
   Dwarf_Small *readendp;
index 060f207788b1065d3b2f07dea68f4d4fa7fd5f52..7ca67ba1b84d5e15fa1440cf623390771df9cbb7 100644 (file)
 
 
 int
-dwarf_get_cie_info (cie, bytes_in_cie, version, augmenter,
-                   code_alignment_factor, data_alignment_factor,
-                   return_address_register, initial_instructions,
-                   initial_instructions_length, error)
-     Dwarf_Cie cie;
-     Dwarf_Unsigned *bytes_in_cie;
-     Dwarf_Small *version;
-     char **augmenter;
-     Dwarf_Unsigned *code_alignment_factor;
-     Dwarf_Signed *data_alignment_factor;
-     Dwarf_Half *return_address_register;
-     Dwarf_Ptr *initial_instructions;
-     Dwarf_Unsigned *initial_instructions_length;
-     Dwarf_Error *error;
+dwarf_get_cie_info (Dwarf_Cie cie, Dwarf_Unsigned *bytes_in_cie,
+               Dwarf_Small *version, char **augmenter,
+               Dwarf_Unsigned *code_alignment_factor,
+               Dwarf_Signed *data_alignment_factor,
+               Dwarf_Half *return_address_register,
+               Dwarf_Ptr *initial_instructions,
+               Dwarf_Unsigned *initial_instructions_length,
+               Dwarf_Error *error)
 {
   *bytes_in_cie = cie->length;
 
index 9aa5d8d5857c33b77bcd5cd94cd1015a76b10fd4..315bc7f27fda00f565923b4db7a5ecda2bba5c98 100644 (file)
 
 
 int
-dwarf_get_cie_of_fde (fde, return_cie, error)
-     Dwarf_Fde fde;
-     Dwarf_Cie *return_cie;
-     Dwarf_Error *error;
+dwarf_get_cie_of_fde (Dwarf_Fde fde, Dwarf_Cie *return_cie, Dwarf_Error *error)
 {
   *return_cie = fde->cie;
   return DW_DLV_OK;
index 9777efdd1a45a9e06ca72369be9e84c34f6713b6..23882d054215ae93d3d5e9aa22f8ab79ec9157e0 100644 (file)
 
 
 int
-dwarf_get_cu_die_offset (arange, return_offset, error)
-     Dwarf_Arange arange;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_get_cu_die_offset (Dwarf_Arange arange, Dwarf_Off *return_offset,
+               Dwarf_Error *error)
 {
   Dwarf_Small *cu_header;
   unsigned int offset_size;
index 9fe0d5528557fe81c0b7cc39dba180a61538d2af..1339e1f7e3b323a1d2e6597337f375a036d34a07 100644 (file)
 
 
 int
-dwarf_get_elf_init (dbg, elf, error)
-     Dwarf_Debug dbg;
-     Elf **elf;
-     Dwarf_Error *error;
+dwarf_get_elf_init (Dwarf_Debug dbg, Elf **elf, Dwarf_Error *error)
 {
   if (dbg == NULL)
     return DW_DLV_ERROR;
index 0cf0cd1e6a6120560147b7dc0077d24f079f1eb9..182ef905028c1c6977644c311d9bc808c1a5a0d0 100644 (file)
 
 
 int
-dwarf_get_fde_at_pc (fde_data, pc_of_interest, returned_fde, lopc, hipc, error)
-     Dwarf_Fde *fde_data;
-     Dwarf_Addr pc_of_interest;
-     Dwarf_Fde *returned_fde;
-     Dwarf_Addr *lopc;
-     Dwarf_Addr *hipc;
-     Dwarf_Error *error;
+dwarf_get_fde_at_pc (Dwarf_Fde *fde_data, Dwarf_Addr pc_of_interest,
+               Dwarf_Fde *returned_fde, Dwarf_Addr *lopc, Dwarf_Addr *hipc,
+               Dwarf_Error *error)
 {
   Dwarf_Debug dbg = fde_data[0]->cie->dbg;
   int low = 0;
index 981abdf524af298f11c9ac06678bae7b11112b27..003d9c9ba265709b37da0430331e282ee7abee15 100644 (file)
 
 
 int
-dwarf_get_fde_instr_bytes (fde, outinstrs, outlen, error)
-     Dwarf_Fde fde;
-     Dwarf_Ptr *outinstrs;
-     Dwarf_Unsigned *outlen;
-     Dwarf_Error *error;
+dwarf_get_fde_instr_bytes (Dwarf_Fde fde, Dwarf_Ptr *outinstrs,
+               Dwarf_Unsigned *outlen, Dwarf_Error *error)
 {
   *outinstrs = fde->instructions;
   *outlen = fde->instructions_length;
index 480fa6989f994a4ed35e2831236852d91c531fd8..53307370c0e76ade6e5e029ececb0ec05aaaef59 100644 (file)
@@ -41,14 +41,9 @@ struct fdelist
 
 
 int
-dwarf_get_fde_list_eh (dbg, cie_data, cie_element_count, fde_data,
-                      fde_element_count, error)
-     Dwarf_Debug dbg;
-     Dwarf_Cie **cie_data;
-     Dwarf_Signed *cie_element_count;
-     Dwarf_Fde **fde_data;
-     Dwarf_Signed *fde_element_count;
-     Dwarf_Error *error;
+dwarf_get_fde_list_eh (Dwarf_Debug dbg, Dwarf_Cie **cie_data,
+               Dwarf_Signed *cie_element_count, Dwarf_Fde **fde_data,
+               Dwarf_Signed *fde_element_count, Dwarf_Error *error)
 {
   Dwarf_Small *readp;
   Dwarf_Small *readendp;
index 8c8b27dfdc7624f539e7930b44fbe04618b7cac8..6d2ff8dc00e15999802b5bd4384a7222ac4bd8af 100644 (file)
 
 
 int
-dwarf_get_fde_n (fde_data, fde_index, returned_fde, error)
-     Dwarf_Fde *fde_data;
-     Dwarf_Unsigned fde_index;
-     Dwarf_Fde *returned_fde;
-     Dwarf_Error *error;
+dwarf_get_fde_n (Dwarf_Fde *fde_data, Dwarf_Unsigned fde_index,
+               Dwarf_Fde *returned_fde, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = fde_data[0]->cie->dbg;
 
index 6567c0294dcaa07e14ac503386d83632906634e8..a31b63f8ba59cb33b96d9883acc190acf6cb3216 100644 (file)
 
 
 int
-dwarf_get_fde_range (fde, low_pc, func_length, fde_bytes, fde_byte_length,
-                    cie_offset, cie_index, fde_offset, error)
-     Dwarf_Fde fde;
-     Dwarf_Addr *low_pc;
-     Dwarf_Unsigned *func_length;
-     Dwarf_Ptr *fde_bytes;
-     Dwarf_Unsigned *fde_byte_length;
-     Dwarf_Off *cie_offset;
-     Dwarf_Signed *cie_index;
-     Dwarf_Off *fde_offset;
-     Dwarf_Error *error;
+dwarf_get_fde_range (Dwarf_Fde fde, Dwarf_Addr *low_pc,
+               Dwarf_Unsigned *func_length, Dwarf_Ptr *fde_bytes,
+               Dwarf_Unsigned *fde_byte_length, Dwarf_Off *cie_offset,
+               Dwarf_Signed *cie_index, Dwarf_Off *fde_offset,
+               Dwarf_Error *error)
 {
   *low_pc = fde->initial_location;
   *func_length = fde->address_range;
index 03a7d2f4693e393194d69abb3d0d1df933ab8730..6630c34babf6b56e6143ca0f94a5712564d56d62 100644 (file)
@@ -34,11 +34,8 @@ struct globallist
 
 /* Read the whole given section.  */
 int
-dwarf_get_globals (dbg, globals, return_count, error)
-     Dwarf_Debug dbg;
-     Dwarf_Global **globals;
-     Dwarf_Signed *return_count;
-     Dwarf_Error *error;
+dwarf_get_globals (Dwarf_Debug dbg, Dwarf_Global **globals,
+               Dwarf_Signed *return_count, Dwarf_Error *error)
 {
   Dwarf_Small *readp;
   Dwarf_Small *readendp;
index a740bbadbcfd2b80562a876b1ae41c81279f2caf..5634824f46910dccdf2807bd4a50bb76148ef7a6 100644 (file)
 
 
 int
-dwarf_get_loclist_entry (dbg, offset, hipc_offset, lopc_offset, data,
-                        entry_len, next_entry, error)
-     Dwarf_Debug dbg;
-     Dwarf_Unsigned offset;
-     Dwarf_Addr *hipc_offset;
-     Dwarf_Addr *lopc_offset;
-     Dwarf_Ptr *data;
-     Dwarf_Unsigned *entry_len;
-     Dwarf_Unsigned *next_entry;
-     Dwarf_Error *error;
+dwarf_get_loclist_entry (Dwarf_Debug dbg, Dwarf_Unsigned offset,
+               Dwarf_Addr *hipc_offset, Dwarf_Addr *lopc_offset,
+               Dwarf_Ptr *data, Dwarf_Unsigned *entry_len,
+               Dwarf_Unsigned *next_entry, Dwarf_Error *error)
 {
   Dwarf_Small *locp;
 
index fbef43d5516707749bf89113b44da104d2888f92..20741448be427033e17383dc7ce9a5d71f32bd9d 100644 (file)
 
 
 int
-dwarf_get_str (dbg, offset, string, returned_str_len, error)
-     Dwarf_Debug dbg;
-     Dwarf_Off offset;
-     char **string;
-     Dwarf_Signed *returned_str_len;
-     Dwarf_Error *error;
+dwarf_get_str (Dwarf_Debug dbg, Dwarf_Off offset, char **string,
+               Dwarf_Signed *returned_str_len, Dwarf_Error *error)
 {
   *string = (char *) dbg->sections[IDX_debug_str].addr;
   if (*string == NULL)
index 0d6efb85a957094ddd744c5a552e03780345721e..f946871e66ef584c92ce3c266c42a262225ab4eb 100644 (file)
 
 
 Dwarf_Abbrev
-__libdwarf_get_abbrev (dbg, cu, code, error)
-     Dwarf_Debug dbg;
-     Dwarf_CU_Info cu;
-     Dwarf_Word code;
-     Dwarf_Error *error;
+internal_function
+__libdwarf_get_abbrev (Dwarf_Debug dbg, Dwarf_CU_Info cu, Dwarf_Word code,
+               Dwarf_Error *error)
 {
   Dwarf_Abbrev ent;
 
@@ -71,5 +69,6 @@ __libdwarf_get_abbrev (dbg, cu, code, error)
     }
 
   /* If we come here we haven't found anything.  */
+  __libdwarf_error (dbg, error, DW_E_NO_ABBR);
   return NULL;
 }
index e4aa8d11e73fd976111aa8525ad198a6586a2af7..3b266de0a51eff3b65f190cc653935c1a3044ff1 100644 (file)
 
 
 int
-__libdwarf_getconstant (die, name, return_size, error)
-     Dwarf_Die die;
-     Dwarf_Half name;
-     Dwarf_Unsigned *return_size;
-     Dwarf_Error *error;
+internal_function
+__libdwarf_getconstant (Dwarf_Die die, Dwarf_Half name,
+               Dwarf_Unsigned *return_size, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
index 40a55201c2a1d074f358baf6becd5af0a3e7dd22..13457735528f84e17535fde09046c0d22d9a2fbf 100644 (file)
 
 
 int
-dwarf_global_cu_offset (global, return_offset, error)
-     Dwarf_Global global;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_global_cu_offset (Dwarf_Global global, Dwarf_Off *return_offset,
+               Dwarf_Error *error)
 {
   Dwarf_Small *cu_header;
   unsigned int offset_size;
index afc28be17a8f6e9e2981244d76515bfd2e18bfd0..08699a3987d3a6a8100d329358aa08760221e8bc 100644 (file)
 
 
 int
-dwarf_global_die_offset (global, return_offset, error)
-     Dwarf_Global global;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_global_die_offset (Dwarf_Global global, Dwarf_Off *return_offset,
+               Dwarf_Error *error)
 {
   *return_offset = global->info->offset + global->offset;
 
index 962feb2a4960e4ca413fd896e34514ef9e782715..70bcc6ab977d1e5623265109bb76fc2569837902 100644 (file)
 
 
 int
-dwarf_global_formref (attr, return_offset, error)
-     Dwarf_Attribute attr;
-     Dwarf_Off *return_offset;
-     Dwarf_Error *error;
+dwarf_global_formref (Dwarf_Attribute attr, Dwarf_Off *return_offset,
+               Dwarf_Error *error)
 {
   switch (attr->form)
     {
index 4a3a691922aef34833e8ad5880475c9f90decf29..f39b72e51014fca113d516b0121cdb86054cd2f1 100644 (file)
 
 
 int
-dwarf_global_name_offsets (global, return_name, die_offset, cu_offset, error)
-     Dwarf_Global global;
-     char **return_name;
-     Dwarf_Off *die_offset;
-     Dwarf_Off *cu_offset;
-     Dwarf_Error *error;
+dwarf_global_name_offsets (Dwarf_Global global, char **return_name,
+               Dwarf_Off *die_offset, Dwarf_Off *cu_offset, Dwarf_Error *error)
 {
   if (return_name != NULL)
     {
index 0c6561c489017f1d674fa4de3b74ef34b7683fbc..a132c7dd6972a9e9b0a1a99a2f9bbc55bdce08bf 100644 (file)
 
 
 int
-dwarf_globname (global, return_name, error)
-     Dwarf_Global global;
-     char **return_name;
-     Dwarf_Error *error;
+dwarf_globname (Dwarf_Global global, char **return_name, Dwarf_Error *error)
 {
   *return_name = strdup (global->name);
   if (*return_name == NULL)
index cb0caa41d5ee0005c1e16b5fe8bc4ba09a21ebe1..2c414dc717745ee44d25fbe3a2da80fe9f3beb1e 100644 (file)
 
 
 int
-dwarf_hasattr (die, attr, return_bool, error)
-     Dwarf_Die die;
-     Dwarf_Half attr;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_hasattr (Dwarf_Die die, Dwarf_Half attr, Dwarf_Bool *return_bool,
+               Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
index 324d5e22e68f1952070f28d6317ef4d8bffda2b7..06374aa9e08879df039565154d9d8a085dc976c9 100644 (file)
 
 
 int
-dwarf_hasform (attr, form, return_hasform, error)
-     Dwarf_Attribute attr;
-     Dwarf_Half form;
-     Dwarf_Bool *return_hasform;
-     Dwarf_Error *error;
+dwarf_hasform (Dwarf_Attribute attr, Dwarf_Half form,
+               Dwarf_Bool *return_hasform, Dwarf_Error *error)
 {
   *return_hasform = attr->form == form;
   return DW_DLV_OK;
index 1a23364a12c7c84c8384b8ffbb5ee63111679198..b14ce459d91580276bea53f31548b361e05d2a2d 100644 (file)
 
 
 int
-dwarf_highpc (die, return_highpc, error)
-     Dwarf_Die die;
-     Dwarf_Addr *return_highpc;
-     Dwarf_Error *error;
+dwarf_highpc (Dwarf_Die die, Dwarf_Addr *return_highpc, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
index 3e61f3993ddbe0caf70689e5ff022a9f9b15611b..346174dfec06af0a5e5e24ad53d741a6045b9cf4 100644 (file)
 
 
 int
-dwarf_init (fd, access, errhand, errarg, dbg, error)
-     int fd;
-     Dwarf_Unsigned access;
-     Dwarf_Handler errhand;
-     Dwarf_Ptr errarg;
-     Dwarf_Debug *dbg;
-     Dwarf_Error *error;
+dwarf_init (int fd, Dwarf_Unsigned access, Dwarf_Handler errhand,
+               Dwarf_Ptr errarg, Dwarf_Debug *dbg, Dwarf_Error *error)
 {
   Elf *elf;
   Elf_Cmd cmd;
index b4092c490dcbc0f49fc4f52feb1a9047475ec2ee..418d5ca92d5e4d1901588f36ce28700d523fcb94 100644 (file)
 
 
 int
-dwarf_lineaddr (line, return_lineaddr, error)
-     Dwarf_Line line;
-     Dwarf_Addr *return_lineaddr;
-     Dwarf_Error *error;
+dwarf_lineaddr (Dwarf_Line line, Dwarf_Addr *return_lineaddr,
+               Dwarf_Error *error)
 {
   *return_lineaddr = line->addr;
   return DW_DLV_OK;
index 90b5b9a5cae4960178ea82acec24a555493e4f2f..a758d7f3f66bf797b58b46ff35b665a82521a83e 100644 (file)
 
 
 int
-dwarf_linebeginstatement (line, return_bool, error)
-     Dwarf_Line line;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_linebeginstatement (Dwarf_Line line, Dwarf_Bool *return_bool,
+               Dwarf_Error *error)
 {
   *return_bool = line->is_stmt;
   return DW_DLV_OK;
index b39c3179d2c22b3c4bf32a2ac6f9ce9451d9538a..d2eb1d2cbfd29337172d46d020b18c4d6e6a811c 100644 (file)
 
 
 int
-dwarf_lineblock (line, return_bool, error)
-     Dwarf_Line line;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_lineblock (Dwarf_Line line, Dwarf_Bool *return_bool, Dwarf_Error *error)
 {
   *return_bool = line->basic_block;
   return DW_DLV_OK;
index 242d3f92553a1aaed7c8379bd3d2549473861ae5..7cc287bd15f06fe3b60f8ea45c1698ce1ca91e74 100644 (file)
 
 
 int
-dwarf_lineendsequence (line, return_bool, error)
-     Dwarf_Line line;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_lineendsequence (Dwarf_Line line, Dwarf_Bool *return_bool,
+               Dwarf_Error *error)
 {
   *return_bool = line->end_sequence;
   return DW_DLV_OK;
index 50b5c9c6722e7b68ebff94625d3791ae93446662..899ac661144e546f68d5a3afa5f3cd8f9d3ff385 100644 (file)
 
 
 int
-dwarf_lineepiloguebegin (line, return_bool, error)
-     Dwarf_Line line;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_lineepiloguebegin (Dwarf_Line line, Dwarf_Bool *return_bool,
+               Dwarf_Error *error)
 {
   *return_bool = line->epilogue_begin;
   return DW_DLV_OK;
index 3cb428b1a05c7cf9270a368e3cab62d982339355..53f683b795cf00eea4c8bed2b6e45e0db0466984 100644 (file)
 
 
 int
-dwarf_lineno (line, return_lineno, error)
-     Dwarf_Line line;
-     Dwarf_Unsigned *return_lineno;
-     Dwarf_Error *error;
+dwarf_lineno (Dwarf_Line line, Dwarf_Unsigned *return_lineno,
+               Dwarf_Error *error)
 {
   *return_lineno = line->line;
   return DW_DLV_OK;
index 0e9749e7a278abad6c6f579a7784da8494de68b5..235b6b7d81deeef171296e7ff72a29486075efe5 100644 (file)
 
 
 int
-dwarf_lineoff (line, return_lineoff, error)
-     Dwarf_Line line;
-     Dwarf_Signed *return_lineoff;
-     Dwarf_Error *error;
+dwarf_lineoff (Dwarf_Line line, Dwarf_Signed *return_lineoff,
+               Dwarf_Error *error)
 {
-  *return_lineoff = line->column ?: -1;
+  *return_lineoff = line->column ? line->column : -1;
   return DW_DLV_OK;
 }
index 25067e531a657cca2da3aa09a8750bf628333247..2ada6aa91f18e7d56a6731e784becfacdc7698fc 100644 (file)
 
 
 int
-dwarf_lineprologueend (line, return_bool, error)
-     Dwarf_Line line;
-     Dwarf_Bool *return_bool;
-     Dwarf_Error *error;
+dwarf_lineprologueend (Dwarf_Line line, Dwarf_Bool *return_bool,
+               Dwarf_Error *error)
 {
   *return_bool = line->prologue_end;
   return DW_DLV_OK;
index 36e0a864e06f6891f2e3379701a283492596a772..03aaaa5dc2b76ff60b081addf202a9f1475ad3d5 100644 (file)
 
 
 int
-dwarf_linesrc (line, return_linesrc, error)
-     Dwarf_Line line;
-     char **return_linesrc;
-     Dwarf_Error *error;
+dwarf_linesrc (Dwarf_Line line, char **return_linesrc, Dwarf_Error *error)
 {
   if (unlikely (line->file >= line->files->nfiles))
     {
index 23dbb0ee9d7925d1f32b41b5835df3214c385afa..3bc81050a328c0681935fe032de1bdaf800432ea 100644 (file)
@@ -45,11 +45,8 @@ struct locdesclist
 
 
 int
-dwarf_loclist (attr, llbuf, listlen, error)
-     Dwarf_Attribute attr;
-     Dwarf_Locdesc **llbuf;
-     Dwarf_Signed *listlen;
-     Dwarf_Error *error;
+dwarf_loclist (Dwarf_Attribute attr, Dwarf_Locdesc **llbuf,
+               Dwarf_Signed *listlen, Dwarf_Error *error)
 {
   Dwarf_CU_Info cu = attr->cu;
   Dwarf_Debug dbg = cu->dbg;
@@ -264,7 +261,7 @@ dwarf_loclist (attr, llbuf, listlen, error)
            case DW_OP_reg31:
            case DW_OP_nop:
            case DW_OP_push_object_address:
-           case DW_OP_calli:
+           case DW_OP_call_ref:
              /* No operand.  */
              break;
 
index 4c145c51481f84dad60173a02b8665d9f5ba2d68..fb3c72d59de6188b0d20f8f4df1895371c328b36 100644 (file)
 
 
 int
-dwarf_lowpc (die, return_lowpc, error)
-     Dwarf_Die die;
-     Dwarf_Addr *return_lowpc;
-     Dwarf_Error *error;
+dwarf_lowpc (Dwarf_Die die, Dwarf_Addr *return_lowpc, Dwarf_Error *error)
 {
   Dwarf_Debug dbg = die->cu->dbg;
   Dwarf_Small *die_addr;
index 5905997cee63725652336d30e79f945e70761564..f8db8cf9e7a41e1abe0543eb64a78dd5ac5c7e56 100644 (file)
@@ -130,7 +130,12 @@ __libdwarf_get_cu_at_offset (Dwarf_Debug dbg, Dwarf_Unsigned offset,
   cu->last_abbrev_offset = cu->abbrev_offset;
 
   /* The address size.  Always an 8-bit value.  */
-  cu->address_size = *cu_bytes;
+  cu->address_size = *cu_bytes++;
+
+  /* Store the header length.  */
+  cu->header_length = (cu_bytes
+                      - ((Dwarf_Small *) dbg->sections[IDX_debug_info].addr
+                         + offset));
 
   /* Initilize a few more members.  */
   if (unlikely (Dwarf_Abbrev_Hash_init (&cu->abbrev_hash,
@@ -162,15 +167,10 @@ __libdwarf_get_cu_at_offset (Dwarf_Debug dbg, Dwarf_Unsigned offset,
 
 
 int
-dwarf_next_cu_header (dbg, cu_header_length, version_stamp, abbrev_offset,
-                     address_size, next_cu_header, error)
-     Dwarf_Debug dbg;
-     Dwarf_Unsigned *cu_header_length;
-     Dwarf_Half *version_stamp;
-     Dwarf_Unsigned *abbrev_offset;
-     Dwarf_Half *address_size;
-     Dwarf_Unsigned *next_cu_header;
-     Dwarf_Error *error;
+dwarf_next_cu_header (Dwarf_Debug dbg, Dwarf_Unsigned *cu_header_length,
+       Dwarf_Half *version_stamp, Dwarf_Unsigned *abbrev_offset,
+       Dwarf_Half *address_size, Dwarf_Unsigned *next_cu_header,
+       Dwarf_Error *error)
 {
   Dwarf_Unsigned offset_next_cu;
   Dwarf_CU_Info cu;
@@ -217,7 +217,7 @@ dwarf_next_cu_header (dbg, cu_header_length, version_stamp, abbrev_offset,
 
   /* Extract the information and put it where the user wants it.  */
   if (cu_header_length != NULL)
-    *cu_header_length = cu->length;
+    *cu_header_length = cu->header_length;
 
   if (version_stamp != NULL)
     *version_stamp = cu->version_stamp;
index 32e2cda7900a3a977f50dfafbcff566d1a0fa4f5..a3e3d250e67df494044c948cecfbbeac792bc688 100644 (file)
 
 /* XXX This function will have to be optimized.  The search is too linear
    to be performed too often -> O(n²).  */
+/*@null@*/
 static Dwarf_CU_Info
 find_cu (Dwarf_Debug dbg, Dwarf_Off offset, Dwarf_Error *error)
+       /*@modifies dbg, *error @*/
 {
   Dwarf_CU_Info cu;
   Dwarf_Word cu_offset;
@@ -65,11 +67,8 @@ find_cu (Dwarf_Debug dbg, Dwarf_Off offset, Dwarf_Error *error)
 
 
 int
-dwarf_offdie (dbg, offset, return_die, error)
-     Dwarf_Debug dbg;
-     Dwarf_Off offset;
-     Dwarf_Die *return_die;
-     Dwarf_Error *error;
+dwarf_offdie (Dwarf_Debug dbg, Dwarf_Off offset, Dwarf_Die *return_die,
+               Dwarf_Error *error)
 {
   Dwarf_CU_Info cu;
   Dwarf_Die new_die;
index a318a16bc1f9109d8f62b3355f56906835d1c3bc..325fb374a41cbf300fc453c069f3149fd8b859bd 100644 (file)
@@ -23,9 +23,7 @@
 
 
 Dwarf_Ptr
-dwarf_seterrarg (dbg, errarg)
-     Dwarf_Debug dbg;
-     Dwarf_Ptr errarg;
+dwarf_seterrarg (Dwarf_Debug dbg, Dwarf_Ptr errarg)
 {
   Dwarf_Ptr old = dbg->dbg_errarg;
   dbg->dbg_errarg = errarg;
index fbf5c3e485bf859d10d7f01ab06c60caa41bb260..98474db3713c41ddaaec5d8398d3876423906ffc 100644 (file)
@@ -23,9 +23,7 @@
 
 
 Dwarf_Handler
-dwarf_seterrhand (dbg, errhand)
-     Dwarf_Debug dbg;
-     Dwarf_Handler errhand;
+dwarf_seterrhand (Dwarf_Debug dbg, Dwarf_Handler errhand)
 {
   Dwarf_Handler old = dbg->dbg_errhand;
   dbg->dbg_errhand = errhand;
index 9f8fab9361e96d91995e94605fc875b82e9edeee..ef8b44c523ce6be8c07482dadf0b93f1c9533257 100644 (file)
 
 
 int
-dwarf_siblingof (dbg, die, return_sub, error)
-     Dwarf_Debug dbg;
-     Dwarf_Die die;
-     Dwarf_Die *return_sub;
-     Dwarf_Error *error;
+dwarf_siblingof (Dwarf_Debug dbg, Dwarf_Die die, Dwarf_Die *return_sub,
+               Dwarf_Error *error)
 {
   Dwarf_Small *die_addr;
   Dwarf_CU_Info cu;
@@ -44,7 +41,7 @@ dwarf_siblingof (dbg, die, return_sub, error)
     {
       Dwarf_Unsigned die_offset;
 
-      /* We are supposedto return the DW_TAG_compile_unit die for the
+      /* We are supposed to return the DW_TAG_compile_unit die for the
         current compile unit.  For this to succeed the user must have
         looked for the compile unit before.  */
       if (dbg->cu_list_current == NULL)
index 82f48e885ef9c87bcea3a259bf645b950e649ebc..43b6259cef21674cad0226b7a946fa303141a7bd 100644 (file)
@@ -43,8 +43,10 @@ struct filelist
 
 
 static int
-read_file_names (Dwarf_Debug dbg, char *comp_dir, Dwarf_Small **linepp,
-                char ***result, Dwarf_Signed *nresult, Dwarf_Error *error)
+read_file_names (Dwarf_Debug dbg, /*@null@*/ char *comp_dir,
+                Dwarf_Small **linepp, char ***result, Dwarf_Signed *nresult,
+                Dwarf_Error *error)
+       /*@modifies *linepp, *result, *nresult, *error @*/
 {
   Dwarf_Small *linep = *linepp;
   struct dirlist comp_dir_elem;
@@ -169,11 +171,8 @@ read_file_names (Dwarf_Debug dbg, char *comp_dir, Dwarf_Small **linepp,
 
 
 int
-dwarf_srcfiles (die, srcfiles, srcfilecount, error)
-     Dwarf_Die die;
-     char ***srcfiles;
-     Dwarf_Signed *srcfilecount;
-     Dwarf_Error *error;
+dwarf_srcfiles (Dwarf_Die die, char ***srcfiles, Dwarf_Signed *srcfilecount,
+               Dwarf_Error *error)
 {
   Dwarf_CU_Info cu = die->cu;
   Dwarf_Debug dbg = cu->dbg;
index 87913334796cfbe7a74f1bed0b06b207c7ff87c2..ef467df7ca5ffc6a22e2aaac03e6e042b1039c63 100644 (file)
 
 
 int
-dwarf_srclang (die, return_lang, error)
-     Dwarf_Die die;
-     Dwarf_Unsigned *return_lang;
-     Dwarf_Error *error;
+dwarf_srclang (Dwarf_Die die, Dwarf_Unsigned *return_lang, Dwarf_Error *error)
 {
   return __libdwarf_getconstant (die, DW_AT_language, return_lang, error);
 }
index 87157855137b0b35887fc2778f093b6c46e5f1bf..8db6dc1e78b984214e65988c99a908c49c7646e4 100644 (file)
@@ -80,11 +80,8 @@ struct linelist
 
 
 int
-dwarf_srclines (die, linebuf, linecount, error)
-     Dwarf_Die die;
-     Dwarf_Line **linebuf;
-     Dwarf_Signed *linecount;
-     Dwarf_Error *error;
+dwarf_srclines (Dwarf_Die die, Dwarf_Line **linebuf, Dwarf_Signed *linecount,
+               Dwarf_Error *error)
 {
   Dwarf_CU_Info cu = die->cu;
   Dwarf_Debug dbg = cu->dbg;
index dceb0b800ac98470ee8cbb4da2503b6dd4ef1859..b107f86d78313c1d800ffec2cca4efb7ef2bc4c8 100644 (file)
 
 
 int
-dwarf_tag (die, tagval, error)
-     Dwarf_Die die;
-     Dwarf_Half *tagval;
-     Dwarf_Error *error;
+dwarf_tag (Dwarf_Die die, Dwarf_Half *tagval, Dwarf_Error *error)
 {
   *tagval = die->abbrev->tag;
   return DW_DLV_OK;
index 6bff7948499525b086e1000d99444a9bd428d33c..bd41e1efcc9bdc3c75baeeb0021fd3a69d6b9b70 100644 (file)
 
 
 int
-dwarf_whatattr (attr, return_attr, error)
-     Dwarf_Attribute attr;
-     Dwarf_Half *return_attr;
-     Dwarf_Error *error;
+dwarf_whatattr (Dwarf_Attribute attr, Dwarf_Half *return_attr,
+               Dwarf_Error *error)
 {
   *return_attr = attr->code;
   return DW_DLV_OK;
index a1599e45a972187a52b3faf0ecb6aa4845df63b9..7ece4610c718b22d228aa7f7f48d579c8195770e 100644 (file)
 
 
 int
-dwarf_whatform (attr, return_form, error)
-     Dwarf_Attribute attr;
-     Dwarf_Half *return_form;
-     Dwarf_Error *error;
+dwarf_whatform (Dwarf_Attribute attr, Dwarf_Half *return_form,
+               Dwarf_Error *error)
 {
   *return_form = attr->form;
   return DW_DLV_OK;
index 3e415bc5221e25caa4263021181f643a44eec24f..0a4d29547cebb98f92a728140a58214f18d5b943 100644 (file)
@@ -123,20 +123,24 @@ enum
    this library.  Set the error handler and the parameter passed.  */
 extern int dwarf_init (int fd, Dwarf_Unsigned access,
                       Dwarf_Handler errhand, Dwarf_Ptr errarg,
-                      Dwarf_Debug *dbg, Dwarf_Error *errdesc);
+                      Dwarf_Debug *dbg, Dwarf_Error *errdesc)
+       /*@modifies *dbg, *errdesc @*/;
 
 /* Similar to `dwarf_init' but instead of a file descriptor of ELF
    descriptor is passed.  */
 extern int dwarf_elf_init (Elf *elf, Dwarf_Unsigned access,
                           Dwarf_Handler errhand, Dwarf_Ptr errarg,
-                          Dwarf_Debug *dbg, Dwarf_Error *errdesc);
+                          Dwarf_Debug *dbg, Dwarf_Error *errdesc)
+       /*@modifies elf, *dbg, *errdesc @*/;
 
 /* Return ELF handle.  */
 extern int dwarf_get_elf_init (Dwarf_Debug dbg, Elf **elf,
-                              Dwarf_Error *errdesc);
+                              Dwarf_Error *errdesc)
+       /*@modifies *elf, *errdesc @*/;
 
 /* Free resources allocated for debug handle.  */
-extern int dwarf_finish (Dwarf_Debug dbg, Dwarf_Error *errdesc);
+extern int dwarf_finish (/*@only@*/ Dwarf_Debug dbg, Dwarf_Error *errdesc)
+       /*@modifies dbg, *errdesc @*/;
 
 
 /* Return information about current and find new compile unit header.  */
@@ -146,231 +150,284 @@ extern int dwarf_next_cu_header (Dwarf_Debug dbg,
                                 Dwarf_Unsigned *abbrev_offset,
                                 Dwarf_Half *address_size,
                                 Dwarf_Unsigned *next_cu_header,
-                                Dwarf_Error *errdesc);
+                                Dwarf_Error *errdesc)
+       /*@modifies dbg, *cu_header_length, *version_stamp, *abbrev_offset,
+               *address_size, *next_cu_header, *errdesc @*/;
 
 /* Return sibling of given DIE.  */
 extern int dwarf_siblingof (Dwarf_Debug dbg, Dwarf_Die die,
-                           Dwarf_Die *return_sub, Dwarf_Error *errdesc);
+                           Dwarf_Die *return_sub, Dwarf_Error *errdesc)
+       /*@modifies dbg, die, *return_sub, *errdesc @*/;
 
 /* Return child of DIE.  */
 extern int dwarf_child (Dwarf_Die die, Dwarf_Die *return_kid,
-                       Dwarf_Error *errdesc);
+                       Dwarf_Error *errdesc)
+       /*@modifies die, *return_kid, *errdesc @*/;
 
 /* Return DIE at given offset.  */
 extern int dwarf_offdie (Dwarf_Debug dbg, Dwarf_Off offset,
-                        Dwarf_Die *return_die, Dwarf_Error *errdesc);
+                        Dwarf_Die *return_die, Dwarf_Error *errdesc)
+       /*@modifies dbg, *return_die, *errdesc @*/;
 
 
 /* Return tag of DIE.  */
-extern int dwarf_tag (Dwarf_Die die, Dwarf_Half *tagval, Dwarf_Error *errdesc);
+extern int dwarf_tag (Dwarf_Die die, Dwarf_Half *tagval, Dwarf_Error *errdesc)
+       /*@modifies *tagval, *errdesc @*/;
 
 /* Return offset of DIE in .debug_info section.  */
 extern int dwarf_dieoffset (Dwarf_Die die, Dwarf_Off *return_offset,
-                           Dwarf_Error *errdesc);
+                           Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /* Return offset of DIE in compile unit data.  */
 extern int dwarf_die_CU_offset (Dwarf_Die die, Dwarf_Off *return_offset,
-                               Dwarf_Error *errdesc);
+                               Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /* Return name attribute of DIE.  */
 extern int dwarf_diename (Dwarf_Die die, char **return_name,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies die, *return_name, *errdesc @*/;
 
 /* Return list of attributes for DIE.  */
 extern int dwarf_attrlist (Dwarf_Die die, Dwarf_Attribute **attrbuf,
-                          Dwarf_Signed *attrcount, Dwarf_Error *errdesc);
+                          Dwarf_Signed *attrcount, Dwarf_Error *errdesc)
+       /*@modifies die, *attrbuf, *attrcount, *errdesc @*/;
 
 /* Determine whether DIE has attribute specified of given type.  */
 extern int dwarf_hasattr (Dwarf_Die die, Dwarf_Half attr,
-                         Dwarf_Bool *return_bool, Dwarf_Error *errdesc);
+                         Dwarf_Bool *return_bool, Dwarf_Error *errdesc)
+       /*@modifies die, *return_bool, *errdesc @*/;
 
 /* Return DIE attribute with specified of given type.  */
 extern int dwarf_attr (Dwarf_Die die, Dwarf_Half attr,
-                      Dwarf_Attribute *return_attr, Dwarf_Error *errdesc);
+                      Dwarf_Attribute *return_attr, Dwarf_Error *errdesc)
+       /*@modifies die, *return_attr, *errdesc @*/;
 
 /* Return low program counter value associated with die.  */
 extern int dwarf_lowpc (Dwarf_Die die, Dwarf_Addr *return_lowpc,
-                       Dwarf_Error *errdesc);
+                       Dwarf_Error *errdesc)
+       /*@modifies die, *return_lowpc, *errdesc @*/;
 
 /* Return high program counter value associated with die.  */
 extern int dwarf_highpc (Dwarf_Die die, Dwarf_Addr *return_lowpc,
-                        Dwarf_Error *errdesc);
+                        Dwarf_Error *errdesc)
+       /*@modifies die, *return_lowpc, *errdesc @*/;
 
 /* Return byte size value associated with die.  */
 extern int dwarf_bytesize (Dwarf_Die die, Dwarf_Unsigned *return_size,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies die, *return_size, *errdesc @*/;
 
 /* Return bit size value associated with die.  */
 extern int dwarf_bitsize (Dwarf_Die die, Dwarf_Unsigned *return_size,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies die, *return_size, *errdesc @*/;
 
 /* Return bit offset value associated with die.  */
 extern int dwarf_bitoffset (Dwarf_Die die, Dwarf_Unsigned *return_size,
-                           Dwarf_Error *errdesc);
+                           Dwarf_Error *errdesc)
+       /*@modifies die, *return_size, *errdesc @*/;
 
 /* Return source language associated with die.  */
 extern int dwarf_srclang (Dwarf_Die die, Dwarf_Unsigned *return_lang,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies die, *return_lang, *errdesc @*/;
 
 /* Return source language associated with die.  */
 extern int dwarf_arrayorder (Dwarf_Die die, Dwarf_Unsigned *return_order,
-                            Dwarf_Error *errdesc);
+                            Dwarf_Error *errdesc)
+       /*@modifies die, *return_order, *errdesc @*/;
 
 
 /* Determine whether attribute has given form.  */
 extern int dwarf_hasform (Dwarf_Attribute attr, Dwarf_Half form,
-                         Dwarf_Bool *return_hasform, Dwarf_Error *errdesc);
+                         Dwarf_Bool *return_hasform, Dwarf_Error *errdesc)
+       /*@modifies *return_hasform, *errdesc @*/;
 
 /* Return form of attribute.  */
 extern int dwarf_whatform (Dwarf_Attribute attr, Dwarf_Half *return_form,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies *return_form, *errdesc @*/;
 
 /* Return code of attribute.  */
 extern int dwarf_whatattr (Dwarf_Attribute attr, Dwarf_Half *return_attr,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies *return_attr, *errdesc @*/;
 
 /*  Return compile-unit relative offset of reference associated with form.  */
 extern int dwarf_formref (Dwarf_Attribute attr, Dwarf_Off *return_offset,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /*  Return .debug_info section global offset of reference associated
     with form.  */
 extern int dwarf_global_formref (Dwarf_Attribute attr,
                                 Dwarf_Off *return_offset,
-                                Dwarf_Error *errdesc);
+                                Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /* Return address represented by attribute.  */
 extern int dwarf_formaddr (Dwarf_Attribute attr, Dwarf_Addr *return_addr,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies *return_addr, *errdesc @*/;
 
 /* Return flag represented by attribute.  */
 extern int dwarf_formflag (Dwarf_Attribute attr, Dwarf_Bool *return_bool,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies *return_bool, *errdesc @*/;
 
 /* Return unsigned constant represented by attribute.  */
 extern int dwarf_formudata (Dwarf_Attribute attr, Dwarf_Unsigned *return_uval,
-                           Dwarf_Error *errdesc);
+                           Dwarf_Error *errdesc)
+       /*@modifies *return_uval, *errdesc @*/;
 
 /* Return signed constant represented by attribute.  */
 extern int dwarf_formsdata (Dwarf_Attribute attr, Dwarf_Signed *return_uval,
-                           Dwarf_Error *errdesc);
+                           Dwarf_Error *errdesc)
+       /*@modifies *return_uval, *errdesc @*/;
 
 /* Return block of uninterpreted data represented by attribute.  */
 extern int dwarf_formblock (Dwarf_Attribute attr, Dwarf_Block **return_block,
-                           Dwarf_Error *errdesc);
+                           Dwarf_Error *errdesc)
+       /*@modifies *return_block, *errdesc @*/;
 
 /* Return string represented by attribute.  */
 extern int dwarf_formstring (Dwarf_Attribute attr, char **return_string,
-                            Dwarf_Error *errdesc);
+                            Dwarf_Error *errdesc)
+       /*@modifies *return_string, *errdesc @*/;
 
 /* Return location expression list.  */
 extern int dwarf_loclist (Dwarf_Attribute attr, Dwarf_Locdesc **llbuf,
-                         Dwarf_Signed *listlen, Dwarf_Error *errdesc);
+                         Dwarf_Signed *listlen, Dwarf_Error *errdesc)
+       /*@modifies *llbuf, *listlen, *errdesc @*/;
 
 
 /* Return source lines of compilation unit.  */
 extern int dwarf_srclines (Dwarf_Die die, Dwarf_Line **linebuf,
-                          Dwarf_Signed *linecount, Dwarf_Error *errdesc);
+                          Dwarf_Signed *linecount, Dwarf_Error *errdesc)
+       /*@modifies die, *linebuf, *linecount, *errdesc @*/;
 
 /* Return files used in compilation unit.  */
 extern int dwarf_srcfiles (Dwarf_Die die, char ***srcfiles,
-                          Dwarf_Signed *srcfilecount, Dwarf_Error *errdesc);
+                          Dwarf_Signed *srcfilecount, Dwarf_Error *errdesc)
+       /*@modifies die, *srcfiles, *srcfilecount, *errdesc @*/;
 
 /* Determine whether line is the beginning of a statement.  */
 extern int dwarf_linebeginstatement (Dwarf_Line line, Dwarf_Bool *return_bool,
-                                    Dwarf_Error *errdesc);
+                                    Dwarf_Error *errdesc)
+       /*@modifies *return_bool, *errdesc @*/;
 
 /* Determine whether line is marked as ending a text sequence.  */
 extern int dwarf_lineendsequence (Dwarf_Line line, Dwarf_Bool *return_bool,
-                                 Dwarf_Error *errdesc);
+                                 Dwarf_Error *errdesc)
+       /*@modifies *return_bool, *errdesc @*/;
 
 /* Return source statement line number.  */
 extern int dwarf_lineno (Dwarf_Line line, Dwarf_Unsigned *return_lineno,
-                        Dwarf_Error *errdesc);
+                        Dwarf_Error *errdesc)
+       /*@modifies *return_lineno, *errdesc @*/;
 
 /* Return address associate with line.  */
 extern int dwarf_lineaddr (Dwarf_Line line, Dwarf_Addr *return_lineaddr,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies *return_lineaddr, *errdesc @*/;
 
 /* Return column at which the statement begins.  */
 extern int dwarf_lineoff (Dwarf_Line line, Dwarf_Signed *return_lineoff,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies *return_lineoff, *errdesc @*/;
 
 /* Return source file for line.  */
 extern int dwarf_linesrc (Dwarf_Line line, char **return_linesrc,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies *return_linesrc, *errdesc @*/;
 
 /* Determine whether line is marked as beginning a basic block.  */
 extern int dwarf_lineblock (Dwarf_Line line, Dwarf_Bool *return_bool,
-                           Dwarf_Error *errdesc);
+                           Dwarf_Error *errdesc)
+       /*@modifies *return_bool, *errdesc @*/;
 
 /* Determine whether line is marked as ending the prologue.  */
 extern int dwarf_lineprologueend (Dwarf_Line line, Dwarf_Bool *return_bool,
-                                 Dwarf_Error *errdesc);
+                                 Dwarf_Error *errdesc)
+       /*@modifies *return_bool, *errdesc @*/;
 
 /* Determine whether line is marked as beginning the epilogue.  */
 extern int dwarf_lineepiloguebegin (Dwarf_Line line, Dwarf_Bool *return_bool,
-                                   Dwarf_Error *errdesc);
+                                   Dwarf_Error *errdesc)
+       /*@modifies *return_bool, *errdesc @*/;
 
 
 /* Return list of global definitions.  */
 extern int dwarf_get_globals (Dwarf_Debug dbg, Dwarf_Global **globals,
                              Dwarf_Signed *return_count,
-                             Dwarf_Error *errdesc);
+                             Dwarf_Error *errdesc)
+       /*@modifies *globals, *return_count, *errdesc @*/;
 
 /* Return name for global definition.  */
 extern int dwarf_globname (Dwarf_Global global, char **return_name,
-                          Dwarf_Error *errdesc);
+                          Dwarf_Error *errdesc)
+       /*@modifies *return_name, *errdesc @*/;
 
 /* Return DIE offset for global definition.  */
 extern int dwarf_global_die_offset (Dwarf_Global global,
                                    Dwarf_Off *return_offset,
-                                   Dwarf_Error *errdesc);
+                                   Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /* Return offset of header of compile unit containing the global definition. */
 extern int dwarf_global_cu_offset (Dwarf_Global global,
                                   Dwarf_Off *return_offset,
-                                  Dwarf_Error *errdesc);
+                                  Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /* Return name, DIE offset, and offset of the compile unit DIE for the
    global definition.  */
 extern int dwarf_global_name_offsets (Dwarf_Global global, char **return_name,
                                      Dwarf_Off *die_offset,
                                      Dwarf_Off *cu_offset,
-                                     Dwarf_Error *errdesc);
+                                     Dwarf_Error *errdesc)
+       /*@modifies *return_name, *die_offset, *cu_offset, *errdesc @*/;
 
 
 /* Find start of macro value.  */
-extern char *dwarf_find_macro_value_start (char *macro_string);
+extern char *dwarf_find_macro_value_start (char *macro_string)
+       /*@*/;
 
 
 /* Return string from debug string section.  */
 extern int dwarf_get_str (Dwarf_Debug dbg, Dwarf_Off offset, char **string,
                          Dwarf_Signed *returned_str_len,
-                         Dwarf_Error *errdesc);
+                         Dwarf_Error *errdesc)
+       /*@modifies dbg, *string, *returned_str_len, *errdesc @*/;
 
 
 /* Return list address ranges.  */
 extern int dwarf_get_aranges (Dwarf_Debug dbg, Dwarf_Arange **aranges,
                              Dwarf_Signed *return_count,
-                             Dwarf_Error *errdesc);
+                             Dwarf_Error *errdesc)
+       /*@modifies *aranges, *return_count, *errdesc @*/;
 
 /* Find matching range for address.  */
 extern int dwarf_get_arange (Dwarf_Arange *aranges,
                             Dwarf_Unsigned arange_count, Dwarf_Addr address,
                             Dwarf_Arange *return_arange,
-                            Dwarf_Error *errdesc);
+                            Dwarf_Error *errdesc)
+       /*@modifies *return_arange, *errdesc @*/;
 
 /* Return offset of compile unit DIE containing the range.  */
 extern int dwarf_get_cu_die_offset (Dwarf_Arange arange,
                                    Dwarf_Off *return_offset,
-                                   Dwarf_Error *errdesc);
+                                   Dwarf_Error *errdesc)
+       /*@modifies *return_offset, *errdesc @*/;
 
 /* Return start, length, and CU DIE offset of range.  */
 extern int dwarf_get_arange_info (Dwarf_Arange arange, Dwarf_Addr *start,
                                  Dwarf_Unsigned *length,
                                  Dwarf_Off *cu_die_offset,
-                                 Dwarf_Error *errdesc);
+                                 Dwarf_Error *errdesc)
+       /*@modifies *start, *length, *cu_die_offset, *errdesc @*/;
 
 
 /* Frame descriptor handling.  */
@@ -380,11 +437,14 @@ extern int dwarf_get_fde_list_eh (Dwarf_Debug dbg, Dwarf_Cie **cie_data,
                                  Dwarf_Signed *cie_element_count,
                                  Dwarf_Fde **fde_data,
                                  Dwarf_Signed *fde_element_count,
-                                 Dwarf_Error *errdesc);
+                                 Dwarf_Error *errdesc)
+       /*@modifies dbg, *cie_data, *cie_element_count,
+               *fde_data, *fde_element_count, *errdesc @*/;
 
 /* Get CIE of FDE.  */
 extern int dwarf_get_cie_of_fde (Dwarf_Fde fde, Dwarf_Cie *return_cie,
-                                Dwarf_Error *errdesc);
+                                Dwarf_Error *errdesc)
+       /*@modifies *return_cie, *errdesc @*/;
 
 /* Get information about the function range.  */
 extern int dwarf_get_fde_range (Dwarf_Fde fde, Dwarf_Addr *low_pc,
@@ -392,7 +452,9 @@ extern int dwarf_get_fde_range (Dwarf_Fde fde, Dwarf_Addr *low_pc,
                                Dwarf_Ptr *fde_bytes,
                                Dwarf_Unsigned *fde_byte_length,
                                Dwarf_Off *cie_offset, Dwarf_Signed *cie_index,
-                               Dwarf_Off *fde_offset, Dwarf_Error *errdesc);
+                               Dwarf_Off *fde_offset, Dwarf_Error *errdesc)
+       /*@modifies *low_pc, *func_length, *fde_bytes, *fde_byte_length,
+               *cie_offset, *cie_index, *cie_length, *fde_offset, *errdesc @*/;
 
 /* Get information about CIE.  */
 extern int dwarf_get_cie_info (Dwarf_Cie cie, Dwarf_Unsigned *bytes_in_cie,
@@ -402,21 +464,28 @@ extern int dwarf_get_cie_info (Dwarf_Cie cie, Dwarf_Unsigned *bytes_in_cie,
                               Dwarf_Half *return_address_register,
                               Dwarf_Ptr *initial_instructions,
                               Dwarf_Unsigned *initial_instructions_length,
-                              Dwarf_Error *errdesc);
+                              Dwarf_Error *errdesc)
+       /*@modifies *bytes_in_cie, *version, *augmenter,
+               *code_alignment_factor, *data_alignment_factor,
+               *initial_instructions, *initial_instructions_length,
+               *return_address_register, *errdesc @*/;
 
 /* Get frame construction instructions of FDE.  */
 extern int dwarf_get_fde_instr_bytes (Dwarf_Fde fde, Dwarf_Ptr *outinstrs,
                                      Dwarf_Unsigned *outlen,
-                                     Dwarf_Error *errdesc);
+                                     Dwarf_Error *errdesc)
+       /*@modifies *outinstrs, *outlen, *errdesc @*/;
 
 /* Get nth frame descriptions.  */
 extern int dwarf_get_fde_n (Dwarf_Fde *fde_data, Dwarf_Unsigned fde_index,
-                           Dwarf_Fde *returned_fde, Dwarf_Error *errdesc);
+                           Dwarf_Fde *returned_fde, Dwarf_Error *errdesc)
+       /*@modifies *returned_fde, *errdesc @*/;
 
 /* Find FDE for given address.  */
 extern int dwarf_get_fde_at_pc (Dwarf_Fde *fde_data, Dwarf_Addr pc_of_interest,
                                Dwarf_Fde *returned_fde, Dwarf_Addr *lopc,
-                               Dwarf_Addr *hipc, Dwarf_Error *errdesc);
+                               Dwarf_Addr *hipc, Dwarf_Error *errdesc)
+       /*@modifies *returned_fde, *lopc, *hipc, *errdesc @*/;
 
 
 /* Return location list entry.  */
@@ -425,7 +494,9 @@ extern int dwarf_get_loclist_entry (Dwarf_Debug dbg, Dwarf_Unsigned offset,
                                    Dwarf_Addr *lopc_offset, Dwarf_Ptr *data,
                                    Dwarf_Unsigned *entry_len,
                                    Dwarf_Unsigned *next_entry,
-                                   Dwarf_Error *errdesc);
+                                   Dwarf_Error *errdesc)
+       /*@modifies *hipc_offset, *lopc_offset, *data,
+               *entry_len, *next_entry, *errdesc @*/;
 
 
 /* Get abbreviation record.  */
@@ -433,26 +504,31 @@ extern int dwarf_get_abbrev (Dwarf_Debug dbg,
                             Dwarf_Unsigned offset,
                             Dwarf_Abbrev *returned_abbrev,
                             Dwarf_Unsigned *length,
-                            Dwarf_Unsigned *attr_count, Dwarf_Error *errdesc);
+                            Dwarf_Unsigned *attr_count, Dwarf_Error *errdesc)
+       /*@modifies *returned_abbrev, *length, *attr_count, *errdesc @*/;
 
 /* Get tag of abbreviation record.  */
 extern int dwarf_get_abbrev_tag (Dwarf_Abbrev abbrev, Dwarf_Half *return_tag,
-                                Dwarf_Error *errdesc);
+                                Dwarf_Error *errdesc)
+       /*@modifies *return_tag @*/;
 
 /* Get code of abbreviation record.  */
 extern int dwarf_get_abbrev_code (Dwarf_Abbrev abbrev,
                                  Dwarf_Unsigned *return_code,
-                                 Dwarf_Error *errdesc);
+                                 Dwarf_Error *errdesc)
+       /*@modifies *return_code @*/;
 
 /* Get children flag of abbreviation record.  */
 extern int dwarf_get_abbrev_children_flag (Dwarf_Abbrev abbrev,
                                           Dwarf_Signed *return_flag,
-                                          Dwarf_Error *errdesc);
+                                          Dwarf_Error *errdesc)
+       /*@modifies *return_flag @*/;
 
 /* Get attribute from abbreviation record.  */
 extern int dwarf_get_abbrev_entry (Dwarf_Abbrev abbrev, Dwarf_Signed idx,
                                   Dwarf_Half *attr_num, Dwarf_Signed *form,
-                                  Dwarf_Off *offset, Dwarf_Error *errdesc);
+                                  Dwarf_Off *offset, Dwarf_Error *errdesc)
+       /*@modifies *attr_num, *form, *offset @*/;
 
 
 /* Memory handling.  */
@@ -492,26 +568,32 @@ enum
   };
 
 /* Deallocate memory.  */
-extern void dwarf_dealloc (Dwarf_Debug dbg, Dwarf_Ptr space,
-                          Dwarf_Unsigned alloc_type);
+extern void dwarf_dealloc (Dwarf_Debug dbg, /*@only@*/ Dwarf_Ptr space,
+                          Dwarf_Unsigned alloc_type)
+       /*@modifies space @*/;
 
 
 /* Determine size of address of the binary.  */
 extern int dwarf_get_address_size (Dwarf_Debug dbg, Dwarf_Half *addr_size,
-                                  Dwarf_Error *errdesc);
+                                  Dwarf_Error *errdesc)
+       /*@modifies *addr_size @*/;
 
 
 /* Return error number.  */
-extern Dwarf_Unsigned dwarf_errno (Dwarf_Error errdesc);
+extern Dwarf_Unsigned dwarf_errno (Dwarf_Error errdesc)
+       /*@*/;
 
 /* Return string corresponding to error.  */
-extern const char *dwarf_errmsg (Dwarf_Error errdesc);
+extern const char *dwarf_errmsg (Dwarf_Error errdesc)
+       /*@*/;
 
 
 /* Set new error handler.  */
-extern Dwarf_Handler dwarf_seterrhand (Dwarf_Debug dbg, Dwarf_Handler errhand);
+extern Dwarf_Handler dwarf_seterrhand (Dwarf_Debug dbg, Dwarf_Handler errhand)
+       /*@modifies dbg @*/;
 
 /* Set new error handler argument.  */
-extern Dwarf_Ptr dwarf_seterrarg (Dwarf_Debug dbg, Dwarf_Ptr errarg);
+extern Dwarf_Ptr dwarf_seterrarg (Dwarf_Debug dbg, Dwarf_Ptr errarg)
+       /*@modifies dbg @*/;
 
 #endif /* libdwarf.h */
index aef9f0df1bb3aee343b987fdca063d404bcda83f..45ef58497d984deefd6626108fcfb36eb6d2dbe1 100644 (file)
@@ -84,6 +84,7 @@ struct Dwarf_Debug_s
     {
       /* This is the information the 'dwarf_next_cu_header' function
         is supposed to return.  */
+      Dwarf_Unsigned header_length;
       Dwarf_Unsigned length;
       Dwarf_Unsigned abbrev_offset;
       Dwarf_Half version_stamp;
@@ -100,9 +101,12 @@ struct Dwarf_Debug_s
 
       Dwarf_Debug dbg;
 
+/*@relnull@*/
       struct Dwarf_CU_Info_s *next;
     } *cu_list;
+/*@relnull@*/
     struct Dwarf_CU_Info_s *cu_list_current;
+/*@relnull@*/
     struct Dwarf_CU_Info_s *cu_list_tail;
 
     Dwarf_Unsigned cie_cnt;
@@ -113,7 +117,7 @@ typedef struct Dwarf_CU_Info_s *Dwarf_CU_Info;
 
 /* Memory access macros.  We have to define it here since code in the
    header needs to know the structure of Dwarf_Debug.  */
-#include <memory-access.h>
+#include "memory-access.h"
 
 
 /* DWARF die representation.  */
@@ -281,110 +285,43 @@ enum
     DW_E_VERSION_ERROR,
     DW_E_INVALID_DIR_IDX,
     DW_E_INVALID_ADDR,
+    DW_E_NO_ABBR,
   };
 
 
 /* Handle error according to user's wishes.  */
-extern void __libdwarf_error (Dwarf_Debug dbg, Dwarf_Error *error, int errval)
-     internal_function;
+extern void __libdwarf_error (Dwarf_Debug dbg, Dwarf_Error *err, int errval)
+     internal_function
+       /*@modifies *err @*/;
 
 
 /* Find CU at given offset.  */
 extern int __libdwarf_get_cu_at_offset (Dwarf_Debug dbg, Dwarf_Unsigned offset,
                                        Dwarf_CU_Info *result_cu,
-                                       Dwarf_Error *error) internal_function;
+                                       Dwarf_Error *err) internal_function
+       /*@modifies dbg, *result_cu, *err @*/;
 
 /* Find abbreviation.  */
+/*@null@*/
 extern Dwarf_Abbrev __libdwarf_get_abbrev (Dwarf_Debug dbg,
                                           Dwarf_CU_Info cu,
                                           Dwarf_Word code,
-                                          Dwarf_Error *error)
-     internal_function;
+                                          Dwarf_Error *err)
+     internal_function
+       /*@modifies cu, *err @*/;
 
 /* Get constant type attribute value.  */
 extern int __libdwarf_getconstant (Dwarf_Die die, Dwarf_Half name,
                                   Dwarf_Unsigned *return_size,
-                                  Dwarf_Error *error) internal_function;
+                                  Dwarf_Error *err) internal_function
+       /*@modifies die, *return_size, *err @*/;
 
 /* Determine length of form parameters.  */
 extern int __libdwarf_form_val_len (Dwarf_Debug dbg, Dwarf_CU_Info cu,
                                    Dwarf_Word form, Dwarf_Small *valp,
-                                   size_t *len, Dwarf_Error *error)
-     internal_function;
-
-
-/* Number decoding macros.  See 7.6 Variable Length Data.  */
-#define get_uleb128(var, addr) \
-  do {                                                                       \
-    Dwarf_Small __b = *addr++;                                               \
-    var = __b & 0x7f;                                                        \
-    if (__b & 0x80)                                                          \
-      {                                                                              \
-       __b = *addr++;                                                        \
-       var |= (__b & 0x7f) << 7;                                             \
-       if (__b & 0x80)                                                       \
-         {                                                                   \
-           __b = *addr++;                                                    \
-           var |= (__b & 0x7f) << 14;                                        \
-           if (__b & 0x80)                                                   \
-             {                                                               \
-               __b = *addr++;                                                \
-               var |= (__b & 0x7f) << 21;                                    \
-               if (__b & 0x80)                                               \
-                 /* Other implementation set VALUE to UINT_MAX in this       \
-                    case.  So we better do this as well.  */                 \
-                 var = UINT_MAX;                                             \
-             }                                                               \
-         }                                                                   \
-      }                                                                              \
-  } while (0)
-
-/* The signed case is a big more complicated.  */
-#define get_sleb128(var, addr) \
-  do {                                                                       \
-    Dwarf_Small __b = *addr++;                                               \
-    int32_t __res = __b & 0x7f;                                                      \
-    if ((__b & 0x80) == 0)                                                   \
-      {                                                                              \
-       if (__b & 0x40)                                                       \
-         __res |= 0xffffff80;                                                \
-      }                                                                              \
-    else                                                                     \
-      {                                                                              \
-       __b = *addr++;                                                        \
-       __res |= (__b & 0x7f) << 7;                                           \
-       if ((__b & 0x80) == 0)                                                \
-         {                                                                   \
-           if (__b & 0x40)                                                   \
-             __res |= 0xffffc000;                                            \
-         }                                                                   \
-       else                                                                  \
-         {                                                                   \
-           __b = *addr++;                                                    \
-           __res |= (__b & 0x7f) << 14;                                      \
-           if ((__b & 0x80) == 0)                                            \
-             {                                                               \
-               if (__b & 0x40)                                               \
-                 __res |= 0xffe00000;                                        \
-             }                                                               \
-           else                                                              \
-             {                                                               \
-               __b = *addr++;                                                \
-               __res |= (__b & 0x7f) << 21;                                  \
-               if ((__b & 0x80) == 0)                                        \
-                 {                                                           \
-                   if (__b & 0x40)                                           \
-                     __res |= 0xf0000000;                                    \
-                 }                                                           \
-               else                                                          \
-                 /* Other implementation set VALUE to INT_MAX in this        \
-                    case.  So we better do this as well.  */                 \
-                 __res = INT_MAX;                                            \
-             }                                                               \
-         }                                                                   \
-      }                                                                              \
-    var = __res;                                                             \
-  } while (0)
+                                   size_t *len, Dwarf_Error *err)
+     internal_function
+       /*@modifies *valp, *len, *err @*/;
 
 
 /* gettext helper macros.  */
index 2f45053f2fab4d238be0b17559112329bae81ce8..f4ee6ca6d9ceb506ae1d8fc6e44d07e3bf319037 100644 (file)
 #include <stdint.h>
 
 
-/* Which architectures support unaligned memory access?  */
-#ifdef __i386__
-# define USE_UNALIGNED_MEMORY_ACCESS
-#endif
+/* Number decoding macros.  See 7.6 Variable Length Data.  */
+#define get_uleb128(var, addr) \
+  do {                                                                       \
+    Dwarf_Small __b = *addr++;                                               \
+    var = __b & 0x7f;                                                        \
+    if (__b & 0x80)                                                          \
+      {                                                                              \
+       __b = *addr++;                                                        \
+       var |= (__b & 0x7f) << 7;                                             \
+       if (__b & 0x80)                                                       \
+         {                                                                   \
+           __b = *addr++;                                                    \
+           var |= (__b & 0x7f) << 14;                                        \
+           if (__b & 0x80)                                                   \
+             {                                                               \
+               __b = *addr++;                                                \
+               var |= (__b & 0x7f) << 21;                                    \
+               if (__b & 0x80)                                               \
+                 /* Other implementation set VALUE to UINT_MAX in this       \
+                    case.  So we better do this as well.  */                 \
+                 var = UINT_MAX;                                             \
+             }                                                               \
+         }                                                                   \
+      }                                                                              \
+  } while (0)
+
+/* The signed case is a big more complicated.  */
+#define get_sleb128(var, addr) \
+  do {                                                                       \
+    Dwarf_Small __b = *addr++;                                               \
+    int32_t __res = __b & 0x7f;                                                      \
+    if ((__b & 0x80) == 0)                                                   \
+      {                                                                              \
+       if (__b & 0x40)                                                       \
+         __res |= 0xffffff80;                                                \
+      }                                                                              \
+    else                                                                     \
+      {                                                                              \
+       __b = *addr++;                                                        \
+       __res |= (__b & 0x7f) << 7;                                           \
+       if ((__b & 0x80) == 0)                                                \
+         {                                                                   \
+           if (__b & 0x40)                                                   \
+             __res |= 0xffffc000;                                            \
+         }                                                                   \
+       else                                                                  \
+         {                                                                   \
+           __b = *addr++;                                                    \
+           __res |= (__b & 0x7f) << 14;                                      \
+           if ((__b & 0x80) == 0)                                            \
+             {                                                               \
+               if (__b & 0x40)                                               \
+                 __res |= 0xffe00000;                                        \
+             }                                                               \
+           else                                                              \
+             {                                                               \
+               __b = *addr++;                                                \
+               __res |= (__b & 0x7f) << 21;                                  \
+               if ((__b & 0x80) == 0)                                        \
+                 {                                                           \
+                   if (__b & 0x40)                                           \
+                     __res |= 0xf0000000;                                    \
+                 }                                                           \
+               else                                                          \
+                 /* Other implementation set VALUE to INT_MAX in this        \
+                    case.  So we better do this as well.  */                 \
+                 __res = INT_MAX;                                            \
+             }                                                               \
+         }                                                                   \
+      }                                                                              \
+    var = __res;                                                             \
+  } while (0)
 
 
 /* We use simple memory access functions in case the hardware allows it.
    The caller has to make sure we don't have alias problems.  */
-#ifdef USE_UNALIGNED_MEMORY_ACCESS
+#if ALLOW_UNALIGNED
 
 # define read_2ubyte_unaligned(Dbg, Addr) \
   ((Dbg)->other_byte_order                                                   \
@@ -78,6 +146,7 @@ union unaligned
 
 static inline uint16_t
 read_2ubyte_unaligned (Dwarf_Debug dbg, void *p)
+       /*@*/
 {
   union unaligned *up = p;
   if (dbg->other_byte_order)
@@ -86,6 +155,7 @@ read_2ubyte_unaligned (Dwarf_Debug dbg, void *p)
 }
 static inline int16_t
 read_2sbyte_unaligned (Dwarf_Debug dbg, void *p)
+       /*@*/
 {
   union unaligned *up = p;
   if (dbg->other_byte_order)
@@ -95,12 +165,14 @@ read_2sbyte_unaligned (Dwarf_Debug dbg, void *p)
 
 static inline uint32_t
 read_4ubyte_unaligned_noncvt (void *p)
+       /*@*/
 {
   union unaligned *up = p;
   return up->u4;
 }
 static inline uint32_t
 read_4ubyte_unaligned (Dwarf_Debug dbg, void *p)
+       /*@*/
 {
   union unaligned *up = p;
   if (dbg->other_byte_order)
@@ -109,6 +181,7 @@ read_4ubyte_unaligned (Dwarf_Debug dbg, void *p)
 }
 static inline int32_t
 read_4sbyte_unaligned (Dwarf_Debug dbg, void *p)
+       /*@*/
 {
   union unaligned *up = p;
   if (dbg->other_byte_order)
@@ -118,6 +191,7 @@ read_4sbyte_unaligned (Dwarf_Debug dbg, void *p)
 
 static inline uint64_t
 read_8ubyte_unaligned (Dwarf_Debug dbg, void *p)
+       /*@*/
 {
   union unaligned *up = p;
   if (dbg->other_byte_order)
@@ -126,6 +200,7 @@ read_8ubyte_unaligned (Dwarf_Debug dbg, void *p)
 }
 static inline int64_t
 read_8sbyte_unaligned (Dwarf_Debug dbg, void *p)
+       /*@*/
 {
   union unaligned *up = p;
   if (dbg->other_byte_order)
index 0ee3611cd61c4c5624bc07032948ab231cd7b264..df654fdae42be91b08bf7d9cf10609be72064a7a 100644 (file)
@@ -21,6 +21,8 @@ AM_CFLAGS = -Wall -Werror -DOBJDIR=\"$(shell pwd)\"
 INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I.. \
           $(INCLTDL)
 
+LINT = splint
+
 #lib_LTLIBRARIES = libebl.la
 #pkglib_LTLIBRARIES = libebl_i386.la libebl_sh.la libebl_mips.la
 noinst_LTLIBRARIES = libebl.la \
@@ -59,3 +61,8 @@ libebl_sh_la_DEPENDENCIES = libebl_sh.map
 libebl_mips_la_SOURCES = mips_init.c mips_destr.c mips_symbol.c
 libebl_mips_la_LDFLAGS = -module -Wl,--version-script,$(srcdir)/libebl_mips.map
 libebl_mips_la_DEPENDENCIES = libebl_mips.map
+
+.PSEUDO: lint
+lint:
+       $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \
+               $(addprefix $(srcdir)/,$(libebl_la_SOURCES))
diff --git a/elfutils/libelf/.splintrc b/elfutils/libelf/.splintrc
new file mode 100644 (file)
index 0000000..bd85094
--- /dev/null
@@ -0,0 +1,88 @@
++partial
++forcehints
+
+-warnunixlib
+-warnposix
+
+#+unixlib
++posixlib
+
++strict                        # lclint level
+
+# --- in progress
+-branchstate
+-compdef               # 34
+-compmempass           # 17
+-internalglobs
+-moduncon              # 3
+-noeffect              # 1
+-noeffectuncon         # 19
+-nullderef             # 2
+-nullpass              # 1
+-nullptrarith          # 16
+-nullstate             # 11
+-paramuse
+-protoparammatch
+-retalias              # 12
+-retvalint
+-shadow                        # 2
+-sysunrecog
+-type
+-unrecog               # 8
+-usereleased           # 21
+
+-dependenttrans                # 7
+-immediatetrans                # 35
+-kepttrans             # 13
+-onlytrans             # 2
+-temptrans             # 15
+-unqualifiedtrans      # 6
+
+-casebreak
+-ifempty
+-loopswitchbreak
+-sizeoftype
+
+# --- +partial artifacts
+-declundef
+-exportheader
+-exportheadervar
+-exportlocal
+
+-enummemuse
+-fcnuse
+-typeuse
+-varuse
+
+# --- not-yet at strict level
+-bitwisesigned
+-elseifcomplete
+-exportconst
+-exportfcn
+-exporttype
+-exportvar
+-fielduse
+-forblock               # tedious
+-ifblock                # tedious
+-namechecks             # tedious ANSI compliance checks
+-ptrarith               # tedious
+
+-compdestroy
+-mustdefine
+-sys-dir-errors
+
+-strictops
+-whileblock             # tedious
+
+# --- not-yet at checks level
++enumint
+-mustfree
+-predboolptr
+-usedef
+
+# --- not-yet at standard level
+-boolops
++boolint
++charint
++ignorequals
++matchanyintegral
index 4e83185b521a9e76171becffd89a3a8462509ae9..32f6fdb9dd06cfce6b89d1784b8dc0d4f8f9ee7b 100644 (file)
@@ -83,5 +83,5 @@ EXTRA_DIST = libelf.map
 
 .PSEUDO: lint
 lint:
-       $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \
+       $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) \
                $(addprefix $(srcdir)/,$(libelf_la_SOURCES))
index d933d56022e31e269fd85c24d0bc128eb155a34b..baa4d492a34f1fe86b9ada82d0aca1e4148d443d 100644 (file)
@@ -176,7 +176,7 @@ extern off_t elf_getbase (Elf *__elf)
 
 
 /* Retrieve file identification data.  */
-extern char *elf_getident (Elf *__elf, size_t *ptr)
+extern char *elf_getident (Elf *__elf, /*@null@*/ size_t *ptr)
        /*@modifies *ptr @*/;
 
 /* Retrieve class-dependent object file header.  */
@@ -219,7 +219,7 @@ extern size_t elf_ndxscn (Elf_Scn *__scn)
        /*@*/;
 
 /* Get section with next section index.  */
-extern Elf_Scn *elf_nextscn (Elf *__elf, Elf_Scn *__scn)
+extern Elf_Scn *elf_nextscn (Elf *__elf, /*@null@*/ Elf_Scn *__scn)
        /*@*/;
 
 /* Create a new section and append it at the end of the table.  */
index c0b6c0bffed3e53544bdc5d69a44623934442041..3bace196e67f0fd231d663ea0f84b70ce8f3f413 100644 (file)
@@ -9,6 +9,8 @@ else
 noinst_HEADERS = ltdl.h
 endif
 
+LINT = splint
+
 if CONVENIENCE_LTDL
 noinst_LTLIBRARIES = libltdlc.la
 endif
@@ -46,3 +48,8 @@ local-install-files: $(DISTFILES)
            || cp $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \
          fi; \
        done
+
+.PSEUDO: lint
+lint:
+       $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \
+               $(addprefix $(srcdir)/,$(libltdl_la_SOURCES))