Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
027368b8
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,发现更多精彩内容 >>
提交
027368b8
编写于
3月 25, 2011
作者:
G
Graydon Hoare
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Janitorial: move llvmext back to llvm module, as they're the same thing now.
上级
fb08ef44
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
15 deletion
+20
-15
src/comp/front/creader.rs
src/comp/front/creader.rs
+6
-7
src/comp/lib/llvm.rs
src/comp/lib/llvm.rs
+14
-8
未找到文件。
src/comp/front/creader.rs
浏览文件 @
027368b8
...
...
@@ -4,7 +4,6 @@
import
front
.ast
;
import
lib
.llvm.False
;
import
lib
.llvm.llvm
;
import
lib
.llvm.llvmext
;
import
lib
.llvm.mk_object_file
;
import
lib
.llvm.mk_section_iter
;
import
middle
.fold
;
...
...
@@ -331,23 +330,23 @@ fn load_crate(session.session sess,
for
(
str
library_search_path
in
library_search_paths
)
{
auto
path
=
fs
.connect
(
library_search_path
,
filename
);
auto
pbuf
=
_
str
.buf
(
path
);
auto
mb
=
llvm
ext
.LLVMRustCreateMemoryBufferWithContentsOfFile
(
pbuf
);
auto
mb
=
llvm
.LLVMRustCreateMemoryBufferWithContentsOfFile
(
pbuf
);
if
(
mb
as
int
!=
0
)
{
auto
of
=
mk_object_file
(
mb
);
auto
si
=
mk_section_iter
(
of
.llof
);
while
(
llvm
ext
.LLVMIsSectionIteratorAtEnd
(
of
.llof
,
si
.llsi
)
==
while
(
llvm
.LLVMIsSectionIteratorAtEnd
(
of
.llof
,
si
.llsi
)
==
False
)
{
auto
name_buf
=
llvm
ext
.LLVMGetSectionName
(
si
.llsi
);
auto
name_buf
=
llvm
.LLVMGetSectionName
(
si
.llsi
);
auto
name
=
_
str
.str_from_cstr
(
name_buf
);
if
(
_
str
.eq
(
name
,
x86
.get_meta_sect_name
()))
{
auto
cbuf
=
llvm
ext
.LLVMGetSectionContents
(
si
.llsi
);
auto
csz
=
llvm
ext
.LLVMGetSectionSize
(
si
.llsi
);
auto
cbuf
=
llvm
.LLVMGetSectionContents
(
si
.llsi
);
auto
csz
=
llvm
.LLVMGetSectionSize
(
si
.llsi
);
auto
cvbuf
=
cbuf
as
_
vec
.vbuf
;
auto
cvec
=
_
vec
.vec_from_vbuf
[
u8
](
cvbuf
,
csz
);
sess
.set_external_crate
(
cnum
,
cvec
);
ret
;
}
llvm
ext
.LLVMMoveToNextSection
(
si
.llsi
);
llvm
.LLVMMoveToNextSection
(
si
.llsi
);
}
}
}
...
...
src/comp/lib/llvm.rs
浏览文件 @
027368b8
...
...
@@ -22,8 +22,8 @@
import
llvm
.IntPredicate
;
import
llvm
.RealPredicate
;
import
llvm
.Opcode
;
import
llvm
ext
.ObjectFileRef
;
import
llvm
ext
.SectionIteratorRef
;
import
llvm
.ObjectFileRef
;
import
llvm
.SectionIteratorRef
;
type
ULongLong
=
u64
;
type
LongLong
=
i64
;
...
...
@@ -740,9 +740,10 @@ fn LLVMBuildPtrDiff(BuilderRef B, ValueRef LHS,
/** Destroys a memory buffer. */
fn
LLVMDisposeMemoryBuffer
(
MemoryBufferRef
MemBuf
);
}
native
mod
llvmext
=
llvm_lib
{
/* Stuff that's in rustllvm/ because it's not upstream yet. */
type
ObjectFileRef
;
type
SectionIteratorRef
;
...
...
@@ -777,6 +778,11 @@ fn LLVMRustCreateMemoryBufferWithContentsOfFile(sbuf Path) ->
/** Returns a string describing the last error caused by an LLVMRust*
call. */
fn
LLVMRustGetLastError
()
->
sbuf
;
}
native
mod
rustllvm
=
llvm_lib
{
}
/* Slightly more terse object-interface to LLVM's 'builder' functions. */
...
...
@@ -1384,26 +1390,26 @@ fn mk_pass_manager() -> pass_manager {
/* Memory-managed interface to object files. */
obj
object_file_dtor
(
ObjectFileRef
ObjectFile
)
{
drop
{
llvm
ext
.LLVMDisposeObjectFile
(
ObjectFile
);
}
drop
{
llvm
.LLVMDisposeObjectFile
(
ObjectFile
);
}
}
type
object_file
=
rec
(
ObjectFileRef
llof
,
object_file_dtor
dtor
);
fn
mk_object_file
(
MemoryBufferRef
llmb
)
->
object_file
{
auto
llof
=
llvm
ext
.LLVMCreateObjectFile
(
llmb
);
auto
llof
=
llvm
.LLVMCreateObjectFile
(
llmb
);
ret
rec
(
llof
=
llof
,
dtor
=
object_file_dtor
(
llof
));
}
/* Memory-managed interface to section iterators. */
obj
section_iter_dtor
(
SectionIteratorRef
SI
)
{
drop
{
llvm
ext
.LLVMDisposeSectionIterator
(
SI
);
}
drop
{
llvm
.LLVMDisposeSectionIterator
(
SI
);
}
}
type
section_iter
=
rec
(
SectionIteratorRef
llsi
,
section_iter_dtor
dtor
);
fn
mk_section_iter
(
ObjectFileRef
llof
)
->
section_iter
{
auto
llsi
=
llvm
ext
.LLVMGetSections
(
llof
);
auto
llsi
=
llvm
.LLVMGetSections
(
llof
);
ret
rec
(
llsi
=
llsi
,
dtor
=
section_iter_dtor
(
llsi
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录