diff options
author | Nick Clifton <nickc@redhat.com> | 2003-12-16 11:10:42 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2003-12-16 11:10:42 +0000 |
commit | 3b267931f95e8987e89d56c2db742a685eaf9ddb (patch) | |
tree | 0f27dcddd21366f7d508b4ea35ebac3a3b3495f5 | |
parent | 8796cc011cdb36c01477d4bb3b6d9603727df401 (diff) | |
download | gdb-3b267931f95e8987e89d56c2db742a685eaf9ddb.tar.gz |
Only skip one instance of each prefix character, if they are present.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/peicode.h | 38 |
2 files changed, 40 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index bb4c9ce908e..4b354be12f3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2003-12-16 Eric Youngdale <eric@mkssoftware.com> + Nick Clifton <nickc@redhat.com> + + * peicode.h (pe_ILF_build_a_bfd): Only skip one instance of each + prefix character, if they are present. + 2003-12-15 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru> Nick Clifton <nickc@redhat.com> diff --git a/bfd/peicode.h b/bfd/peicode.h index 41fcbbcb652..41445e592c3 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -902,10 +902,40 @@ pe_ILF_build_a_bfd (bfd * abfd, symbol = symbol_name; if (import_name_type != IMPORT_NAME) - /* Skip any prefix in symbol_name. */ - while (*symbol == '@' || * symbol == '?' || * symbol == '_') - ++ symbol; - + { + bfd_boolean skipped_leading_underscore = FALSE; + bfd_boolean skipped_leading_at = FALSE; + bfd_boolean skipped_leading_question_mark = FALSE; + bfd_boolean check_again; + + /* Skip any prefix in symbol_name. */ + -- symbol; + do + { + check_again = FALSE; + ++ symbol; + + switch (*symbol) + { + case '@': + if (! skipped_leading_at) + check_again = skipped_leading_at = TRUE; + break; + case '?': + if (! skipped_leading_question_mark) + check_again = skipped_leading_question_mark = TRUE; + break; + case '_': + if (! skipped_leading_underscore) + check_again = skipped_leading_underscore = TRUE; + break; + default: + break; + } + } + while (check_again); + } + if (import_name_type == IMPORT_NAME_UNDECORATE) { /* Truncate at the first '@' */ |