0003-Fixes-for-GCC-15-1-unterminated-string-literal-warning.patch 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. From 531d4839d44a90447c232d51d1bee0cae45add9a Mon Sep 17 00:00:00 2001
  2. From: Angus Gratton <angus@redyak.com.au>
  3. Date: Fri, 9 May 2025 13:34:37 +1000
  4. Subject: [PATCH] extmod/moductypes: Refactor string literal as array
  5. initializer.
  6. Avoids the new Wunterminated-string-literal when compiled with gcc 15.1.
  7. Also split out the duplicate string to a top-level array (probably the
  8. duplicate string literal was interned, so unlikely to have any impact.)
  9. This work was funded through GitHub Sponsors.
  10. Signed-off-by: Angus Gratton <angus@redyak.com.au>
  11. Upstream: https://github.com/micropython/micropython/pull/17269
  12. [tperale: backport 1.22.2]
  13. Signed-off-by: Thomas Perale <thomas.perale@mind.be>
  14. ---
  15. extmod/moductypes.c | 7 +++++--
  16. 1 file changed, 5 insertions(+), 2 deletions(-)
  17. diff --git a/extmod/moductypes.c b/extmod/moductypes.c
  18. index f56567107..87fd5fb69 100644
  19. --- a/extmod/moductypes.c
  20. +++ b/extmod/moductypes.c
  21. @@ -277,15 +277,18 @@ STATIC mp_obj_t uctypes_struct_sizeof(size_t n_args, const mp_obj_t *args) {
  22. }
  23. STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(uctypes_struct_sizeof_obj, 1, 2, uctypes_struct_sizeof);
  24. +static const char type2char[16] = {
  25. + 'B', 'b', 'H', 'h', 'I', 'i', 'Q', 'q',
  26. + '-', '-', '-', '-', '-', '-', 'f', 'd'
  27. +};
  28. +
  29. static inline mp_obj_t get_unaligned(uint val_type, byte *p, int big_endian) {
  30. char struct_type = big_endian ? '>' : '<';
  31. - static const char type2char[16] = "BbHhIiQq------fd";
  32. return mp_binary_get_val(struct_type, type2char[val_type], p, &p);
  33. }
  34. static inline void set_unaligned(uint val_type, byte *p, int big_endian, mp_obj_t val) {
  35. char struct_type = big_endian ? '>' : '<';
  36. - static const char type2char[16] = "BbHhIiQq------fd";
  37. mp_binary_set_val(struct_type, type2char[val_type], val, p, &p);
  38. }
  39. From 0398873d8c8096d2054db130efd1fcecba2a426d Mon Sep 17 00:00:00 2001
  40. From: Angus Gratton <angus@redyak.com.au>
  41. Date: Fri, 9 May 2025 13:36:05 +1000
  42. Subject: [PATCH] py/emitinlinethumb: Refactor string literal as array
  43. initializer.
  44. Avoids the new Wunterminated-string-literal when compiled with gcc 15.1.
  45. This work was funded through GitHub Sponsors.
  46. Signed-off-by: Angus Gratton <angus@redyak.com.au>
  47. ---
  48. py/emitinlinethumb.c | 108 +++++++++++++++++++++----------------------
  49. 1 file changed, 54 insertions(+), 54 deletions(-)
  50. diff --git a/py/emitinlinethumb.c b/py/emitinlinethumb.c
  51. index 29487f104..0b9efa1da 100644
  52. --- a/py/emitinlinethumb.c
  53. +++ b/py/emitinlinethumb.c
  54. @@ -150,27 +150,27 @@ typedef struct _reg_name_t { byte reg;
  55. byte name[3];
  56. } reg_name_t;
  57. STATIC const reg_name_t reg_name_table[] = {
  58. - {0, "r0\0"},
  59. - {1, "r1\0"},
  60. - {2, "r2\0"},
  61. - {3, "r3\0"},
  62. - {4, "r4\0"},
  63. - {5, "r5\0"},
  64. - {6, "r6\0"},
  65. - {7, "r7\0"},
  66. - {8, "r8\0"},
  67. - {9, "r9\0"},
  68. - {10, "r10"},
  69. - {11, "r11"},
  70. - {12, "r12"},
  71. - {13, "r13"},
  72. - {14, "r14"},
  73. - {15, "r15"},
  74. - {10, "sl\0"},
  75. - {11, "fp\0"},
  76. - {13, "sp\0"},
  77. - {14, "lr\0"},
  78. - {15, "pc\0"},
  79. + {0, {'r', '0' }},
  80. + {1, {'r', '1' }},
  81. + {2, {'r', '2' }},
  82. + {3, {'r', '3' }},
  83. + {4, {'r', '4' }},
  84. + {5, {'r', '5' }},
  85. + {6, {'r', '6' }},
  86. + {7, {'r', '7' }},
  87. + {8, {'r', '8' }},
  88. + {9, {'r', '9' }},
  89. + {10, {'r', '1', '0' }},
  90. + {11, {'r', '1', '1' }},
  91. + {12, {'r', '1', '2' }},
  92. + {13, {'r', '1', '3' }},
  93. + {14, {'r', '1', '4' }},
  94. + {15, {'r', '1', '5' }},
  95. + {10, {'s', 'l' }},
  96. + {11, {'f', 'p' }},
  97. + {13, {'s', 'p' }},
  98. + {14, {'l', 'r' }},
  99. + {15, {'p', 'c' }},
  100. };
  101. #define MAX_SPECIAL_REGISTER_NAME_LENGTH 7
  102. @@ -368,20 +368,20 @@ typedef struct _cc_name_t { byte cc;
  103. byte name[2];
  104. } cc_name_t;
  105. STATIC const cc_name_t cc_name_table[] = {
  106. - { ASM_THUMB_CC_EQ, "eq" },
  107. - { ASM_THUMB_CC_NE, "ne" },
  108. - { ASM_THUMB_CC_CS, "cs" },
  109. - { ASM_THUMB_CC_CC, "cc" },
  110. - { ASM_THUMB_CC_MI, "mi" },
  111. - { ASM_THUMB_CC_PL, "pl" },
  112. - { ASM_THUMB_CC_VS, "vs" },
  113. - { ASM_THUMB_CC_VC, "vc" },
  114. - { ASM_THUMB_CC_HI, "hi" },
  115. - { ASM_THUMB_CC_LS, "ls" },
  116. - { ASM_THUMB_CC_GE, "ge" },
  117. - { ASM_THUMB_CC_LT, "lt" },
  118. - { ASM_THUMB_CC_GT, "gt" },
  119. - { ASM_THUMB_CC_LE, "le" },
  120. + { ASM_THUMB_CC_EQ, { 'e', 'q' }},
  121. + { ASM_THUMB_CC_NE, { 'n', 'e' }},
  122. + { ASM_THUMB_CC_CS, { 'c', 's' }},
  123. + { ASM_THUMB_CC_CC, { 'c', 'c' }},
  124. + { ASM_THUMB_CC_MI, { 'm', 'i' }},
  125. + { ASM_THUMB_CC_PL, { 'p', 'l' }},
  126. + { ASM_THUMB_CC_VS, { 'v', 's' }},
  127. + { ASM_THUMB_CC_VC, { 'v', 'c' }},
  128. + { ASM_THUMB_CC_HI, { 'h', 'i' }},
  129. + { ASM_THUMB_CC_LS, { 'l', 's' }},
  130. + { ASM_THUMB_CC_GE, { 'g', 'e' }},
  131. + { ASM_THUMB_CC_LT, { 'l', 't' }},
  132. + { ASM_THUMB_CC_GT, { 'g', 't' }},
  133. + { ASM_THUMB_CC_LE, { 'l', 'e' }},
  134. };
  135. typedef struct _format_4_op_t { byte op;
  136. @@ -389,21 +389,21 @@ typedef struct _format_4_op_t { byte op;
  137. } format_4_op_t;
  138. #define X(x) (((x) >> 4) & 0xff) // only need 1 byte to distinguish these ops
  139. STATIC const format_4_op_t format_4_op_table[] = {
  140. - { X(ASM_THUMB_FORMAT_4_EOR), "eor" },
  141. - { X(ASM_THUMB_FORMAT_4_LSL), "lsl" },
  142. - { X(ASM_THUMB_FORMAT_4_LSR), "lsr" },
  143. - { X(ASM_THUMB_FORMAT_4_ASR), "asr" },
  144. - { X(ASM_THUMB_FORMAT_4_ADC), "adc" },
  145. - { X(ASM_THUMB_FORMAT_4_SBC), "sbc" },
  146. - { X(ASM_THUMB_FORMAT_4_ROR), "ror" },
  147. - { X(ASM_THUMB_FORMAT_4_TST), "tst" },
  148. - { X(ASM_THUMB_FORMAT_4_NEG), "neg" },
  149. - { X(ASM_THUMB_FORMAT_4_CMP), "cmp" },
  150. - { X(ASM_THUMB_FORMAT_4_CMN), "cmn" },
  151. - { X(ASM_THUMB_FORMAT_4_ORR), "orr" },
  152. - { X(ASM_THUMB_FORMAT_4_MUL), "mul" },
  153. - { X(ASM_THUMB_FORMAT_4_BIC), "bic" },
  154. - { X(ASM_THUMB_FORMAT_4_MVN), "mvn" },
  155. + { X(ASM_THUMB_FORMAT_4_EOR), {'e', 'o', 'r' }},
  156. + { X(ASM_THUMB_FORMAT_4_LSL), {'l', 's', 'l' }},
  157. + { X(ASM_THUMB_FORMAT_4_LSR), {'l', 's', 'r' }},
  158. + { X(ASM_THUMB_FORMAT_4_ASR), {'a', 's', 'r' }},
  159. + { X(ASM_THUMB_FORMAT_4_ADC), {'a', 'd', 'c' }},
  160. + { X(ASM_THUMB_FORMAT_4_SBC), {'s', 'b', 'c' }},
  161. + { X(ASM_THUMB_FORMAT_4_ROR), {'r', 'o', 'r' }},
  162. + { X(ASM_THUMB_FORMAT_4_TST), {'t', 's', 't' }},
  163. + { X(ASM_THUMB_FORMAT_4_NEG), {'n', 'e', 'g' }},
  164. + { X(ASM_THUMB_FORMAT_4_CMP), {'c', 'm', 'p' }},
  165. + { X(ASM_THUMB_FORMAT_4_CMN), {'c', 'm', 'n' }},
  166. + { X(ASM_THUMB_FORMAT_4_ORR), {'o', 'r', 'r' }},
  167. + { X(ASM_THUMB_FORMAT_4_MUL), {'m', 'u', 'l' }},
  168. + { X(ASM_THUMB_FORMAT_4_BIC), {'b', 'i', 'c' }},
  169. + { X(ASM_THUMB_FORMAT_4_MVN), {'m', 'v', 'n' }},
  170. };
  171. #undef X
  172. @@ -428,10 +428,10 @@ typedef struct _format_vfp_op_t {
  173. char name[3];
  174. } format_vfp_op_t;
  175. STATIC const format_vfp_op_t format_vfp_op_table[] = {
  176. - { 0x30, "add" },
  177. - { 0x34, "sub" },
  178. - { 0x20, "mul" },
  179. - { 0x80, "div" },
  180. + { 0x30, {'a', 'd', 'd' }},
  181. + { 0x34, {'s', 'u', 'b' }},
  182. + { 0x20, {'m', 'u', 'l' }},
  183. + { 0x80, {'d', 'i', 'v' }},
  184. };
  185. // shorthand alias for whether we allow ARMv7-M instructions
  186. From bfd5a0350a0d53f52695d373dae6ee367971b145 Mon Sep 17 00:00:00 2001
  187. From: Angus Gratton <angus@redyak.com.au>
  188. Date: Fri, 9 May 2025 14:34:09 +1000
  189. Subject: [PATCH] lib/littlefs: Fix string initializer in lfs1.c.
  190. Avoids the new Wunterminated-string-literal when compiled with gcc 15.1.
  191. It would be preferable to just disable this warning, but Clang
  192. -Wunknown-warning-option kicks in even when disabling warnings so this
  193. becomes fiddly to apply.
  194. This work was funded through GitHub Sponsors.
  195. Signed-off-by: Angus Gratton <angus@redyak.com.au>
  196. ---
  197. lib/littlefs/lfs1.c | 2 +-
  198. 1 file changed, 1 insertion(+), 1 deletion(-)
  199. diff --git a/lib/littlefs/lfs1.c b/lib/littlefs/lfs1.c
  200. index 6a3fd670012cc..ec18dc470258c 100644
  201. --- a/lib/littlefs/lfs1.c
  202. +++ b/lib/littlefs/lfs1.c
  203. @@ -2141,7 +2141,7 @@ int lfs1_format(lfs1_t *lfs1, const struct lfs1_config *cfg) {
  204. .d.elen = sizeof(superblock.d) - sizeof(superblock.d.magic) - 4,
  205. .d.nlen = sizeof(superblock.d.magic),
  206. .d.version = LFS1_DISK_VERSION,
  207. - .d.magic = {"littlefs"},
  208. + .d.magic = {'l', 'i', 't', 't', 'l', 'e', 'f', 's'},
  209. .d.block_size = lfs1->cfg->block_size,
  210. .d.block_count = lfs1->cfg->block_count,
  211. .d.root = {lfs1->root[0], lfs1->root[1]},