17 |
int u,v; |
int u,v; |
18 |
asymbol **q; |
asymbol **q; |
19 |
|
|
20 |
|
bfd_init(); |
21 |
if ( ! ( exe_bfd = bfd_openr ( oname, 0 ) ) ) { |
if ( ! ( exe_bfd = bfd_openr ( oname, 0 ) ) ) { |
22 |
fprintf ( stderr, "Cannot open self.\n" ); |
fprintf ( stderr, "Cannot open %s.\n", oname ); |
23 |
exit ( 0 ); |
exit ( 0 ); |
24 |
} |
} |
25 |
|
|
28 |
exit ( 0 ); |
exit ( 0 ); |
29 |
} |
} |
30 |
|
|
31 |
if (!(link_info.hash = bfd_link_hash_table_create (exe_bfd))) { |
if ( !(link_info.hash = bfd_link_hash_table_create ( exe_bfd ) ) ) { |
32 |
fprintf ( stderr, "Cannot make hash table.\n" ); |
fprintf ( stderr, "Cannot make hash table.\n" ); |
33 |
exit ( 0 ); |
exit ( 0 ); |
34 |
} |
} |
35 |
|
|
36 |
if (!bfd_link_add_symbols(exe_bfd,&link_info)) { |
if ( !bfd_link_add_symbols ( exe_bfd, &link_info ) ) { |
37 |
fprintf ( stderr, "Cannot add self symbols\n.\n" ); |
fprintf ( stderr, "Cannot add self symbols\n.\n" ); |
38 |
exit ( 0 ); |
exit ( 0 ); |
39 |
} |
} |
40 |
|
|
41 |
if ((u=bfd_get_symtab_upper_bound(exe_bfd))<0) { |
if ( ( u = bfd_get_symtab_upper_bound ( exe_bfd ) ) < 0 ) { |
42 |
fprintf ( stderr, "Cannot get self's symtab upper bound.\n" ); |
fprintf ( stderr, "Cannot get self's symtab upper bound.\n" ); |
43 |
exit ( 0 ); |
exit ( 0 ); |
44 |
} |
} |
256 |
sizeof ( rhtt ) ); |
sizeof ( rhtt ) ); |
257 |
|
|
258 |
if ( argc < 3 ) { |
if ( argc < 3 ) { |
259 |
fprintf ( stderr, "Need an executable and an object file as arguments.\n" ); |
fprintf ( stderr, "Need an executable (eg raw_gcl.exe) and an object file as arguments.\n" ); |
260 |
} else { |
} else { |
261 |
|
|
262 |
memset ( &link_info, 0, sizeof (link_info) ); |
memset ( &link_info, 0, sizeof (link_info) ); |
264 |
memset ( &link_callbacks, 0, sizeof (link_callbacks) ); |
memset ( &link_callbacks, 0, sizeof (link_callbacks) ); |
265 |
|
|
266 |
|
|
267 |
bfd_init(); |
fprintf ( stderr, "BUILDING EXECUTABLE SYMBOL TABLE FOR %s \n", argv[1] ); |
|
|
|
|
fprintf ( stderr, "BUILDING EXECUTABLE SYMBOL TABLE (ARGV[1]) \n\n" ); |
|
268 |
build_symbol_table_bfd ( argv[1] ); |
build_symbol_table_bfd ( argv[1] ); |
269 |
|
|
270 |
link_callbacks.add_archive_element=madd_archive_element; |
link_callbacks.add_archive_element=madd_archive_element; |
281 |
link_info.callbacks = &link_callbacks; |
link_info.callbacks = &link_callbacks; |
282 |
link_order.type = bfd_indirect_link_order; |
link_order.type = bfd_indirect_link_order; |
283 |
|
|
284 |
|
fprintf ( stderr, "OPENING OBJECT FILE %s\n", argv[2] ); |
285 |
if ( ! ( obj_bfd = bfd_openr ( argv[2], 0 ) ) ) { |
if ( ! ( obj_bfd = bfd_openr ( argv[2], 0 ) ) ) { |
286 |
fprintf ( stderr, "Cannot open bfd.\n" ); |
fprintf ( stderr, "Cannot open bfd.\n" ); |
287 |
} |
} |