I was playing around with getting Xcode to compile AArch64 code and I hit an 
interesting compatibility issue. The assembler line continuation token for GCC 
(;) is a comment for the Xcode clang assembler. For Xcode clang you need to use 
%%. Yikes [1]

I was wondering if any one else has hit this in another project and if there 
was any cool workaround?

The only thing I can think of is the “big hammer” on both (well you only need 
one) ends. We could replace ; with a #define that matches the assembler. It 
looks like this issue mostly hits in Code that is using C pre-processor macros 
so we could refactor the code. I’m a little concerned that the C pre processor 
is getting used since the macro languages of the assembler might also have some 
compatibility issues?

Looking for ideas and opinions on the best way to fix this if we want to add 
Xcode as an ARM compiler in the future. 


[1] 
https://github.com/tianocore/edk2/blob/master/MdePkg/Library/BaseLib/AArch64/SetJumpLongJump.S#L13

#define GPR_LAYOUT                         \
        REG_PAIR (x19, x20,  0);           \
        REG_PAIR (x21, x22, 16);           \
        REG_PAIR (x23, x24, 32);           \
        REG_PAIR (x25, x26, 48);           \
        REG_PAIR (x27, x28, 64);           \
        REG_PAIR (x29, x30, 80);/*FP, LR*/ \
        REG_ONE  (x16,      96) /*IP0*/

I had to change it to:

#define GPR_LAYOUT                         \
        REG_PAIR (x19, x20,  0)%%          \
        REG_PAIR (x21, x22, 16)%%          \
        REG_PAIR (x23, x24, 32)%%          \
        REG_PAIR (x25, x26, 48)%%          \
        REG_PAIR (x27, x28, 64)%%          \
        REG_PAIR (x29, x30, 80)%%/*FP, LR*/ \
        REG_ONE  (x16,      96) /*IP0*/

Thanks,

Andrew Fish



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#85291): https://edk2.groups.io/g/devel/message/85291
Mute This Topic: https://groups.io/mt/88223192/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to