From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3485 invoked by alias); 23 Aug 2010 13:55:19 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 3443 invoked by uid 9674); 23 Aug 2010 13:55:19 -0000 Date: Mon, 23 Aug 2010 13:55:00 -0000 Message-ID: <20100823135519.3427.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] archer-jankratochvil-entryval: Merge remote branch 'origin/master' into archer-jankratochvil-entryval X-Git-Refname: refs/heads/archer-jankratochvil-entryval X-Git-Reftype: branch X-Git-Oldrev: 42edcdb9071ed3546fb8c9c62c041b3c02a9f2ae X-Git-Newrev: 393cd96e4cc1f470b1d10a0c309cff93bb826539 X-SW-Source: 2010-q3/txt/msg00053.txt.bz2 List-Id: The branch, archer-jankratochvil-entryval has been updated via 393cd96e4cc1f470b1d10a0c309cff93bb826539 (commit) via 82a33011e68dd5e799925f98b5552ac14e152fc6 (commit) via 04e537a8357644a10f6ccb48e02ec5408ed42399 (commit) via ec45ed45c51797421d2f3c29af22b0903bf7e3bd (commit) via 7ff4961fb8778ced9278c6cac343cfbd765ade3d (commit) via 958e73c5f68f7c8298be9a9587862662f82c4567 (commit) via 966abcb475a1dc21aa88f9147fdefc39ea31efa4 (commit) via 7c6ebe5837e970eb0e659192e42a45604d6bb33f (commit) via 97d5a52aa3bb8f421d76773cc0d726e57561eed2 (commit) via 93c0500f53bbf457e59e7e0786d42f0bd3cf8722 (commit) via 53b78a88d37ac51a998012a0a18f494944aa6f7f (commit) via 6b2f893c58141603b916d811944e6e1c902ffb04 (commit) via 282b8d8b60c3b88606a3d3c89ccd4fbd56605a29 (commit) via 4a574bb5a8f9edac8fb11da52ab93069b5055bca (commit) via 5c66b2073343c84cb1d8ba188cc5dc6e22797b78 (commit) via 76a171988636eddd5f3b8f742abcd76cd0b6a646 (commit) via 68dcd8ee59a320f57f03300c6312e18430fc9a8e (commit) via f301c45a601be6dfe2c76b277d6d7f0d1e63f6f8 (commit) from 42edcdb9071ed3546fb8c9c62c041b3c02a9f2ae (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 393cd96e4cc1f470b1d10a0c309cff93bb826539 Merge: 42edcdb 82a3301 Author: Jan Kratochvil Date: Mon Aug 23 15:55:08 2010 +0200 Merge remote branch 'origin/master' into archer-jankratochvil-entryval ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 24 + bfd/configure | 12 +- bfd/elf32-m68k.c | 32 +- bfd/elf32-sh.c | 69 ++- bfd/elflink.c | 1 + bfd/merge.c | 4 - bfd/version.h | 2 +- config/ChangeLog | 6 + config/stdint.m4 | 8 +- gdb/ChangeLog | 52 ++ gdb/dwarf2read.c | 122 ++++- gdb/python/python.c | 22 +- gdb/ser-go32.c | 7 + gdb/ser-mingw.c | 41 ++- gdb/ser-pipe.c | 33 +- gdb/serial.c | 66 ++- gdb/serial.h | 14 + gdb/testsuite/ChangeLog | 8 + gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.S | 632 ++++++++++++++++++++ .../gdb.dwarf2/dw2-double-set-die-type.exp | 41 ++ gdb/testsuite/gdb.dwarf2/pr11465.S | 355 +++++++++++ gdb/testsuite/gdb.dwarf2/pr11465.exp | 40 ++ gdb/version.in | 2 +- libdecnumber/ChangeLog | 4 + libdecnumber/configure | 12 +- libiberty/ChangeLog | 7 + libiberty/pex-common.c | 14 +- 27 files changed, 1516 insertions(+), 114 deletions(-) create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.S create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.exp create mode 100644 gdb/testsuite/gdb.dwarf2/pr11465.S create mode 100644 gdb/testsuite/gdb.dwarf2/pr11465.exp First 500 lines of diff: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9a52165..7ae8300 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,27 @@ +2010-08-22 H.J. Lu + + PR ld/11933 + * elflink.c (elf_link_add_object_symbols): Don't check relocation + if input ELF object ID doesn't match output. + +2010-08-21 Ralf Wildenhues + + * configure: Regenerate. + +2010-08-20 H.J. Lu + + * merge.c (sec_merge_emit): Revert the last checkin. + +2010-08-20 Maciej W. Rozycki + + * elf32-sh.c (sh_elf_relocate_section): Handle non-ELF output + BFD. + +2010-08-20 Maciej W. Rozycki + + * elf32-m68k.c (bfd_elf_m68k_set_target_options): Don't set GOT + options unless an m68k hash table has been found. + 2010-08-20 Nick Clifton * merge.c (sec_merge_emit): Do not zero pad sections that do not diff --git a/bfd/configure b/bfd/configure index 51a4158..e1ea93b 100755 --- a/bfd/configure +++ b/bfd/configure @@ -13264,8 +13264,7 @@ _ACEOF $as_echo_n "checking for type equivalent to int8_t... " >&6; } case "$ac_cv_sizeof_char" in 1) acx_cv_type_int8_t=char ;; - *) { as_fn_set_status please report a bug -as_fn_error "no 8-bit type" "$LINENO" 5; } + *) as_fn_error "no 8-bit type, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int8_t" >&5 $as_echo "$acx_cv_type_int8_t" >&6; } @@ -13275,8 +13274,7 @@ $as_echo_n "checking for type equivalent to int16_t... " >&6; } case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in 2:*) acx_cv_type_int16_t=int ;; *:2) acx_cv_type_int16_t=short ;; - *) { as_fn_set_status please report a bug -as_fn_error "no 16-bit type" "$LINENO" 5; } + *) as_fn_error "no 16-bit type, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int16_t" >&5 $as_echo "$acx_cv_type_int16_t" >&6; } @@ -13286,8 +13284,7 @@ $as_echo_n "checking for type equivalent to int32_t... " >&6; } case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in 4:*) acx_cv_type_int32_t=int ;; *:4) acx_cv_type_int32_t=long ;; - *) { as_fn_set_status please report a bug -as_fn_error "no 32-bit type" "$LINENO" 5; } + *) as_fn_error "no 32-bit type, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int32_t" >&5 $as_echo "$acx_cv_type_int32_t" >&6; } @@ -13314,8 +13311,7 @@ $as_echo_n "checking for type equivalent to intptr_t... " >&6; } 2) acx_cv_type_intptr_t=int16_t ;; 4) acx_cv_type_intptr_t=int32_t ;; 8) acx_cv_type_intptr_t=int64_t ;; - *) { as_fn_set_status please report a bug -as_fn_error "no equivalent for intptr_t" "$LINENO" 5; } + *) as_fn_error "no equivalent for intptr_t, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_intptr_t" >&5 $as_echo "$acx_cv_type_intptr_t" >&6; } diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index c0a5ef1..975207f 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -4745,34 +4745,44 @@ void bfd_elf_m68k_set_target_options (struct bfd_link_info *info, int got_handling) { struct elf_m68k_link_hash_table *htab; - - htab = elf_m68k_hash_table (info); + bfd_boolean use_neg_got_offsets_p; + bfd_boolean allow_multigot_p; + bfd_boolean local_gp_p; switch (got_handling) { case 0: /* --got=single. */ - htab->local_gp_p = FALSE; - htab->use_neg_got_offsets_p = FALSE; - htab->allow_multigot_p = FALSE; + local_gp_p = FALSE; + use_neg_got_offsets_p = FALSE; + allow_multigot_p = FALSE; break; case 1: /* --got=negative. */ - htab->local_gp_p = TRUE; - htab->use_neg_got_offsets_p = TRUE; - htab->allow_multigot_p = FALSE; + local_gp_p = TRUE; + use_neg_got_offsets_p = TRUE; + allow_multigot_p = FALSE; break; case 2: /* --got=multigot. */ - htab->local_gp_p = TRUE; - htab->use_neg_got_offsets_p = TRUE; - htab->allow_multigot_p = TRUE; + local_gp_p = TRUE; + use_neg_got_offsets_p = TRUE; + allow_multigot_p = TRUE; break; default: BFD_ASSERT (FALSE); + return; + } + + htab = elf_m68k_hash_table (info); + if (htab != NULL) + { + htab->local_gp_p = local_gp_p; + htab->use_neg_got_offsets_p = use_neg_got_offsets_p; + htab->allow_multigot_p = allow_multigot_p; } } diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index a4fdd70..e48017e 100644 --- a/bfd/elf32-sh.c +++ b/bfd/elf32-sh.c @@ -3929,47 +3929,48 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel, *relend; - bfd *dynobj; + bfd *dynobj = NULL; bfd_vma *local_got_offsets; - asection *sgot; - asection *sgotplt; - asection *splt; - asection *sreloc; - asection *srelgot; + asection *sgot = NULL; + asection *sgotplt = NULL; + asection *splt = NULL; + asection *sreloc = NULL; + asection *srelgot = NULL; bfd_boolean is_vxworks_tls; unsigned isec_segment, got_segment, plt_segment, check_segment[2]; + bfd_boolean fdpic_p = FALSE; BFD_ASSERT (is_sh_elf (input_bfd)); htab = sh_elf_hash_table (info); - if (htab == NULL) - return FALSE; + if (htab != NULL) + { + dynobj = htab->root.dynobj; + sgot = htab->sgot; + sgotplt = htab->sgotplt; + splt = htab->splt; + fdpic_p = htab->fdpic_p; + } symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); - dynobj = htab->root.dynobj; local_got_offsets = elf_local_got_offsets (input_bfd); isec_segment = sh_elf_osec_to_segment (output_bfd, input_section->output_section); - if (htab->fdpic_p && htab->sgot) + if (fdpic_p && sgot) got_segment = sh_elf_osec_to_segment (output_bfd, - htab->sgot->output_section); + sgot->output_section); else got_segment = -1; - if (htab->fdpic_p && htab->splt) + if (fdpic_p && splt) plt_segment = sh_elf_osec_to_segment (output_bfd, - htab->splt->output_section); + splt->output_section); else plt_segment = -1; - sgot = htab->sgot; - sgotplt = htab->sgotplt; - splt = htab->splt; - sreloc = NULL; - srelgot = NULL; /* We have to handle relocations in vxworks .tls_vars sections specially, because the dynamic loader is 'weird'. */ - is_vxworks_tls = (htab->vxworks_p && info->shared + is_vxworks_tls = (htab && htab->vxworks_p && info->shared && !strcmp (input_section->output_section->name, ".tls_vars")); @@ -4147,7 +4148,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, { bfd_boolean dyn; - dyn = htab->root.dynamic_sections_created; + dyn = htab ? htab->root.dynamic_sections_created : FALSE; sec = h->root.u.def.section; /* In these cases, we don't need the relocation value. We check specially because in some obscure cases @@ -4461,7 +4462,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, outrel.r_addend = addend; } #endif - else if (htab->fdpic_p + else if (fdpic_p && (h == NULL || ((info->symbolic || h->dynindx == -1) && h->def_regular))) @@ -4515,12 +4516,14 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, if (! relocate) continue; } - else if (htab->fdpic_p && !info->shared + else if (fdpic_p && !info->shared && r_type == R_SH_DIR32 && (input_section->flags & SEC_ALLOC) != 0) { bfd_vma offset; + BFD_ASSERT (htab); + if (sh_elf_osec_readonly_p (output_bfd, input_section->output_section)) { @@ -4569,6 +4572,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, /* Relocation is to the entry for this symbol in the global offset table extension for the procedure linkage table. */ + BFD_ASSERT (htab); BFD_ASSERT (sgotplt != NULL); relocation = (sgotplt->output_offset + (get_plt_index (htab->plt_info, h->plt.offset) @@ -4594,6 +4598,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, /* Relocation is to the entry for this symbol in the global offset table. */ + BFD_ASSERT (htab); BFD_ASSERT (sgot != NULL); check_segment[0] = check_segment[1] = -1; @@ -4652,7 +4657,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, /* If we initialize the GOT entry here with a valid symbol address, also add a fixup. */ - if (htab->fdpic_p && !info->shared + if (fdpic_p && !info->shared && sh_elf_hash_entry (h)->got_type == GOT_NORMAL && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak)) @@ -4713,7 +4718,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, outrel.r_offset = (sgot->output_section->vma + sgot->output_offset + off); - if (htab->fdpic_p) + if (fdpic_p) { int dynindx = elf_section_data (sec->output_section)->dynindx; @@ -4730,7 +4735,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, loc += srelgot->reloc_count++ * sizeof (Elf32_External_Rela); bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc); } - else if (htab->fdpic_p + else if (fdpic_p && (sh_elf_local_got_type (input_bfd) [r_symndx] == GOT_NORMAL)) sh_elf_add_rofixup (output_bfd, htab->srofixup, @@ -4775,6 +4780,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, we place at the start of the .got.plt section. This is the same as the start of the output .got section, unless there are function descriptors in front of it. */ + BFD_ASSERT (htab); BFD_ASSERT (sgotplt != NULL); check_segment[0] = got_segment; relocation -= sgotplt->output_section->vma + sgotplt->output_offset @@ -4875,6 +4881,8 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, bfd_vma reloc_offset; int reloc_type = R_SH_FUNCDESC; + BFD_ASSERT (htab); + check_segment[0] = check_segment[1] = -1; /* FIXME: See what FRV does for global symbols in the @@ -4892,7 +4900,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - reloc_section = htab->sgot; + reloc_section = sgot; if (h != NULL) reloc_offset = h->got.offset; @@ -5087,6 +5095,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, executable and --export-dynamic. If such symbols get ld.so-allocated descriptors we can not use R_SH_GOTOFFFUNCDESC for them. */ + BFD_ASSERT (htab); check_segment[0] = check_segment[1] = -1; relocation = 0; @@ -5139,8 +5148,8 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, relocation = htab->sfuncdesc->output_offset + (offset & ~1); } - relocation -= htab->root.hgot->root.u.def.value - + htab->sgotplt->output_offset; + relocation -= (htab->root.hgot->root.u.def.value + + sgotplt->output_offset); #ifdef GOT_BIAS relocation -= GOT_BIAS; #endif @@ -5175,6 +5184,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, case R_SH_TLS_GD_32: case R_SH_TLS_IE_32: + BFD_ASSERT (htab); check_segment[0] = check_segment[1] = -1; r_type = sh_elf_optimized_tls_reloc (info, r_type, h == NULL); got_type = GOT_UNKNOWN; @@ -5425,6 +5435,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, goto final_link_relocate; case R_SH_TLS_LD_32: + BFD_ASSERT (htab); check_segment[0] = check_segment[1] = -1; if (! info->shared) { @@ -5558,7 +5569,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } relocation_done: - if (htab->fdpic_p && check_segment[0] != (unsigned) -1 + if (fdpic_p && check_segment[0] != (unsigned) -1 && check_segment[0] != check_segment[1]) { /* We don't want duplicate errors for undefined symbols. */ diff --git a/bfd/elflink.c b/bfd/elflink.c index 074229f..2f67c47 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -4791,6 +4791,7 @@ error_free_dyn: if (! dynamic && is_elf_hash_table (htab) && bed->check_relocs != NULL + && elf_object_id (abfd) == elf_hash_table_id (htab) && (*bed->relocs_compatible) (abfd->xvec, info->output_bfd->xvec)) { asection *o; diff --git a/bfd/merge.c b/bfd/merge.c index 180af26..7aa088f 100644 --- a/bfd/merge.c +++ b/bfd/merge.c @@ -307,9 +307,6 @@ sec_merge_emit (bfd *abfd, struct sec_merge_hash_entry *entry) len = -off & (entry->alignment - 1); if (len != 0) { - /* We should never have an entry with an alignment - greater than the section's alignment. */ - BFD_ASSERT (len <= (bfd_size_type) (1 << alignment_power)); if (bfd_bwrite (pad, len, abfd) != len) goto err; off += len; @@ -327,7 +324,6 @@ sec_merge_emit (bfd *abfd, struct sec_merge_hash_entry *entry) /* Trailing alignment needed? */ off = sec->size - off; if (off != 0 - && alignment_power && bfd_bwrite (pad, off, abfd) != off) goto err; diff --git a/bfd/version.h b/bfd/version.h index c5ed0ea..8b5e999 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20100820 +#define BFD_VERSION_DATE 20100823 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/config/ChangeLog b/config/ChangeLog index 41c66e9..22a3641 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,9 @@ +2010-08-21 Ralf Wildenhues + + PR target/45084 + * stdint.m4 (GCC_HEADER_STDINT): Use m4 quotes for arguments + of AC_MSG_ERROR. + 2010-07-02 Rainer Orth * gc++filt.m4: New file. diff --git a/config/stdint.m4 b/config/stdint.m4 index d63081d..fbdd586 100644 --- a/config/stdint.m4 +++ b/config/stdint.m4 @@ -146,7 +146,7 @@ if test $acx_cv_header_stdint = stddef.h; then AC_MSG_CHECKING(for type equivalent to int8_t) case "$ac_cv_sizeof_char" in 1) acx_cv_type_int8_t=char ;; - *) AC_MSG_ERROR(no 8-bit type, please report a bug) + *) AC_MSG_ERROR([no 8-bit type, please report a bug]) esac AC_MSG_RESULT($acx_cv_type_int8_t) @@ -154,7 +154,7 @@ if test $acx_cv_header_stdint = stddef.h; then case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in 2:*) acx_cv_type_int16_t=int ;; *:2) acx_cv_type_int16_t=short ;; - *) AC_MSG_ERROR(no 16-bit type, please report a bug) + *) AC_MSG_ERROR([no 16-bit type, please report a bug]) esac AC_MSG_RESULT($acx_cv_type_int16_t) @@ -162,7 +162,7 @@ if test $acx_cv_header_stdint = stddef.h; then case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in 4:*) acx_cv_type_int32_t=int ;; *:4) acx_cv_type_int32_t=long ;; - *) AC_MSG_ERROR(no 32-bit type, please report a bug) + *) AC_MSG_ERROR([no 32-bit type, please report a bug]) esac AC_MSG_RESULT($acx_cv_type_int32_t) fi @@ -185,7 +185,7 @@ if test "$ac_cv_type_uintptr_t" != yes; then 2) acx_cv_type_intptr_t=int16_t ;; 4) acx_cv_type_intptr_t=int32_t ;; 8) acx_cv_type_intptr_t=int64_t ;; - *) AC_MSG_ERROR(no equivalent for intptr_t, please report a bug) + *) AC_MSG_ERROR([no equivalent for intptr_t, please report a bug]) esac AC_MSG_RESULT($acx_cv_type_intptr_t) fi diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5fe8c64..e74be97 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,55 @@ +2010-08-20 Pedro Alves + + * python/python.c: Include "serial.h". + (gdbpy_event_fds): Change type to `struct serial *' a array from + int array. + (gdbpy_run_events): Change parameters. Use serial_readchar in + place of read. + (gdbpy_post_event): Use serial_write in place of write. + (gdbpy_initialize_events): Use serial_pipe instead of pipe, and + serial_async in place of add_file_handler. + +2010-08-20 Pedro Alves + + * serial.h (gdb_pipe, serial_pipe): Declare. + * serial.c (serial_interface_lookup): Take a const char pointer. + (serial_fdopen): Rename to ... + (serial_fdopen_ops): ... this. Add an OPS parameter and use it. + Call the OPS' fdopen function if there is one. + (serial_fdopen): Rewrite as wrapper to serial_fdopen_ops. + (serial_pipe): New. + (struct serial_ops) : New field. + + * ser-mingw.c (free_pipe_state): + (free_pipe_state): Close output on non-pex pipes. + (pipe_windows_fdopen): New. + (gdb_pipe): New. + (_initialize_ser_windows): Register pipe_windows_fdopen. + * ser-go32.c (gdb_pipe): New. + * ser-pipe.c (pipe_close): Close file descriptor even if there's + no state pointer. + (pipe_ops): Delete. + (gdb_pipe): New. + +2010-08-20 Keith Seitz + + PR symtab/11465: + * dwarf2read.c (struct delayed_method_info): New struct. + (struct dwarf2_cu): Add vector method_list. + (scan_partial_symbols): Count methods for union, class, structure, + and interface types. + (add_to_method_list): New function. + (free_delayed_list): New function. hooks/post-receive -- Repository for Project Archer.