X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Fieee.c;h=ad5ddc7d65cb3aed0b6adcd83e4d2703fb3b7ae6;hb=c2274b2767dba3175e585bd17f9f4a93b56cdc63;hp=a3bb93b8d7f49ba1f549e56604e6ee043390cb46;hpb=3dceb55b374a67ce1185ff7a3d637bda8affa785;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/ieee.c b/binutils/ieee.c index a3bb93b8d7..ad5ddc7d65 100644 --- a/binutils/ieee.c +++ b/binutils/ieee.c @@ -1,5 +1,5 @@ /* ieee.c -- Read and write IEEE-695 debugging information. - Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc. + Copyright 1996, 1998, 2000, 2001 Free Software Foundation, Inc. Written by Ian Lance Taylor . This file is part of GNU Binutils. @@ -30,6 +30,7 @@ #include "libiberty.h" #include "debug.h" #include "budbg.h" +#include "filenames.h" /* This structure holds an entry on the block stack. */ @@ -409,7 +410,7 @@ ieee_read_optional_number (info, pp, pv, ppresent) } ieee_error (info, *pp - 1, _("invalid number")); - return false; + return false; } /* Read a required string from an IEEE file. */ @@ -562,7 +563,7 @@ ieee_read_expression (info, pp, pv) ieee_error (info, start, _("unknown section")); return false; } - + if (esp - expr_stack >= EXPR_STACK_SIZE) { ieee_error (info, start, _("expression stack overflow")); @@ -4493,7 +4494,7 @@ ieee_start_range (info, low) r->next = info->pending_ranges; info->pending_ranges = r; return true; -} +} /* Finish a range started by ieee_start_range. */ @@ -4926,6 +4927,9 @@ ieee_start_compilation_unit (p, filename) { struct ieee_handle *info = (struct ieee_handle *) p; const char *modname; +#ifdef HAVE_DOS_BASED_FILE_SYSTEM + const char *backslash; +#endif char *c, *s; unsigned int nindx; @@ -4937,16 +4941,22 @@ ieee_start_compilation_unit (p, filename) info->filename = filename; modname = strrchr (filename, '/'); +#ifdef HAVE_DOS_BASED_FILE_SYSTEM + /* We could have a mixed forward/back slash case. */ + backslash = strrchr (filename, '\\'); + if (modname == NULL || (backslash != NULL && backslash > modname)) + modname = backslash; +#endif + if (modname != NULL) ++modname; +#ifdef HAVE_DOS_BASED_FILE_SYSTEM + else if (filename[0] && filename[1] == ':') + modname = filename + 2; +#endif else - { - modname = strrchr (filename, '\\'); - if (modname != NULL) - ++modname; - else - modname = filename; - } + modname = filename; + c = xstrdup (modname); s = strrchr (c, '.'); if (s != NULL) @@ -5195,21 +5205,29 @@ ieee_add_bb11 (info, sec, low, high) else { const char *filename, *modname; +#ifdef HAVE_DOS_BASED_FILE_SYSTEM + const char *backslash; +#endif char *c, *s; /* Start the enclosing BB10 block. */ filename = bfd_get_filename (info->abfd); modname = strrchr (filename, '/'); +#ifdef HAVE_DOS_BASED_FILE_SYSTEM + backslash = strrchr (filename, '\\'); + if (modname == NULL || (backslash != NULL && backslash > modname)) + modname = backslash; +#endif + if (modname != NULL) ++modname; +#ifdef HAVE_DOS_BASED_FILE_SYSTEM + else if (filename[0] && filename[1] == ':') + modname = filename + 2; +#endif else - { - modname = strrchr (filename, '\\'); - if (modname != NULL) - ++modname; - else - modname = filename; - } + modname = filename; + c = xstrdup (modname); s = strrchr (c, '.'); if (s != NULL) @@ -5829,7 +5847,7 @@ ieee_offset_type (p) which seems pretty important. I'm going to punt this for now. */ return ieee_int_type (p, 4, true); -} +} /* Make a method type. */ @@ -7303,7 +7321,7 @@ ieee_function_parameter (p, name, kind, val) return false; ++info->fnargcount; - return true; + return true; } /* Output pending function parameters. */