3 #include "../bfd/seclet.h"
6 #define MAX_ERRORS_IN_A_ROW 5
8 extern ld_config_type config
;
10 extern bfd_error_vector_type bfd_error_vector
;
13 /* BFD has failed to link something, give a better error message */
16 DEFUN(ld_undefined_symbol
,(relent
, seclet
),
17 CONST arelent
*relent AND
18 bfd_seclet_type
*seclet
)
20 asymbol
*s
= *(relent
->sym_ptr_ptr
);
21 static asymbol
*error_symbol
;
22 static unsigned int error_count
;
23 if (seclet
!= (bfd_seclet_type
*)NULL
)
26 asection
*section
= seclet
->u
.indirect
.section
;
27 bfd
*abfd
= section
->owner
;
30 /* We remember the symbol, and never print more than
31 a reasonable number of them in a row */
32 if (s
== error_symbol
) {
39 if (error_count
< MAX_ERRORS_IN_A_ROW
) {
40 einfo("%C: undefined reference to `%T'\n",
41 abfd
,section
, seclet
->u
.indirect
.symbols
,
43 config
.make_executable
= false;
46 else if (error_count
== MAX_ERRORS_IN_A_ROW
) {
47 einfo("%C: more undefined references to `%T' follow\n",
49 seclet
->u
.indirect
.symbols
,
53 /* Don't print any more */
58 einfo("undefined reference to %s\n", (*(relent
->sym_ptr_ptr
))->name
);
62 DEFUN(ld_reloc_truncated
,(relent
, seclet
),
63 CONST arelent
*relent AND
64 bfd_seclet_type
*seclet
)
66 asymbol
*s
= *(relent
->sym_ptr_ptr
);
67 asection
*section
= seclet
->u
.indirect
.section
;
68 bfd
*abfd
= section
->owner
;
70 einfo("%X%C: relocation truncated to fit %R\n",
71 abfd
, section
, seclet
->u
.indirect
.symbols
, relent
->address
, relent
);
77 DEFUN_VOID(init_bfd_error_vector
)
79 bfd_error_vector
.undefined_symbol
= ld_undefined_symbol
;
80 bfd_error_vector
.reloc_value_truncated
= ld_reloc_truncated
;