@@ -50,6 +50,11 @@ unsigned long pattern_kallsyms_addresses3[] = {
50
50
0xc00081c0 , /* _stext */
51
51
0xc00081c0 /* __exception_text_start */
52
52
};
53
+ unsigned long pattern_kallsyms_addresses4 [] = {
54
+ 0xc0008180 ,
55
+ 0xc0008180 ,
56
+ 0xc0008180
57
+ };
53
58
54
59
unsigned long * kallsymsmem = NULL ;
55
60
unsigned long kallsyms_num_syms ;
@@ -134,13 +139,12 @@ unsigned long *kerneldump(unsigned long startaddr, unsigned long dumpsize) {
134
139
return allocaddr ;
135
140
}
136
141
137
- int check_pattern (unsigned long * addr , unsigned long * pattern , int patternnum ) {
142
+ int check_pattern (unsigned long * addr , unsigned long firstval , unsigned long * pattern , int patternnum ) {
138
143
unsigned long val ;
139
144
unsigned long cnt ;
140
145
unsigned long i ;
141
146
142
- read_value_at_address ((unsigned long )addr , & val );
143
- if (val == pattern [0 ]) {
147
+ if (firstval == pattern [0 ]) {
144
148
cnt = 1 ;
145
149
for (i = 1 ; i < patternnum ; i ++ ) {
146
150
read_value_at_address ((unsigned long )(& addr [i ]), & val );
@@ -159,11 +163,16 @@ int check_pattern(unsigned long *addr, unsigned long *pattern, int patternnum) {
159
163
}
160
164
161
165
int check_kallsyms_header (unsigned long * addr ) {
162
- if (check_pattern (addr , pattern_kallsyms_addresses , sizeof (pattern_kallsyms_addresses ) / 4 ) == 0 ) {
166
+ unsigned long val ;
167
+ read_value_at_address ((unsigned long )addr , & val );
168
+
169
+ if (check_pattern (addr , val , pattern_kallsyms_addresses , sizeof (pattern_kallsyms_addresses ) / 4 ) == 0 ) {
170
+ return 0 ;
171
+ } else if (check_pattern (addr , val , pattern_kallsyms_addresses2 , sizeof (pattern_kallsyms_addresses2 ) / 4 ) == 0 ) {
163
172
return 0 ;
164
- } else if (check_pattern (addr , pattern_kallsyms_addresses2 , sizeof (pattern_kallsyms_addresses2 ) / 4 ) == 0 ) {
173
+ } else if (check_pattern (addr , val , pattern_kallsyms_addresses3 , sizeof (pattern_kallsyms_addresses3 ) / 4 ) == 0 ) {
165
174
return 0 ;
166
- } else if (check_pattern (addr , pattern_kallsyms_addresses3 , sizeof (pattern_kallsyms_addresses3 ) / 4 ) == 0 ) {
175
+ } else if (check_pattern (addr , val , pattern_kallsyms_addresses4 , sizeof (pattern_kallsyms_addresses4 ) / 4 ) == 0 ) {
167
176
return 0 ;
168
177
}
169
178
0 commit comments