4.3.7.6 What is the Difference Between .s and .S Files?

Both of these files should contain assembly language. .S files which are preprocessed by the C compiler. This means that they might include C preprocessing statements (#define, #ifdef, and etc.), but they should not contain C statements. For information on these assembly files, see the following section of this user’s guide:

6.4.1 Output Files