stm8-binutils-gdb/binutils_patches/0004-Added-debug-option-to-...

181 lines
4.0 KiB
Diff

From 85f95b1d46d4ab7bff529f9f0de5cc3263a205bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=85ke=20Rehnman?= <ake_rehnman_at_gmail_com>
Date: Sun, 23 Apr 2017 21:26:53 +0200
Subject: [PATCH 4/6] Added --debug option to gas to enable debugging printout
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Åke Rehnman <ake_rehnman_at_gmail_com>
---
gas/config/tc-stm8.c | 58 +++++++++++++++++++++++++++++++++++++---------------
1 file changed, 42 insertions(+), 16 deletions(-)
diff --git a/gas/config/tc-stm8.c b/gas/config/tc-stm8.c
index 84e667278e..1fa4503ce2 100644
--- a/gas/config/tc-stm8.c
+++ b/gas/config/tc-stm8.c
@@ -54,6 +54,7 @@ const char line_separator_chars[] = "{";
int md_short_jump_size = 3;
int md_long_jump_size = 4;
+int stm8_debug = 0;
/* The target specific pseudo-ops which we support. */
/* example:
@@ -95,17 +96,38 @@ md_show_usage (FILE *stream)
fprintf (stream, _("\
STM8 options:\n\
"));
+ fprintf (stream, _("\
+ --debug turn on debug messages\n"));
}
+enum options
+{
+ OPTION_DEBUG = OPTION_MD_BASE + 1,
+};
+
const char *md_shortopts = "";
struct option md_longopts[] =
{
+ { "debug", no_argument, NULL, OPTION_DEBUG },
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof (md_longopts);
+int
+md_parse_option (int c, const char *arg __attribute__((unused)))
+{
+ switch (c)
+ {
+ case OPTION_DEBUG:
+ stm8_debug = 1;
+ return 1;
+ }
+ return 0;
+}
+
+
void
md_begin (void)
{
@@ -228,7 +250,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
long val = * (long *) valP;
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
- print_fixup(fixP);
+ if (stm8_debug)
+ print_fixup(fixP);
switch (fixP->fx_r_type)
{
@@ -329,7 +352,8 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
{
arelent *reloc;
- print_fixup(fixp);
+ if (stm8_debug)
+ print_fixup(fixp);
reloc = XNEW (arelent);
reloc->sym_ptr_ptr = XNEW (asymbol *);
@@ -359,12 +383,6 @@ md_section_align (segT seg, valueT size)
return (size + mask) & ~mask;
}
-int
-md_parse_option (int c __attribute__((unused)), const char *arg __attribute__((unused)))
-{
- return 1;
-}
-
symbolS *
md_undefined_symbol (char *name)
{
@@ -529,7 +547,8 @@ int read_arg_ptr(char *str, expressionS *exps)
}
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
/* restore c */
if (p)
@@ -565,7 +584,8 @@ char* toupperstr(char *str);
char* toupperstr(char *str)
{
- for(int i = 0; str[i]; i++){
+ int i;
+ for(i = 0; str[i]; i++){
str[i] = toupper(str[i]);
}
return str;
@@ -591,7 +611,8 @@ int read_arg(char *str, expressionS *exps)
exps->X_md = OP_IMM;
input_line_pointer = str;
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
return 1;
}
@@ -654,7 +675,8 @@ int read_arg(char *str, expressionS *exps)
str=strtok(str,",");
input_line_pointer=str;
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
exps->X_md=OP_OFF_X;
return 1;
}
@@ -680,7 +702,8 @@ int read_arg(char *str, expressionS *exps)
str=strtok(str,",");
input_line_pointer=str;
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
exps->X_md=OP_OFF_X;
return 1;
}
@@ -691,7 +714,8 @@ int read_arg(char *str, expressionS *exps)
str=strtok(str,",");
input_line_pointer=str;
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
exps->X_md=OP_OFF_SP;
return 1;
}
@@ -705,7 +729,8 @@ int read_arg(char *str, expressionS *exps)
exps->X_md = OP_SHORTMEM;
input_line_pointer = str;
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
*p = c;
input_line_pointer += 6;
return 1;
@@ -713,7 +738,8 @@ int read_arg(char *str, expressionS *exps)
input_line_pointer = str;
expression(exps);
- print_expr(exps);
+ if (stm8_debug)
+ print_expr(exps);
if (exps->X_op == O_register)
{
--
2.12.2