| @@ -1,44 +1,69 @@ | | | @@ -1,44 +1,69 @@ |
1 | $NetBSD: patch-ab,v 1.1 2008/08/02 21:46:33 dholland Exp $ | | 1 | $NetBSD: patch-ab,v 1.2 2011/08/29 01:39:12 dholland Exp $ |
2 | | | 2 | |
3 | --- ld/catimage.c~ 1997-07-22 17:38:12.000000000 -0400 | | 3 | - build on LP64 |
4 | +++ ld/catimage.c 2008-08-02 17:43:47.000000000 -0400 | | 4 | - fix mismatched return statements, which clang dislikes |
5 | @@ -39,7 +39,7 @@ main(argc, argv) | | 5 | |
| | | 6 | --- ld/catimage.c.orig 1997-07-22 21:38:12.000000000 +0000 |
| | | 7 | +++ ld/catimage.c |
| | | 8 | @@ -27,6 +27,8 @@ |
| | | 9 | #error "Compile error: struct exec invalid (long not 32 bit ?)" |
| | | 10 | #endif |
| | | 11 | |
| | | 12 | +static void patch_bin(long, int); |
| | | 13 | + |
| | | 14 | unsigned long text_offt[10]; /* Locations to patch (0=don't) */ |
| | | 15 | unsigned long data_offt[10]; |
| | | 16 | |
| | | 17 | @@ -35,11 +37,12 @@ FILE * ofd; |
| | | 18 | FILE * ifd = 0; |
| | | 19 | struct exec header; |
| | | 20 | |
| | | 21 | +int |
| | | 22 | main(argc, argv) |
6 | int argc; | | 23 | int argc; |
7 | char ** argv; | | 24 | char ** argv; |
8 | { | | 25 | { |
9 | - long image_offset, text_off; | | 26 | - long image_offset, text_off; |
10 | + Long image_offset, text_off; | | 27 | + Long image_offset, text_off; |
11 | int image_id; | | 28 | int image_id; |
12 | | | 29 | |
13 | if( argc < 3 || argc > 11 ) | | 30 | if( argc < 3 || argc > 11 ) |
14 | @@ -59,8 +59,10 @@ char ** argv; | | 31 | @@ -59,8 +62,10 @@ char ** argv; |
15 | open_obj(argv[image_id+2]); | | 32 | open_obj(argv[image_id+2]); |
16 | | | 33 | |
17 | printf("File %-14s seg=0x%04lx text=0x%04lx data=0x%04lx\n", | | 34 | printf("File %-14s seg=0x%04lx text=0x%04lx data=0x%04lx\n", |
18 | - input_file, (image_offset>>4), | | 35 | - input_file, (image_offset>>4), |
19 | - (header.a_text>>4), (header.a_total>>4)); | | 36 | - (header.a_text>>4), (header.a_total>>4)); |
20 | + input_file, | | 37 | + input_file, |
21 | + (unsigned long)(image_offset>>4), | | 38 | + (unsigned long)(image_offset>>4), |
22 | + (unsigned long)(header.a_text>>4), | | 39 | + (unsigned long)(header.a_text>>4), |
23 | + (unsigned long)(header.a_total>>4)); | | 40 | + (unsigned long)(header.a_total>>4)); |
24 | | | 41 | |
25 | text_off = image_offset; | | 42 | text_off = image_offset; |
26 | if( header.a_flags & A_SEP ) | | 43 | if( header.a_flags & A_SEP ) |
27 | @@ -90,7 +92,7 @@ char ** argv; | | 44 | @@ -90,7 +95,7 @@ char ** argv; |
28 | fputc('\0', ofd); | | 45 | fputc('\0', ofd); |
29 | fclose(ofd); | | 46 | fclose(ofd); |
30 | | | 47 | |
31 | - printf("Output file size %ldKb\n", ((image_offset+0x3FF)>>10)); | | 48 | - printf("Output file size %ldKb\n", ((image_offset+0x3FF)>>10)); |
32 | + printf("Output file size %ldKb\n", (long)((image_offset+0x3FF)>>10)); | | 49 | + printf("Output file size %ldKb\n", (long)((image_offset+0x3FF)>>10)); |
33 | | | 50 | |
34 | if( ifd ) fclose(ifd); | | 51 | if( ifd ) fclose(ifd); |
35 | exit(0); | | 52 | exit(0); |
36 | @@ -162,7 +164,7 @@ read_symtable() | | 53 | @@ -139,6 +144,7 @@ long out_offset, in_offset, length; |
| | | 54 | } |
| | | 55 | } |
| | | 56 | |
| | | 57 | +void |
| | | 58 | patch_bin(file_off, value) |
| | | 59 | long file_off; |
| | | 60 | int value; |
| | | 61 | @@ -162,7 +168,7 @@ read_symtable() |
37 | { | | 62 | { |
38 | struct nlist item; | | 63 | struct nlist item; |
39 | int nitems; | | 64 | int nitems; |
40 | - long base_off = 0; | | 65 | - long base_off = 0; |
41 | + Long base_off = 0; | | 66 | + Long base_off = 0; |
42 | | | 67 | |
43 | if( header.a_syms == 0 ) | | 68 | if( header.a_syms == 0 ) |
44 | fatal("Input file has been stripped!"); | | 69 | fatal("Input file has been stripped!"); |