namespace rgpot::aoti_execstackΒΆ

namespace aoti_execstack {
 
// global variables
 
uint32_t kPtGnuStack = 0x6474e551u;
uint32_t kPfX = 1u;
uint32_t kZipLocal = 0x04034b50u;
uint32_t kZipCentral = 0x02014b50u;
std::chrono::milliseconds kPublicationInitialBackoff {1};
std::chrono::milliseconds kPublicationMaxBackoff {32};
std::chrono::milliseconds kPublicationDeadline {2000};
 
// global functions
 
uint16_t rd16(const uint8_t* p);
uint32_t rd32(const uint8_t* p);
uint64_t rd64(const uint8_t* p);
uint32_t zip_crc32(const uint8_t* data, size_t n);
void wr32(uint8_t* p, uint32_t v);
bool clear_elf_gnu_stack(uint8_t* data, size_t n);
bool elf_needs_gnu_stack_clear(const uint8_t* data, size_t n);
bool scan_or_clear_pt2(uint8_t* buf, size_t n, bool write);
bool publication_time_left(std::chrono::steady_clock::time_point start);
void publication_backoff(std::chrono::milliseconds& delay);
bool publication_retryable(const std::error_code& ec);
bool publication_slot_absent(const std::error_code& ec);
bool publication_slot_taken(const std::error_code& ec);
std::error_code publish_replace(const std::filesystem::path& from, const std::filesystem::path& to);
std::vector<uint8_t> read_all(const std::string& path);
void write_all(const std::string& path, const std::vector<uint8_t>& buf);
std::string cache_path_for(const std::string& src);
std::string prepare_pt2_for_load(const std::string& src);
 
} // namespace aoti_execstack