llvm::LLVMInitializePasses();
+ for plugin in &sess.opts.debugging_opts.llvm_plugins {
+ let path = CString::new(plugin.as_bytes()).unwrap();
+ let res = libc::dlopen(path.as_ptr(), libc::RTLD_LAZY | libc::RTLD_GLOBAL);
+ if res.is_null() {
+ println!("{}", CStr::from_ptr(libc::dlerror()).to_string_lossy().into_owned());
+ }
+ println!("{:p}", res);
+ println!("{}", plugin);
+ }
+
rustc_llvm::initialize_available_targets();
llvm::LLVMRustSetLLVMOptions(llvm_args.len() as c_int, llvm_args.as_ptr());
tracked!(instrument_coverage, Some(InstrumentCoverage::All));
tracked!(instrument_mcount, true);
tracked!(link_only, true);
+ tracked!(llvm_plugins, vec![String::from("plugin_name")]);
tracked!(merge_functions, Some(MergeFunctions::Disabled));
tracked!(mir_emit_retag, true);
tracked!(mir_opt_level, Some(4));
"link native libraries in the linker invocation (default: yes)"),
link_only: bool = (false, parse_bool, [TRACKED],
"link the `.rlink` file generated by `-Z no-link` (default: no)"),
+ llvm_plugins: Vec<String> = (Vec::new(), parse_list, [TRACKED],
+ "a list LLVM plugins to enable (space separated)"),
llvm_time_trace: bool = (false, parse_bool, [UNTRACKED],
"generate JSON tracing data file from LLVM data (default: no)"),
ls: bool = (false, parse_bool, [UNTRACKED],