mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-24 06:10:12 +00:00
09768c5d7a
Summary: - `__wasm_init_memory` is now the WebAssembly start function instead of being called from `__wasm_call_ctors` or called directly by the runtime. - Adds a new synthetic data symbol `__wasm_init_memory_flag` that is atomically incremented from zero to one by the thread responsible for initializing memory. - All threads now unconditionally perform data.drop on all passive segments. - Removes --passive-segments and --active-segments flags and controls segment type based on --shared-memory instead. The deleted flags were only present to ameliorate the upgrade path in Emscripten. Reviewers: sbc100, aheejin Subscribers: dschuff, jgravelle-google, sunfish, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65783 llvm-svn: 370965
88 lines
2.4 KiB
C++
88 lines
2.4 KiB
C++
//===- Config.h -------------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLD_WASM_CONFIG_H
|
|
#define LLD_WASM_CONFIG_H
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/ADT/StringSet.h"
|
|
#include "llvm/BinaryFormat/Wasm.h"
|
|
#include "llvm/Support/CachePruning.h"
|
|
|
|
namespace lld {
|
|
namespace wasm {
|
|
|
|
// This struct contains the global configuration for the linker.
|
|
// Most fields are direct mapping from the command line options
|
|
// and such fields have the same name as the corresponding options.
|
|
// Most fields are initialized by the driver.
|
|
struct Configuration {
|
|
bool allowUndefined;
|
|
bool checkFeatures;
|
|
bool compressRelocations;
|
|
bool demangle;
|
|
bool disableVerify;
|
|
bool emitRelocs;
|
|
bool exportAll;
|
|
bool exportDynamic;
|
|
bool exportTable;
|
|
bool growableTable;
|
|
bool gcSections;
|
|
bool importMemory;
|
|
bool sharedMemory;
|
|
bool importTable;
|
|
bool mergeDataSegments;
|
|
bool pie;
|
|
bool printGcSections;
|
|
bool relocatable;
|
|
bool saveTemps;
|
|
bool shared;
|
|
bool stripAll;
|
|
bool stripDebug;
|
|
bool stackFirst;
|
|
bool trace;
|
|
uint32_t globalBase;
|
|
uint32_t initialMemory;
|
|
uint32_t maxMemory;
|
|
uint32_t zStackSize;
|
|
unsigned ltoPartitions;
|
|
unsigned ltoo;
|
|
unsigned optimize;
|
|
unsigned thinLTOJobs;
|
|
|
|
llvm::StringRef entry;
|
|
llvm::StringRef outputFile;
|
|
llvm::StringRef thinLTOCacheDir;
|
|
|
|
llvm::StringSet<> allowUndefinedSymbols;
|
|
llvm::StringSet<> exportedSymbols;
|
|
std::vector<llvm::StringRef> searchPaths;
|
|
llvm::CachePruningPolicy thinLTOCachePolicy;
|
|
llvm::Optional<std::vector<std::string>> features;
|
|
|
|
// The following config options do not directly correspond to any
|
|
// particualr command line options.
|
|
|
|
// True if we are creating position-independent code.
|
|
bool isPic;
|
|
|
|
// The table offset at which to place function addresses. We reserve zero
|
|
// for the null function pointer. This gets set to 1 for exectuables and 0
|
|
// for shared libraries (since they always added to a dynamic offset at
|
|
// runtime).
|
|
uint32_t tableBase = 0;
|
|
};
|
|
|
|
// The only instance of Configuration struct.
|
|
extern Configuration *config;
|
|
|
|
} // namespace wasm
|
|
} // namespace lld
|
|
|
|
#endif
|