[PATCH] D62838: [Object] add isExecutableObject member function
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 18 23:25:42 PDT 2019
MaskRay added inline comments.
================
Comment at: llvm/include/llvm/Object/ELFObjectFile.h:1203
+template <class ELFT> bool ELFObjectFile<ELFT>::isExecutableObject() const {
+ return EF.getHeader()->e_type == ELF::ET_EXEC;
+}
----------------
abrachet wrote:
> MaskRay wrote:
> > Some people will be surprised if `ET_DYN` is not considered as executable object.
> >
> > Position-Independent Executables use `ET_DYN`.
> $ llvm-readelf `which llvm-readelf` -h
> ...
> Type: DYN (Shared object file)
>
> Oh yeah, good catch, thank you. How would you write this method? Does an executable always have e_entry as non zero? Is there ever a case where execve(2) will not fail if e_entry is 0?
>
> Also, should I worry about this? https://github.com/freebsd/freebsd/blob/master/sys/kern/imgact_elf.c#L1135 I don't know enough about ELF yet on this one. Thanks.
Do you have a use case (not a unittest) of this member function?
If you have one, let's see if relocatable/executable/shared should be trichotomy or not.
Trichotomy doesn't work in ELF. One may argue a PIE doesn't have PT_INTERP but a DSO doesn't. However, a static pie doesn't have PT_INTERP, either. Its difference from a DSO is if DT_DEBUG exists. However, DT_DEBUG can be disabled in lld with -z rodynamic (Fuchsia people do so)...
> Also, should I worry about this? https://github.com/freebsd/freebsd/blob/master/sys/kern/imgact_elf.c#L1135
We should not be bothered by FreeBSD Brandinfo
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62838/new/
https://reviews.llvm.org/D62838
More information about the llvm-commits
mailing list