mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-23 13:52:28 +00:00
Clean up more code
- Found some bugs in LLVM compiler-rt library - The useless LIBC_STUBS package is now deleted - Improve the overflow checking story even further - Get chibicc tests working in MODE=dbg mode again - The libc/isystem/ headers now have correctly named guards
This commit is contained in:
parent
afc58a8b41
commit
d7c79f43ef
294 changed files with 912 additions and 1208 deletions
|
@ -16,12 +16,20 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/elf/def.h"
|
||||
#include "libc/elf/elf.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/elf/struct/ehdr.h"
|
||||
#include "libc/intrin/bits.h"
|
||||
|
||||
/**
|
||||
* Returns true if `elf` is a 64-bit elf executable.
|
||||
*
|
||||
* @param elf points to the start of the executable image
|
||||
* @param mapsize is the number of bytes past `elf` we can access
|
||||
* @return true if elf header looks legit
|
||||
*/
|
||||
bool IsElf64Binary(const Elf64_Ehdr *elf, size_t mapsize) {
|
||||
if (mapsize < sizeof(Elf64_Ehdr)) return false;
|
||||
if (memcmp(elf->e_ident, ELFMAG, 4)) return false;
|
||||
return (elf->e_ident[EI_CLASS] == ELFCLASSNONE ||
|
||||
elf->e_ident[EI_CLASS] == ELFCLASS64);
|
||||
if (READ32LE(elf->e_ident) != READ32LE(ELFMAG)) return false;
|
||||
return elf->e_ident[EI_CLASS] != ELFCLASS32;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue