jrtc27 added a comment.
If it's bypassing the descriptors then __builtin_symbol_address is the wrong
name (and a bit ambiguous). As far as dlsym is concerned, the symbol is the
descriptor, but when you get down to the ELF representation itself that's not
always true. For PPC64 ELFv1, the ELF symbol is the descriptor, and the entry
point has a different name. For PA-RISC and Itanium, the ELF symbol is the
entry point, and you request the descriptor rather than the entry point by
using a different relocation to the normal data pointer one (well, Itanium has
a whole set of them, you have {32,64} x {LSB,MSB} plus a 64I one for putting
into an X format instruction's immediate, and GP-relative GOT-indirect
(`@ltoff`) versions of all those, plus a bonus 22-bit immediate one for that).
For CHERI there's the added complication that descriptors and trampolines can
exist for security reasons when crossing security domains, and you absolutely
should not let one compartment get pointers to the entry point of another
compartment's function. You can hand it out if sealed or the permissions are
cleared, as then you can't really do anything with it other than look at the
integer address, but that seems a bit odd.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D108479/new/
https://reviews.llvm.org/D108479
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits