[PATCH] D39534: [libunwind] Add ifdefs around ELF specific parts of UnwindRegisters*.S for ARM

Martin Storsjö via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 3 00:23:46 PDT 2017


mstorsjo added inline comments.


================
Comment at: src/UnwindRegistersRestore.S:396
   .fpu vfpv3-d16
+#endif
 DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind13Registers_arm19restoreVFPWithFLDMDEPy)
----------------
mstorsjo wrote:
> compnerd wrote:
> > This really isn't an ELF vs COFF/Mach-O thing.  Does MASM let you do something similar?  This should at the very least be `!defined(_WIN32)`.  The same throughout.
> MASM is only for x86, and MS armasm uses a wholly different syntax (with afaik nothing similar to `.arch` or `.fpu`).
> 
> And similarly, if you try assembling a file with this directive, it will fail both for iOS and windows:
> 
> ```
> $ cat test.s
> .text
> .fpu vfpv3-d16
> add r0, r0, r0
> $ clang -target armv7-linux-gnueabi test.s -c -o test.o
> $ clang -target armv7-apple-darwin test.s -c -o test.o
> test.s:2:1: error: unknown directive
> .fpu vfpv3-d16
> ^
> $ clang -target thumbv7-win32-gnu test.s -c -o test.o
> test.s:2:1: error: unknown directive
> .fpu vfpv3-d16
> ^
> ```
If you really wanted to, I could make it `!defined(__APPLE__) && !defined(_WIN32)`, but I really think `defined(__ELF__)` is more straightforward. (The corresponding parts in the asm parser in LLVM is within an `if (!IsMachO && !IsCOFF)` block though.)


https://reviews.llvm.org/D39534





More information about the cfe-commits mailing list