| diff -u -p -r1.58 syms.c |
| --- binutils-2.21.1/bfd/syms.c 10 Jan 2013 20:03:55 -0000 1.58 |
| +++ binutils-2.21.1/bfd/syms.c 3 Jun 2013 04:01:18 -0000 |
| @@ -934,7 +934,7 @@ _bfd_stab_section_find_nearest_line (bfd |
| struct stab_find_info *info; |
| bfd_size_type stabsize, strsize; |
| bfd_byte *stab, *str; |
| - bfd_byte *last_stab = NULL; |
| + bfd_byte *last_stab, *last_str; |
| bfd_size_type stroff; |
| struct indexentry *indexentry; |
| char *file_name; |
| @@ -1147,8 +1147,9 @@ _bfd_stab_section_find_nearest_line (bfd |
| file_name = NULL; |
| directory_name = NULL; |
| saw_fun = 1; |
| + stroff = 0; |
| |
| - for (i = 0, stroff = 0, stab = info->stabs, str = info->strs; |
| + for (i = 0, last_stab = stab = info->stabs, last_str = str = info->strs; |
| i < info->indextablesize && stab < info->stabs + stabsize; |
| stab += STABSIZE) |
| { |
| @@ -1174,7 +1175,7 @@ _bfd_stab_section_find_nearest_line (bfd |
| { |
| info->indextable[i].val = bfd_get_32 (abfd, last_stab + VALOFF); |
| info->indextable[i].stab = last_stab; |
| - info->indextable[i].str = str; |
| + info->indextable[i].str = last_str; |
| info->indextable[i].directory_name = directory_name; |
| info->indextable[i].file_name = file_name; |
| info->indextable[i].function_name = NULL; |
| @@ -1192,6 +1193,7 @@ _bfd_stab_section_find_nearest_line (bfd |
| else |
| { |
| last_stab = stab; |
| + last_str = str; |
| if (stab + STABSIZE >= info->stabs + stabsize |
| || *(stab + STABSIZE + TYPEOFF) != (bfd_byte) N_SO) |
| { |
| @@ -1242,7 +1244,7 @@ _bfd_stab_section_find_nearest_line (bfd |
| { |
| info->indextable[i].val = bfd_get_32 (abfd, last_stab + VALOFF); |
| info->indextable[i].stab = last_stab; |
| - info->indextable[i].str = str; |
| + info->indextable[i].str = last_str; |
| info->indextable[i].directory_name = directory_name; |
| info->indextable[i].file_name = file_name; |
| info->indextable[i].function_name = NULL; |
| |