JJ's blog

ELF 文件结构速查

注1:这里只是简单描述 ELF 文件最核心的结构,作为 cheat sheet 以便于快速查看。不会展开具体的字节描述,有必要请查看 Wikipedia

注2:本文只包括常见模式,可能存在特殊情况。且目前只验证了一个 .so 文件

注3:一个在线 ELF viewer, 随便找的,不保证质量。 elfy.io

文件本身的结构

一个 ELF 文件由下面几个部分组成:

  1. 三个 header: ELF header, program header table, section header table.
  2. sections, 每个 section 用于一个目的。
  3. 用于满足 align 要求的 section 之间的垃圾字节。

Read more...

Mesa/OpenGL 源码分析:Context 与 Shader 编译机制

TL;DR;
在 Mesa 早期版本的实现中,OpenGL context 其实就是一个存在 TLS 中的大结构体,保存了诸如固定管线状态、shader 源代码、已编译的 IL 之类的东西。
glShaderSource 只是复制了源代码,glCompileShader 则是对源代码进行预处理、语法语义分析,并生成 Mesa 定义的 IL 代码。

前段时间 AMD 有一个关于 AMDVLK 开源项目 discontinue 的 announcement,其中提到他们准备转向 RADV,这是一个 Mesa 下属的 Vulkan driver。于是借此机会,我也想花点时间来看看这个 Mesa 项目。

Read more...

DNS杂记:resolv.conf, zone, dig

最近因为感兴趣的东西和DNS有关,所以了解了一些零零碎碎的关于DNS的知识,并略做记录,之后又有想了解的时候再进一步补充。
目前包括的内容有:resolv.conf, zone info, dig.

Read more...