FreeCalypso > hg > tcs211-patches
annotate tool/coff.c @ 15:6cbe01db6382
l1_ext-nodyndwl.patch implemented
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Sun, 05 Jul 2015 00:07:16 +0000 |
parents | 87e9f30f5f86 |
children |
rev | line source |
---|---|
6
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * This C module implements COFF operations for ti-libpatch. |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 */ |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 #include <sys/types.h> |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 #include <stdio.h> |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 #include <stdlib.h> |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 #include <string.h> |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 #include <strings.h> |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include "coffstruct.h" |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 #include "patchinfo.h" |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 #include "globals.h" |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 struct external_scnhdr *sections_raw; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 unsigned nsections; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 unsigned strtab_offset; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 static unsigned |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 get_u16(ptr) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 u_char *ptr; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 return ptr[0] | ptr[1] << 8; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 static unsigned |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 get_u32(ptr) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 u_char *ptr; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 return ptr[0] | ptr[1] << 8 | ptr[2] << 16 | ptr[3] << 24; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 parse_coff_hdr() |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 struct external_filehdr *filehdr_struct; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 unsigned symtab_offset; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 unsigned nsymtab; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 filehdr_struct = (struct external_filehdr *) member_body; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 if (get_u16(filehdr_struct->f_magic) != 0xC2) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 fprintf(stderr, |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 "error: member \"%s\" is not a TI COFF2 object\n", |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 member_name); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 exit(1); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 if (get_u16(filehdr_struct->f_target_id) != 0x97) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 fprintf(stderr, "error: member \"%s\" is not a TMS470 object\n", |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 member_name); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 exit(1); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 if (get_u16(filehdr_struct->f_opthdr)) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 fprintf(stderr, |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 "error: member \"%s\" has the \"optional\" header present\n", |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 member_name); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 exit(1); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 sections_raw = (struct external_scnhdr *) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 (member_body + sizeof(struct external_filehdr)); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 nsections = get_u16(filehdr_struct->f_nscns); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 symtab_offset = get_u32(filehdr_struct->f_symptr); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 nsymtab = get_u32(filehdr_struct->f_nsyms); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 strtab_offset = symtab_offset + |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 sizeof(struct external_syment) * nsymtab; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 return(0); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 static struct external_scnhdr * |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 find_section_shortname(soughtname) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 char *soughtname; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 unsigned i; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 struct external_scnhdr *scnhdr; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 for (i = 0; i < nsections; i++) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 scnhdr = sections_raw + i; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 if (!strncmp(scnhdr->s_name, soughtname, 8)) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 return(scnhdr); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 return(0); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 static struct external_scnhdr * |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 find_section_longname(soughtname) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 char *soughtname; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 unsigned i; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 struct external_scnhdr *scnhdr; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 u_char *np, *longname; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 for (i = 0; i < nsections; i++) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 scnhdr = sections_raw + i; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 np = scnhdr->s_name; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 if (np[0] || np[1] || np[2] || np[3]) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 continue; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 longname = member_body + strtab_offset + get_u32(np + 4); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
95 if (!strcmp(longname, soughtname)) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
96 return(scnhdr); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
97 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
98 return(0); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
99 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
100 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
101 static struct external_scnhdr * |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
102 find_section(soughtname) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
103 char *soughtname; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
104 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
105 if (strlen(soughtname) <= 8) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
106 return find_section_shortname(soughtname); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
107 else |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
108 return find_section_longname(soughtname); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
109 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
110 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
111 apply_patch(patch) |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
112 struct patch_desc *patch; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
113 { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
114 struct external_scnhdr *scnhdr; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
115 unsigned data_offset, section_size; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
116 |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
117 scnhdr = find_section(patch->section); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
118 if (!scnhdr) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
119 fprintf(stderr, |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
120 "error: could not find section \"%s\" in member \"%s\"\n", |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
121 patch->section, member_name); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
122 exit(1); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
123 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
124 data_offset = get_u32(scnhdr->s_scnptr); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
125 section_size = get_u32(scnhdr->s_size); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
126 if (data_offset + section_size > member_size) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
127 fprintf(stderr, |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
128 "error: section \"%s\" in member \"%s\" exceeds member size\n", |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
129 patch->section, member_name); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
130 exit(1); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
131 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
132 if (patch->offset >= section_size) { |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
133 fprintf(stderr, |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
134 "error: patch offset 0x%x in section \"%s\" exceeds section size\n", |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
135 patch->offset, patch->section); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
136 exit(1); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
137 } |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
138 /* do it! */ |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
139 member_body[data_offset + patch->offset] = patch->new_byte; |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
140 return(0); |
87e9f30f5f86
ti-libpatch: patching implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
141 } |