Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 支持动态链接 #910

Open
wants to merge 78 commits into
base: master
Choose a base branch
from
Open

feat: 支持动态链接 #910

wants to merge 78 commits into from

Conversation

Chiichen
Copy link
Member

@Chiichen Chiichen commented Sep 2, 2024

需要等待 #840 合入主线再解决冲突

Jomocool and others added 30 commits May 3, 2024 11:06
* fix(mm):优化extract中对before和after VMA映射情况的判断 (#802)

* 添加mmap对MAP_FIXED的处理 (#706)
* 添加mmap对MAP_FIXED的处理 (#706)
* feat(elf): [WIP] Dynamic link support

* chore: revert changes on Cargo.toml
@Chiichen
Copy link
Member Author

Chiichen commented Oct 20, 2024

将系统内现有的测试程序都替换为了glibc实现后,发现有三个测试程序出现panic,为以下原因

@Chiichen
Copy link
Member Author

Chiichen commented Oct 29, 2024

@fslongjin review一下?我看 CI 好像最近经常因为网络问题挂掉

@fslongjin
Copy link
Member

@fslongjin review一下?我看 CI 好像最近经常因为网络问题挂掉

ci没办法,我们现在的穷鬼方案是这样子的。除非搞cdn提前刷新预热。但是成本有点高啊这么搞。

@Chiichen
Copy link
Member Author

@fslongjin review一下?我看 CI 好像最近经常因为网络问题挂掉

ci没办法,我们现在的穷鬼方案是这样子的。除非搞cdn提前刷新预热。但是成本有点高啊这么搞。

我看是因为换了源引起的?是不是在 CI 里就用默认的 rust 源就好了

@fslongjin
Copy link
Member

fslongjin commented Oct 30, 2024

我看是因为换了源引起的?是不是在 CI 里就用默认的 rust 源就好了

超时的是访问我们的国内镜像站。这个得用cdn解决。我下回搞个穷鬼方案试一下吧:通过智能dns实现 github ci走CDN,其他请求回源站
真正的穷鬼方案:换成国内dns服务商,然后利用cloudflare saas实现cname接入,然后境内外分区解析。境外走cf,境内走源站

@fslongjin
Copy link
Member

image
这里为什么存了个二进制文件?

@fslongjin
Copy link
Member

fslongjin commented Nov 11, 2024

还有,构建glibc的脚本需要sudo?那运行起来dadk会遇到权限问题。我觉得还是直接下载构建好的包合适一点?

@Chiichen
Copy link
Member Author

image 这里为什么存了个二进制文件?

这个是得带上的,不在glibc的编译产物里,应该是gcc的产物,如果不带是运行不起来的

@Chiichen
Copy link
Member Author

Chiichen commented Nov 11, 2024

还有,构建glibc的脚本需要sudo?那运行起来dadk会遇到权限问题。我觉得还是直接下载构建好的包合适一点?

sudo 是安装构建glibc需要的依赖用的,构建本身不需要,或者我把它放在bootstrap里?感觉还是得本地构建,直接下载包的话可能并不是那么好维护

@fslongjin
Copy link
Member

image 这里为什么存了个二进制文件?

这个是得带上的,不在glibc的编译产物里,应该是gcc的产物,如果不带是运行不起来的

emm,感觉这个还是很怪,要不看看asterinas他们那边是怎么拷贝动态库的?

@Chiichen
Copy link
Member Author

image 这里为什么存了个二进制文件?

这个是得带上的,不在glibc的编译产物里,应该是gcc的产物,如果不带是运行不起来的

emm,感觉这个还是很怪,要不看看asterinas他们那边是怎么拷贝动态库的?

https://github.com/asterinas/asterinas/blob/11382524d1d23cc6d41adf977a72138baa39e38d/test/Makefile#L44 我看有这个,但是不知道这个是拷到哪里去的。感觉sysroot还是要拷的,要么就直接带一个动态库,要么就本地编一个动态库再拷进去

@fslongjin
Copy link
Member

fslongjin commented Nov 11, 2024

https://github.com/asterinas/asterinas/blob/11382524d1d23cc6d41adf977a72138baa39e38d/test/Makefile#L44 我看有这个,但是不知道这个是拷到哪里去的。感觉sysroot还是要拷的,要么就直接带一个动态库,要么就本地编一个动态库再拷进去

他们那个脚本是运行在ubuntu、debian的容器镜像里面的。或者干脆就直接从镜像里面拷贝一个glibc出来。打包成tar。直接下载安装

@Chiichen
Copy link
Member Author

Chiichen commented Nov 11, 2024

https://github.com/asterinas/asterinas/blob/11382524d1d23cc6d41adf977a72138baa39e38d/test/Makefile#L44 我看有这个,但是不知道这个是拷到哪里去的。感觉sysroot还是要拷的,要么就直接带一个动态库,要么就本地编一个动态库再拷进去

他们那个脚本是运行在ubuntu、debian的容器镜像里面的。或者干脆就直接从镜像里面拷贝一个glibc出来。打包成tar。直接下载安装

主要是直接拷sysroot的话,在mac上就开发不了了,虽然现在也还不行

@fslongjin
Copy link
Member

fslongjin commented Nov 11, 2024

主要是直接拷sysroot的话,在mac上就开发不了了

我一般就是起一个容器,然后docker cp哈哈哈。我的意思就是提前拷好打包成tar

@Chiichen
Copy link
Member Author

主要是直接拷sysroot的话,在mac上就开发不了了

我一般就是起一个容器,然后docker cp哈哈哈。我的意思就是提前拷好打包成tar

主要是提前拷好的话国内得上镜像站或者cdn?会不会流量爆炸,一个好像也有几十MB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-driver Area: 驱动程序 A-fs Area: 文件系统 enhancement New feature or request O-riscv64 Target: riscv64 O-x86_64 Target: x86_64
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants