Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
2e2372c6
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2e2372c6
编写于
1月 09, 2015
作者:
B
bors
浏览文件
操作
浏览文件
下载
差异文件
auto merge of #20788 : Zoxc/rust/loader, r=huonw
Fixes #19907
上级
20bce448
9dea2107
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
2 deletion
+19
-2
src/librustc/metadata/creader.rs
src/librustc/metadata/creader.rs
+3
-0
src/librustc/metadata/loader.rs
src/librustc/metadata/loader.rs
+5
-2
src/librustc/session/mod.rs
src/librustc/session/mod.rs
+11
-0
未找到文件。
src/librustc/metadata/creader.rs
浏览文件 @
2e2372c6
...
...
@@ -409,6 +409,7 @@ fn resolve_crate(&mut self,
crate_name
:
name
,
hash
:
hash
.map
(|
a
|
&*
a
),
filesearch
:
self
.sess
.target_filesearch
(
kind
),
target
:
&
self
.sess.target.target
,
triple
:
&
self
.sess.opts.target_triple
[],
root
:
root
,
rejected_via_hash
:
vec!
(),
...
...
@@ -472,6 +473,7 @@ pub fn read_plugin_metadata<'b>(&'b mut self,
crate_name
:
&
name
[],
hash
:
None
,
filesearch
:
self
.sess
.host_filesearch
(
PathKind
::
Crate
),
target
:
&
self
.sess.host
,
triple
:
config
::
host_triple
(),
root
:
&
None
,
rejected_via_hash
:
vec!
(),
...
...
@@ -486,6 +488,7 @@ pub fn read_plugin_metadata<'b>(&'b mut self,
target_only
=
true
;
should_link
=
info
.should_link
;
load_ctxt
.target
=
&
self
.sess.target.target
;
load_ctxt
.triple
=
target_triple
;
load_ctxt
.filesearch
=
self
.sess
.target_filesearch
(
PathKind
::
Crate
);
load_ctxt
.load_library_crate
()
...
...
src/librustc/metadata/loader.rs
浏览文件 @
2e2372c6
...
...
@@ -225,6 +225,7 @@
use
syntax
::
codemap
::
Span
;
use
syntax
::
diagnostic
::
SpanHandler
;
use
util
::
fs
;
use
rustc_back
::
target
::
Target
;
use
std
::
ffi
::
CString
;
use
std
::
cmp
;
...
...
@@ -248,6 +249,8 @@ pub struct Context<'a> {
pub
ident
:
&
'a
str
,
pub
crate_name
:
&
'a
str
,
pub
hash
:
Option
<&
'a
Svh
>
,
// points to either self.sess.target.target or self.sess.host, must match triple
pub
target
:
&
'a
Target
,
pub
triple
:
&
'a
str
,
pub
filesearch
:
FileSearch
<
'a
>
,
pub
root
:
&
'a
Option
<
CratePaths
>
,
...
...
@@ -499,7 +502,7 @@ fn extract_one(&mut self, m: HashSet<Path>, flavor: &str,
for
lib
in
m
.into_iter
()
{
info!
(
"{} reading metadata from: {}"
,
flavor
,
lib
.display
());
let
metadata
=
match
get_metadata_section
(
self
.
sess.target.
target.options.is_like_osx
,
let
metadata
=
match
get_metadata_section
(
self
.target.options.is_like_osx
,
&
lib
)
{
Ok
(
blob
)
=>
{
if
self
.crate_matches
(
blob
.as_slice
(),
&
lib
)
{
...
...
@@ -588,7 +591,7 @@ fn crate_matches(&mut self, crate_data: &[u8], libpath: &Path) -> bool {
// Returns the corresponding (prefix, suffix) that files need to have for
// dynamic libraries
fn
dylibname
(
&
self
)
->
(
String
,
String
)
{
let
t
=
&
self
.
sess.target.
target
;
let
t
=
&
self
.target
;
(
t
.options.dll_prefix
.clone
(),
t
.options.dll_suffix
.clone
())
}
...
...
src/librustc/session/mod.rs
浏览文件 @
2e2372c6
...
...
@@ -25,6 +25,8 @@
use
syntax
::
parse
::
ParseSess
;
use
syntax
::{
ast
,
codemap
};
use
rustc_back
::
target
::
Target
;
use
std
::
os
;
use
std
::
cell
::{
Cell
,
RefCell
};
...
...
@@ -35,6 +37,7 @@
// session for a single crate.
pub
struct
Session
{
pub
target
:
config
::
Config
,
pub
host
:
Target
,
pub
opts
:
config
::
Options
,
pub
cstore
:
CStore
,
pub
parse_sess
:
ParseSess
,
...
...
@@ -243,6 +246,13 @@ pub fn build_session_(sopts: config::Options,
local_crate_source_file
:
Option
<
Path
>
,
span_diagnostic
:
diagnostic
::
SpanHandler
)
->
Session
{
let
host
=
match
Target
::
search
(
config
::
host_triple
())
{
Ok
(
t
)
=>
t
,
Err
(
e
)
=>
{
span_diagnostic
.handler
()
.fatal
((
format!
(
"Error loading host specification: {}"
,
e
))
.as_slice
());
}
};
let
target_cfg
=
config
::
build_target_config
(
&
sopts
,
&
span_diagnostic
);
let
p_s
=
parse
::
new_parse_sess_special_handler
(
span_diagnostic
);
let
default_sysroot
=
match
sopts
.maybe_sysroot
{
...
...
@@ -268,6 +278,7 @@ pub fn build_session_(sopts: config::Options,
let
sess
=
Session
{
target
:
target_cfg
,
host
:
host
,
opts
:
sopts
,
cstore
:
CStore
::
new
(
token
::
get_ident_interner
()),
parse_sess
:
p_s
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录