MaskRay added a comment.

In D104556#2836900 <https://reviews.llvm.org/D104556#2836900>, @rnk wrote:

> In D104556#2831787 <https://reviews.llvm.org/D104556#2831787>, @MaskRay wrote:
>
>> Hmm, IMGREL (`IMAGE_REL_AMD64_ADDR32NB`) looks useful and is an alternative 
>> solution to PC-relative relocations in ELF / relocation subtraction in 
>> Mach-O.
>> But leveraging it seems to need more code in the runtime and will make COFF 
>> vs non-COFF different in IR, runtime, and llvm-profdata....
>
> We can go forward with what we have, but the `signextIfWin64` helper is 
> pretty subtle. In some ways, I think adding `__ImageBase` is clearer:
>
>   #ifdef _WIN32
>   extern "C" char __ImageBase;
>   #endif
>   uintptr_t rebaseRelativePtr(void *D, void *P) {
>   #ifdef _WIN32
>     return (uintptr_t)&__ImageBase + (uintptr_t)P;
>   #else
>     return (uintptr_t)D + (uintptr_t)P;
>   #endif
>   }
>
> It's not quite this easy, and the instrumentation side changes have to 
> basically copy or refactor this code:
> https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/MicrosoftCXXABI.cpp#L548
>
> We aren't worried about profraw format compatibility on Windows, so I think 
> we can change this later at any time if we like.

I think you mean that `INSTR_PROF_RAW_HEADER(uint64_t, CountersDelta, 
(uintptr_t)CountersBegin - (uintptr_t)DataBegin)` (in InstrProfiling.cpp, so 
used by both -fprofile-generate and -fprofile-instr-generate) needs to adopt 
the scheme in 
https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/MicrosoftCXXABI.cpp#L548
Yes, seems quite a bit of complexity.

Is it possible to ask MSVC to add the 64-bit `IMAGE_REL_AMD64_REL64` and 
`IMAGE_REL_ARM64_REL64`?
Newer compiler metadata techniques can benefit from using the same mechanism 
for all three major binary formats (PE-COFF/ELF/Mach-O).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104556

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to