Без микролиб однако работает. Дизасм библиотечного strstr в дебагере:
0x00000254 B430 PUSH {R4-R5}
0x00000256 E00D B 0x00000274
0x00000258 0003 LSL R3,R0,#0 ; смещение в фрагменте (R3) и указатель на фрагмент строки (R0)
0x0000025A 000A LSL R2,R1,#0 ; указатель на подстроку
0x0000025C E001 B 0x00000262 ; постинкремент
0x0000025E 1C5B ADD R3,R3,#1 ; ++ на следующий символ в фрагменте
0x00000260 1C52 ADD R2,R2,#1
0x00000262 781C LDRB R4,[R3,#0x00] ; загрузка символов
0x00000264 7815 LDRB R5,[R2,#0x00]
0x00000266 42AC CMP R4,R5 ; и сравнение
0x00000268 D101 BNE 0x0000026E ; выход из цикла если не равны
0x0000026A 2C00 CMP R4,#0x00 ; конец фрагмента строки?
0x0000026C D1F7 BNE 0x0000025E
0x0000026E 2A00 CMP R2,#0x00 ; конец подстроки? ! вот здесь ошибка, должно быть R5, имхо
0x00000270 D004 BEQ 0x0000027C
0x00000272 1C40 ADD R0,R0,#1 ; перейти на следующий фрагмент
0x00000274 7802 LDRB R2,[R0,#0x00] ;
0x00000276 2A00 CMP R2,#0x00 ; строка завершилась?
0x00000278 D1EE BNE 0x00000258 ; нет
0x0000027A 2000 MOV R0,#0x00 ; да, но ничего не найдено
0x0000027C BC30 POP {R4-R5}
0x0000027E 4770 BX LR
Код при изменении уровня оптимизации всегда один.