gcc discovered that the memcpy() arguments in kdbnearsym() overlap, so we should really use memmove(), which is defined to handle that correctly: In function 'memcpy', inlined from 'kdbnearsym' at /git/arm-soc/kernel/debug/kdb/kdb_support.c:132:4: /git/arm-soc/include/linux/string.h:353:9: error: '__builtin_memcpy' accessing 792 bytes at offsets 0 and 8 overlaps 784 bytes at offset 8 [-Werror=restrict] return __builtin_memcpy(p, q, size);
Showing the changes to kernel/debug (1 of 1 file). Show all
Unified · Split
| @@ -129,13 +129,13 @@ int kdbnearsym(unsigned long addr, kdb_symtab_t *symtab) · 128 unmodified lines | ||
| 129 | 129 | } |
| 130 | 130 | if (i >= ARRAY_SIZE(kdb_name_table)) { |
| 131 | 131 | debug_kfree(kdb_name_table[0]); |
| 132 | − memcpy(kdb_name_table, kdb_name_table+1, | |
| 132 | + memmove(kdb_name_table, kdb_name_table+1, | |
| 133 | 133 | sizeof(kdb_name_table[0]) * |
| 134 | 134 | (ARRAY_SIZE(kdb_name_table)-1)); |
| 135 | 135 | } else { |
| 136 | 136 | debug_kfree(knt1); |
| 137 | 137 | knt1 = kdb_name_table[i]; |
| 138 | − memcpy(kdb_name_table+i, kdb_name_table+i+1, | |
| 138 | + memmove(kdb_name_table+i, kdb_name_table+i+1, | |
| 139 | 139 | sizeof(kdb_name_table[0]) * |
| 140 | 140 | (ARRAY_SIZE(kdb_name_table)-i-1)); |
| 141 | 141 | } |