[PATCH] D140202: [lld][ARM][2/3]Big Endian support - Word invariant support

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 20 11:10:55 PDT 2023


peter.smith added a comment.

This looks correct, although I think there are a few places where we can simplify the code to remove the explicit endianness.



================
Comment at: lld/ELF/SyntheticSections.cpp:3545
 
   const uint8_t cantUnwindData[8] = {0, 0, 0, 0,  // PREL31 to target
                                      1, 0, 0, 0}; // EXIDX_CANTUNWIND
----------------
I think we can simplify the function by replacing cantUnwindData with a comment
```
// A linker generated CANTUNWIND entry is made up of two words
// 0x0 with R_ARM_PREL31 relocation to target.
// 0x1
```
We can then replace `read32le(cantUnwindData+0)` with 0x0 and `read32le(cantUnwindData+4)` with 0x1 in the two places it is used.


================
Comment at: lld/ELF/SyntheticSections.cpp:3568
   }
   // Write Sentinel.
+  write32(buf + offset + 0, read32le(cantUnwindData+0));
----------------
Suggest making this // Write Sentinel CANTUNWIND entry.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140202/new/

https://reviews.llvm.org/D140202



More information about the llvm-commits mailing list