* ldlang.c (print_assignment): Update print_dot for assignments to ".".
* ldexp.c (exp_print_token): Add "infix_p" argument. (exp_print_tree): Update accordingly.
This commit is contained in:
parent
07b678c0c3
commit
7b17f854f7
3 changed files with 43 additions and 21 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2002-04-30 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
|
* ldlang.c (print_assignment): Update print_dot for assignments to ".".
|
||||||
|
* ldexp.c (exp_print_token): Add "infix_p" argument.
|
||||||
|
(exp_print_tree): Update accordingly.
|
||||||
|
|
||||||
2002-04-28 Alan Modra <amodra@bigpond.net.au>
|
2002-04-28 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* Makefile.am (mpw): New maintainer mode rule to make mpw-*.c files.
|
* Makefile.am (mpw): New maintainer mode rule to make mpw-*.c files.
|
||||||
|
|
46
ld/ldexp.c
46
ld/ldexp.c
|
@ -41,7 +41,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
#include "libiberty.h"
|
#include "libiberty.h"
|
||||||
#include "safe-ctype.h"
|
#include "safe-ctype.h"
|
||||||
|
|
||||||
static void exp_print_token PARAMS ((token_code_type code));
|
static void exp_print_token PARAMS ((token_code_type code, int infix_p));
|
||||||
static void make_abs PARAMS ((etree_value_type *ptr));
|
static void make_abs PARAMS ((etree_value_type *ptr));
|
||||||
static etree_value_type new_abs PARAMS ((bfd_vma value));
|
static etree_value_type new_abs PARAMS ((bfd_vma value));
|
||||||
static void check PARAMS ((lang_output_section_statement_type *os,
|
static void check PARAMS ((lang_output_section_statement_type *os,
|
||||||
|
@ -67,9 +67,13 @@ static etree_value_type exp_fold_tree_no_dot
|
||||||
|
|
||||||
struct exp_data_seg exp_data_seg;
|
struct exp_data_seg exp_data_seg;
|
||||||
|
|
||||||
|
/* Print the string representation of the given token. Surround it
|
||||||
|
with spaces if INFIX_P is true. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
exp_print_token (code)
|
exp_print_token (code, infix_p)
|
||||||
token_code_type code;
|
token_code_type code;
|
||||||
|
int infix_p;
|
||||||
{
|
{
|
||||||
static CONST struct
|
static CONST struct
|
||||||
{
|
{
|
||||||
|
@ -122,20 +126,22 @@ exp_print_token (code)
|
||||||
};
|
};
|
||||||
unsigned int idx;
|
unsigned int idx;
|
||||||
|
|
||||||
for (idx = ARRAY_SIZE (table); idx--;)
|
for (idx = 0; idx < ARRAY_SIZE (table); idx++)
|
||||||
{
|
if (table[idx].code == code)
|
||||||
if (table[idx].code == code)
|
break;
|
||||||
{
|
|
||||||
fprintf (config.map_file, " %s ", table[idx].name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Not in table, just print it alone. */
|
if (infix_p)
|
||||||
if (code < 127)
|
fputc (' ', config.map_file);
|
||||||
fprintf (config.map_file, " %c ", code);
|
|
||||||
|
if (idx < ARRAY_SIZE (table))
|
||||||
|
fputs (table[idx].name, config.map_file);
|
||||||
|
else if (code < 127)
|
||||||
|
fputc (code, config.map_file);
|
||||||
else
|
else
|
||||||
fprintf (config.map_file, " <code %d> ", code);
|
fprintf (config.map_file, "<code %d>", code);
|
||||||
|
|
||||||
|
if (infix_p)
|
||||||
|
fputc (' ', config.map_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -955,7 +961,7 @@ exp_print_tree (tree)
|
||||||
fprintf (config.map_file, "%s (UNDEFINED)", tree->assign.dst->name);
|
fprintf (config.map_file, "%s (UNDEFINED)", tree->assign.dst->name);
|
||||||
#endif
|
#endif
|
||||||
fprintf (config.map_file, "%s", tree->assign.dst);
|
fprintf (config.map_file, "%s", tree->assign.dst);
|
||||||
exp_print_token (tree->type.node_code);
|
exp_print_token (tree->type.node_code, true);
|
||||||
exp_print_tree (tree->assign.src);
|
exp_print_tree (tree->assign.src);
|
||||||
break;
|
break;
|
||||||
case etree_provide:
|
case etree_provide:
|
||||||
|
@ -967,7 +973,7 @@ exp_print_tree (tree)
|
||||||
case etree_binary:
|
case etree_binary:
|
||||||
fprintf (config.map_file, "(");
|
fprintf (config.map_file, "(");
|
||||||
exp_print_tree (tree->binary.lhs);
|
exp_print_tree (tree->binary.lhs);
|
||||||
exp_print_token (tree->type.node_code);
|
exp_print_token (tree->type.node_code, true);
|
||||||
exp_print_tree (tree->binary.rhs);
|
exp_print_tree (tree->binary.rhs);
|
||||||
fprintf (config.map_file, ")");
|
fprintf (config.map_file, ")");
|
||||||
break;
|
break;
|
||||||
|
@ -979,10 +985,10 @@ exp_print_tree (tree)
|
||||||
exp_print_tree (tree->trinary.rhs);
|
exp_print_tree (tree->trinary.rhs);
|
||||||
break;
|
break;
|
||||||
case etree_unary:
|
case etree_unary:
|
||||||
exp_print_token (tree->unary.type.node_code);
|
exp_print_token (tree->unary.type.node_code, false);
|
||||||
if (tree->unary.child)
|
if (tree->unary.child)
|
||||||
{
|
{
|
||||||
fprintf (config.map_file, "(");
|
fprintf (config.map_file, " (");
|
||||||
exp_print_tree (tree->unary.child);
|
exp_print_tree (tree->unary.child);
|
||||||
fprintf (config.map_file, ")");
|
fprintf (config.map_file, ")");
|
||||||
}
|
}
|
||||||
|
@ -1004,9 +1010,9 @@ exp_print_tree (tree)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
exp_print_token (tree->type.node_code);
|
exp_print_token (tree->type.node_code, false);
|
||||||
if (tree->name.name)
|
if (tree->name.name)
|
||||||
fprintf (config.map_file, "(%s)", tree->name.name);
|
fprintf (config.map_file, " (%s)", tree->name.name);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
12
ld/ldlang.c
12
ld/ldlang.c
|
@ -2211,7 +2211,17 @@ print_assignment (assignment, output_section)
|
||||||
result = exp_fold_tree (assignment->exp->assign.src, output_section,
|
result = exp_fold_tree (assignment->exp->assign.src, output_section,
|
||||||
lang_final_phase_enum, print_dot, &print_dot);
|
lang_final_phase_enum, print_dot, &print_dot);
|
||||||
if (result.valid_p)
|
if (result.valid_p)
|
||||||
minfo ("0x%V", result.value + result.section->bfd_section->vma);
|
{
|
||||||
|
const char *dst;
|
||||||
|
bfd_vma value;
|
||||||
|
|
||||||
|
value = result.value + result.section->bfd_section->vma;
|
||||||
|
dst = assignment->exp->assign.dst;
|
||||||
|
|
||||||
|
minfo ("0x%V", value);
|
||||||
|
if (dst[0] == '.' && dst[1] == 0)
|
||||||
|
print_dot = value;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
minfo ("*undef* ");
|
minfo ("*undef* ");
|
||||||
|
|
Loading…
Reference in a new issue