Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
1bb14445
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
1bb14445
编写于
8月 14, 2016
作者:
E
Eduard Burtescu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Get rid of the .note interpretation of rustc dylib metadata.
上级
02aec40d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
28 addition
and
26 deletion
+28
-26
src/librustc_metadata/loader.rs
src/librustc_metadata/loader.rs
+18
-23
src/librustc_trans/base.rs
src/librustc_trans/base.rs
+10
-3
未找到文件。
src/librustc_metadata/loader.rs
浏览文件 @
1bb14445
...
...
@@ -867,34 +867,29 @@ fn get_metadata_section_imp(target: &Target, flavor: CrateFlavor, filename: &Pat
}
pub
fn
meta_section_name
(
target
:
&
Target
)
->
&
'static
str
{
// Historical note:
//
// When using link.exe it was seen that the section name `.note.rustc`
// was getting shortened to `.note.ru`, and according to the PE and COFF
// specification:
//
// > Executable images do not use a string table and do not support
// > section names longer than 8 characters
//
// https://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx
//
// As a result, we choose a slightly shorter name! As to why
// `.note.rustc` works on MinGW, that's another good question...
if
target
.options.is_like_osx
{
"__DATA,__note.rustc"
}
else
if
target
.options.is_like_msvc
{
// When using link.exe it was seen that the section name `.note.rustc`
// was getting shortened to `.note.ru`, and according to the PE and COFF
// specification:
//
// > Executable images do not use a string table and do not support
// > section names longer than 8 characters
//
// https://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx
//
// As a result, we choose a slightly shorter name! As to why
// `.note.rustc` works on MinGW, that's another good question...
".rustc"
"__DATA,.rustc"
}
else
{
".
note.
rustc"
".rustc"
}
}
pub
fn
read_meta_section_name
(
target
:
&
Target
)
->
&
'static
str
{
if
target
.options.is_like_osx
{
"__note.rustc"
}
else
if
target
.options.is_like_msvc
{
".rustc"
}
else
{
".note.rustc"
}
pub
fn
read_meta_section_name
(
_
target
:
&
Target
)
->
&
'static
str
{
".rustc"
}
// A diagnostic function for dumping crate metadata to an output stream
...
...
src/librustc_trans/base.rs
浏览文件 @
1bb14445
...
...
@@ -2250,10 +2250,17 @@ fn write_metadata(cx: &SharedCrateContext,
};
unsafe
{
llvm
::
LLVMSetInitializer
(
llglobal
,
llconst
);
let
name
=
let
section_
name
=
cx
.tcx
()
.sess.cstore
.metadata_section_name
(
&
cx
.sess
()
.target.target
);
let
name
=
CString
::
new
(
name
)
.unwrap
();
llvm
::
LLVMSetSection
(
llglobal
,
name
.as_ptr
())
let
name
=
CString
::
new
(
section_name
)
.unwrap
();
llvm
::
LLVMSetSection
(
llglobal
,
name
.as_ptr
());
// Also generate a .section directive to force no
// flags, at least for ELF outputs, so that the
// metadata doesn't get loaded into memory.
let
directive
=
format!
(
".section {}"
,
section_name
);
let
directive
=
CString
::
new
(
directive
)
.unwrap
();
llvm
::
LLVMSetModuleInlineAsm
(
cx
.metadata_llmod
(),
directive
.as_ptr
())
}
return
metadata
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录