Output hex with local_hex_string for Modula-2 support.
[deliverable/binutils-gdb.git] / ld / ldwarn.c
CommitLineData
812df84b
SC
1#include "sysdep.h"
2#include "bfd.h"
3#include "ldsym.h"
4
5
6/* we keep all the warning symbols in a list, if we ever get a
7 warning, we'll search it the hard way. This won't be to bad since
8 warnings are infrequent, and never that many (true or false ?).
9
10*/
11
12typedef struct warning_list_struct {
13 struct warning_list_struct *next;
14 asymbol *sym;
15} warning_list_type;
16
17
18static warning_list_type *warning_list;
19
20
21
22/* This is a warning symbol, add the error text to a list we keep, and mark
23 the symbol referenced as requiring a warning */
24
25
26void
27DEFUN(add_warning,(sym),
28 asymbol *sym)
29{
30 CONST char *name = ((asymbol *)(sym->value))->name;
31 warning_list_type *new;
32
33 ldsym_type *lookup = ldsym_get(name);
34
35 lookup->flags |= SYM_WARNING;
36
37 new = (warning_list_type *)ldmalloc(sizeof(warning_list_type));
38 new->next = warning_list;
39 new->sym = sym;
40 warning_list = new;
41}
42
43/* run through the list we kept, and find the warning associated with
44 this symbol */
45CONST char *
46DEFUN(fetch_warning,(sym),
47asymbol *sym)
48{
49 warning_list_type *ptr = warning_list;
50 while (ptr != (warning_list_type *)NULL) {
51 if (strcmp(((asymbol*)(ptr->sym->value))->name, sym->name) == 0) {
52 return ptr->sym->name;
53 }
54 ptr = ptr->next;
55 }
56 return "This is a warning without a message !";
57}
58
59
60void
61DEFUN(produce_warnings,(lgs,it),
62 ldsym_type *lgs AND
63 asymbol *it)
64{
65 asymbol **ptr;
66 ptr = lgs->srefs_chain;
67 while (ptr != (asymbol **)NULL) {
68 asymbol *ref = *ptr;
69 info("%B: %s\n", ref->the_bfd, fetch_warning(it));
70 ptr = (asymbol **)(ref->udata);
71 }
72}
This page took 0.025974 seconds and 4 git commands to generate.