It mimics the GNU readelf where it prints a [VARIANT_PCS] for symbols
with st_other with STO_AARCH64_VARIANT_PCS.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Time | Test | |
---|---|---|
60 ms | x64 windows > LLVM.CodeGen/XCore::threads.ll |
Event Timeline
You may want to update obj2yaml and yaml2obj as well since they need no additional code (see D62596 for an example).
The binutils commit 2301ed1c9af1316b4bad3747d2b03f7d44940f87 does not have a test for [VARIANT_PCS | %x] (@nsz).
I believe currently there is no way to set the other st_other bits with MC so the lack of testing may be fine.
It seems that objdump does not understand STO_AARCH64_VARIANT_PCS.
llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test | ||
---|---|---|
355–359 ↗ | (On Diff #311177) | It would be nice if the whitespace were adjusted so that the name/value column all continues to line up. Same goes below. |
llvm/tools/llvm-readobj/ELFDumper.cpp | ||
4038 | It looks like this new block of code is completely untested? |
llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test | ||
---|---|---|
355–359 ↗ | (On Diff #311177) | Ack, I will fix it. |
llvm/tools/llvm-readobj/ELFDumper.cpp | ||
4038 | It is, but on a subsequent patch (https://reviews.llvm.org/D93045). I will add a standalone patch as well. |
llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-variant_pcs.s | ||
---|---|---|
1 ↗ | (On Diff #311294) | I'm interested to hear what @grimar thinks, but I feel like this test would be better written with a YAML input. That will a) allow the test to be tested without AArch64 target support enabled, and b) I feel like yaml2obj gives more precise control over teh symbol details, and c) it is clearer what the inputs actually are. |
llvm/tools/llvm-readobj/ELFDumper.cpp | ||
4039 | Maybe we should have a test case that shows for non AARCH64 cases, this code doesn't trigger? |
llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-variant_pcs.s | ||
---|---|---|
1 ↗ | (On Diff #311294) | I agree with all mentioned points. I guess that with use of YAML + macros this test also could be slightly shorter. |
llvm/lib/ObjectYAML/ELFYAML.cpp | ||
---|---|---|
1045 ↗ | (On Diff #311590) | This belongs to yaml2obj functionality, not to llvm-readelf/obj and can be fixed separatelly. I'd suggest either |
llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test | ||
12 ↗ | (On Diff #311590) | This output looks a bit wrong. # MIPS-LLVM:Name: foo # MIPS-LLVM:Other [ # MIPS-LLVM-NEXT: STO_MIPS_MICROMIPS (0x80) # MIPS-LLVM-NEXT: STO_MIPS_OPTIONAL (0x4) # MIPS-LLVM-NEXT: STO_MIPS_PIC (0x20) # MIPS-LLVM-NEXT: STO_MIPS_PLT (0x8) # MIPS-LLVM-NEXT:] # MIPS-LLVM:Name: bar # MIPS-LLVM:Other [ # MIPS-LLVM-NEXT: STO_MIPS_MIPS16 (0xF0) # MIPS-LLVM-NEXT:] I think you need to update LLVMStyle<ELFT>::printSymbol too. |
16 ↗ | (On Diff #311590) | Please align. |
Updated patch based on previous comments. It depends on https://reviews.llvm.org/D93235 for YAML STO_AARCH64_VARIANT_PCS support.
llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test | ||
---|---|---|
12 ↗ | (On Diff #311590) | This wasn't addressed? |
llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test | ||
---|---|---|
28 ↗ | (On Diff #311643) | Perhaps also worth a case with the visibility bits set too (e.g. STV_HIDDEN)? |
Updated patch based on previous comments:
- Added LLVMStyle support.
- Add symbol visibility tests.
One test suggestion. Otherwise, this looks fine.
llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test | ||
---|---|---|
43–46 ↗ | (On Diff #311884) | The visibility bits aren't flags, they're values, so they can't be combined like you've done here (hence why you end up with STV_PROTECTED in the final output). I think as long as you've got the max visibility value (iSTV_PROTECTED) defined in one of these cases, I think that's all you need (you can then drop the other case). You might also want a negative case, using STV_PROTECTED, to make sure the STO_AARCH_VARIANT_PCS value isn't used in this case. Examples suggested with the inline edit. |
llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test | ||
---|---|---|
43–46 ↗ | (On Diff #311884) | Ack, I will change the tests with your suggestions. |
clang-format not found in user's PATH; not linting file.