OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [gas/] [remap.c] - Blame information for rev 438

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
/* Remap file names for debug info for GNU assembler.
2
   Copyright 2007 Free Software Foundation, Inc.
3
 
4
   This file is part of GAS, the GNU Assembler.
5
 
6
   GAS is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 3, or (at your option)
9
   any later version.
10
 
11
   GAS is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
   GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with GAS; see the file COPYING.  If not, write to the Free
18
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
19
   02110-1301, USA.  */
20
 
21
#include "as.h"
22
 
23
/* Structure recording the mapping from source file and directory
24
   names at compile time to those to be embedded in debug
25
   information.  */
26
typedef struct debug_prefix_map
27
{
28
  const char *old_prefix;
29
  const char *new_prefix;
30
  size_t old_len;
31
  size_t new_len;
32
  struct debug_prefix_map *next;
33
} debug_prefix_map;
34
 
35
/* Linked list of such structures.  */
36
debug_prefix_map *debug_prefix_maps;
37
 
38
 
39
/* Record a debug file prefix mapping.  ARG is the argument to
40
   -fdebug-prefix-map and must be of the form OLD=NEW.  */
41
 
42
void
43
add_debug_prefix_map (const char *arg)
44
{
45
  debug_prefix_map *map;
46
  const char *p;
47
  char *o;
48
 
49
  p = strchr (arg, '=');
50
  if (!p)
51
    {
52
      as_fatal (_("invalid argument '%s' to -fdebug-prefix-map"), arg);
53
      return;
54
    }
55
  map = (struct debug_prefix_map *) xmalloc (sizeof (debug_prefix_map));
56
  o = xstrdup (arg);
57
  map->old_prefix = o;
58
  map->old_len = p - arg;
59
  o[map->old_len] = 0;
60
  p++;
61
  map->new_prefix = xstrdup (p);
62
  map->new_len = strlen (p);
63
  map->next = debug_prefix_maps;
64
  debug_prefix_maps = map;
65
}
66
 
67
/* Perform user-specified mapping of debug filename prefixes.  Return
68
   the new name corresponding to FILENAME.  */
69
 
70
const char *
71
remap_debug_filename (const char *filename)
72
{
73
  debug_prefix_map *map;
74
  char *s;
75
  const char *name;
76
  size_t name_len;
77
 
78
  for (map = debug_prefix_maps; map; map = map->next)
79
    if (strncmp (filename, map->old_prefix, map->old_len) == 0)
80
      break;
81
  if (!map)
82
    return filename;
83
  name = filename + map->old_len;
84
  name_len = strlen (name) + 1;
85
  s = (char *) alloca (name_len + map->new_len);
86
  memcpy (s, map->new_prefix, map->new_len);
87
  memcpy (s + map->new_len, name, name_len);
88
  return xstrdup (s);
89
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.