debug.c revision 77298
1/* This file is debug.c
2   Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992 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 2, 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
18   the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19
20/* Routines for debug use only.  */
21
22#include "as.h"
23#include "subsegs.h"
24
25dmp_frags ()
26{
27  frchainS *chp;
28  char *p;
29
30  for (chp = frchain_root; chp; chp = chp->frch_next)
31    {
32      switch (chp->frch_seg)
33	{
34	case SEG_DATA:
35	  p = "Data";
36	  break;
37	case SEG_TEXT:
38	  p = "Text";
39	  break;
40	default:
41	  p = "???";
42	  break;
43	}
44      printf ("\nSEGMENT %s %d\n", p, chp->frch_subseg);
45      dmp_frag (chp->frch_root, "\t");
46    }
47}
48
49dmp_frag (fp, indent)
50     struct frag *fp;
51     char *indent;
52{
53  for (; fp; fp = fp->fr_next)
54    {
55      printf ("%sFRAGMENT @ 0x%x\n", indent, fp);
56      switch (fp->fr_type)
57	{
58	case rs_align:
59	  printf ("%srs_align(%d)\n", indent, fp->fr_offset);
60	  break;
61	case rs_fill:
62	  printf ("%srs_fill(%d)\n", indent, fp->fr_offset);
63	  printf ("%s", indent);
64	  var_chars (fp, fp->fr_var + fp->fr_fix);
65	  printf ("%s\t repeated %d times,", indent, fp->fr_offset);
66	  printf (" fixed length if # chars == 0)\n");
67	  break;
68	case rs_org:
69	  printf ("%srs_org(%d+sym @0x%x)\n", indent,
70		  fp->fr_offset, fp->fr_symbol);
71	  printf ("%sfill with ", indent);
72	  var_chars (fp, 1);
73	  printf ("\n");
74	  break;
75	case rs_machine_dependent:
76	  printf ("%smachine_dep\n", indent);
77	  break;
78	default:
79	  printf ("%sunknown type\n", indent);
80	  break;
81	}
82      printf ("%saddr=%d(0x%x)\n", indent, fp->fr_address, fp->fr_address);
83      printf ("%sfr_fix=%d\n", indent, fp->fr_fix);
84      printf ("%sfr_var=%d\n", indent, fp->fr_var);
85      printf ("%sfr_offset=%d\n", indent, fp->fr_offset);
86      printf ("%schars @ 0x%x\n", indent, fp->fr_literal);
87      printf ("\n");
88    }
89}
90
91var_chars (fp, n)
92     struct frag *fp;
93     int n;
94{
95  unsigned char *p;
96
97  for (p = (unsigned char *) fp->fr_literal; n; n--, p++)
98    {
99      printf ("%02x ", *p);
100    }
101}
102
103/* end of debug.c */
104