[WebAssembly] Add warnings for -shared and -pie

The meaning of -shared and -pie are expected to be changed in the
future when Module Linking-style libraries are implemented. Begin
issuing warnings to give people a heads-up that they will be changing.

For compatibility with Emscripten, add a --experimental-pic flag which
disables these warnings.

Differential Revision: https://reviews.llvm.org/D81760
This commit is contained in:
Dan Gohman 2020-06-12 12:05:40 -07:00
parent b9a539c010
commit 46a3268312
3 changed files with 23 additions and 0 deletions

View File

@ -27,6 +27,7 @@ struct Configuration {
bool compressRelocations;
bool demangle;
bool disableVerify;
bool experimentalPic;
bool emitRelocs;
bool exportAll;
bool exportDynamic;

View File

@ -332,6 +332,7 @@ static void readConfigs(opt::InputArgList &args) {
config->demangle = args.hasFlag(OPT_demangle, OPT_no_demangle, true);
config->disableVerify = args.hasArg(OPT_disable_verify);
config->emitRelocs = args.hasArg(OPT_emit_relocs);
config->experimentalPic = args.hasArg(OPT_experimental_pic);
config->entry = getEntry(args);
config->exportAll = args.hasArg(OPT_export_all);
config->exportTable = args.hasArg(OPT_export_table);
@ -468,6 +469,23 @@ static void checkOptions(opt::InputArgList &args) {
if (config->sharedMemory)
error("-r and --shared-memory may not be used together");
}
// To begin to prepare for Module Linking-style shared libraries, start
// warning about uses of `-shared` and related flags outside of Experimental
// mode, to give anyone using them a heads-up that they will be changing.
//
// Also, warn about flags which request explicit exports.
if (!config->experimentalPic) {
// -shared will change meaning when Module Linking is implemented.
if (config->shared) {
warn("creating shared libraries, with -shared, is not yet stable");
}
// -pie will change meaning when Module Linking is implemented.
if (config->pie) {
warn("creating PIEs, with -pie, is not yet stable");
}
}
}
// Force Sym to be entered in the output. Used for -u or equivalent.

View File

@ -200,3 +200,7 @@ def thinlto_cache_dir: J<"thinlto-cache-dir=">,
defm thinlto_cache_policy: Eq<"thinlto-cache-policy", "Pruning policy for the ThinLTO cache">;
def thinlto_jobs: J<"thinlto-jobs=">,
HelpText<"Number of ThinLTO jobs. Default to --threads=">;
// Experimental PIC mode.
def experimental_pic: F<"experimental-pic">,
HelpText<"Enable Experimental PIC">;