118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ 218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ RUN: | llvm-readobj -s -sd | FileCheck %s 318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ Check for different combination of .setfp, .pad, .save and .vsave. 518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .syntax unified 718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ TEST1: Check .pad before .setfp directive. 1018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 1118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .section .TEST1 1218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .globl func1 1318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .type func1,%function 1418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .align 2 1518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnstart 1618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chienfunc1: 1718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .pad #12 1818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, sp, #12 1918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #8 2018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #8 2118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, fp, #8 2218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add sp, sp, #12 2318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien bx lr 2418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .personality __gxx_personality_v0 2518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .handlerdata 2618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnend 2718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 2818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Section { 2918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Name: .ARM.extab.TEST1 3018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: SectionData ( 3118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: 0000: 00000000 B0009B00 |........| 3218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: ) 3318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: } 3418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 3518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 3618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 3718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 3818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ TEST2: Check .pad after .setfp directive. 3918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 4018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .section .TEST2 4118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .globl func2 4218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .type func2,%function 4318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .align 2 4418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnstart 4518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chienfunc2: 4618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #8 4718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #8 4818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .pad #12 4918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, sp, #12 5018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add sp, sp, #12 5118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, fp, #8 5218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien bx lr 5318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .personality __gxx_personality_v0 5418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .handlerdata 5518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnend 5618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 5718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Section { 5818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Name: .ARM.extab.TEST2 5918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: SectionData ( 6018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: 0000: 00000000 B0419B00 |.....A..| 6118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: ) 6218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: } 6318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 6418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 6518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 6618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 6718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ TEST3: Check .setfp, .pad, .setfp directive. 6818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 6918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .section .TEST3 7018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .globl func3 7118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .type func3,%function 7218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .align 2 7318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnstart 7418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chienfunc3: 7518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien @ prologue: 7618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #4 7718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #4 7818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .pad #8 7918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, sp, #8 8018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #4 8118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #4 8218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 8318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien @ epilogue: 8418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add sp, fp, #4 8518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien bx lr 8618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .personality __gxx_personality_v0 8718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .handlerdata 8818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnend 8918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 9018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Section { 9118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Name: .ARM.extab.TEST3 9218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: SectionData ( 9318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: 0000: 00000000 B0009B00 |........| 9418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: ) 9518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: } 9618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 9718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 9818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 9918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 10018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ TEST4: Check ".setfp fp, sp" and ".setfp fp, fp" directive. 10118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 10218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .section .TEST4 10318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .globl func4 10418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .type func4,%function 10518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .align 2 10618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnstart 10718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chienfunc4: 10818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien @ prologue: 10918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #8 11018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #8 11118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, fp, #8 11218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, fp, #8 11318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 11418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien @ epilogue: 11518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, fp, #16 11618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien bx lr 11718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .personality __gxx_personality_v0 11818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .handlerdata 11918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnend 12018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 12118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Section { 12218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Name: .ARM.extab.TEST4 12318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: SectionData ( 12418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: 0000: 00000000 B0439B00 |.....C..| 12518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: ) 12618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: } 12718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 12818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 12918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 13018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 13118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ TEST5: Check .setfp, .save, .setfp directive. 13218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@------------------------------------------------------------------------------- 13318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .section .TEST5 13418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .globl func5 13518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .type func5,%function 13618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .align 2 13718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnstart 13818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chienfunc5: 13918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien @ prologue: 14018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #16 14118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #16 14218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .save {r4, r5, r6, r7, r8} 14318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien push {r4, r5, r6, r7, r8} 14418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .pad #8 14518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add sp, sp, #8 14618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .pad #8 14718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, sp, #8 14818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .save {r9, r10} 14918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien push {r9, r10} 15018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .setfp fp, sp, #24 15118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add fp, sp, #24 15218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 15318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien @ epilogue: 15418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien sub sp, fp, #24 15518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien pop {r9, r10} 15618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien add sp, sp, #16 15718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien pop {r4, r5, r6, r7, r8} 15818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien bx lr 15918cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .personality __gxx_personality_v0 16018cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .handlerdata 16118cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien .fnend 16218cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien 16318cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Section { 16418cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: Name: .ARM.extab.TEST5 16518cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: SectionData ( 16618cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: 0000: 00000000 80459B01 B0A40360 |.....E.....`| 16718cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: ) 16818cba562c8016f8095643b5dd8c4b34b294b62ddLogan Chien@ CHECK: } 169