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