MaskRay wrote:

Thanks for the comments.

The syntax `-Wa,--crel -Wa,--experimental-crel` (or 
`-Wa,--crel,--experimental-crel`) might seem cumbersome, it serves a purpose:

* `-Wa,--experimental-crel`: no effect
* `-Wa,--crel`: driver error. Make sure users acknowledge the non-standard 
status.
* `-Wa,--crel,--experimental-crel`: CREL

As CREL adoption grows within the ecosystem, it has the potential to become a 
de-facto standard, similar to `SHF_EXCLUDE`.
Once that happens, the `--experimental-crel` flag can be deprecated and 
eventually removed.

This approahc parallels the strategy used for 
[`-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang`](https://reviews.llvm.org/D125142),
 albeit a nicer name.

---

I can split this PR into 5 components.

* llvm-mc
* clang driver
* yaml2obj/obj2yaml
* llvm-readobj
* llvm-objdump

The assembler testing might look bare-bone without llvm-readobj support.

---

While ELF allows extension space for processor/OS/application-specific section 
types, using them introduces challenges
since we want linker errors when SHT_CREL is unsupported (see 
`isKnownSpecificSectionType` in #85173):

* [SHT_LOUSER,SHT_HIUSER]: Not applicable as static relocation sections do not 
have the SHF_ALLOC flag.
* [SHT_LOOS,SHT_HIOS]: Requires annoying `SHF_OS_NONCONFORMING`. We want psABI 
documents to be willing to accept CREL when toolchain becomes ready, especially 
if their relocatable files are huge due to linker relaxation (e.g. RISC-V, 
LoongArch), we want to avoid GNUism / LLVMism.
* [SHT_LOPROC,SHT_HIPROC]: Processor-specific and not applicable.

We will unlikely change the format. I avoid the name `SHT_EXP_*` because the 
renaming would cause unnecessary churn.
We also don't want to support two section type codes, because testing would be 
unnecessarily complex.

Solaris-specific SHF_ORDERED and SHF_EXCLUDE, without a SunOS/Solaris name 
infix/prefix/suffix, make them into glibc elf.h.
`SHF_EXCLUDE` gets picked due to its linker semantics but `SHF_ORDERED` is 
never used.
A generic name `SHT_CREL` might not be fundamentally different from 
`SHF_ORDERED`.


https://github.com/llvm/llvm-project/pull/91280
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to