selfhost: drop snake_case locals in dyn/dynout/obj + w6a + cgen + ww driver
This commit is contained in:
@@ -120,11 +120,11 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
bufputb(&str_, &zero, 1u64);
|
||||
|
||||
// Section name offsets.
|
||||
let shn_text: u32 = bufputcstr(&shstr, ".text");
|
||||
let shn_rela: u32 = bufputcstr(&shstr, ".rela.text");
|
||||
let shn_symtab: u32 = bufputcstr(&shstr, ".symtab");
|
||||
let shn_strtab: u32 = bufputcstr(&shstr, ".strtab");
|
||||
let shn_shstrtab: u32 = bufputcstr(&shstr, ".shstrtab");
|
||||
let shntext: u32 = bufputcstr(&shstr, ".text");
|
||||
let shnrela: u32 = bufputcstr(&shstr, ".rela.text");
|
||||
let shnsymtab: u32 = bufputcstr(&shstr, ".symtab");
|
||||
let shnstrtab: u32 = bufputcstr(&shstr, ".strtab");
|
||||
let shnshstrtab: u32 = bufputcstr(&shstr, ".shstrtab");
|
||||
|
||||
// Symbol 0 — STN_UNDEF (24 zero bytes).
|
||||
let zsym: [24]u8;
|
||||
@@ -141,8 +141,8 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
let entry: [24]u8;
|
||||
let ei: i32 = 0;
|
||||
for (ei < 24) { entry[ei] = 0u8; ei += 1; };
|
||||
let st_name: u32 = bufputcstr(&str_, s.name);
|
||||
wru32(entry.ptr, 0u64, st_name);
|
||||
let stname: u32 = bufputcstr(&str_, s.name);
|
||||
wru32(entry.ptr, 0u64, stname);
|
||||
if (s.defined != 0) {
|
||||
wru8(entry.ptr, 4u64, ((STB_GLOBAL << 4u8) | STT_FUNC));
|
||||
wru16(entry.ptr, 6u64, SH_TEXT);
|
||||
@@ -162,8 +162,8 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
for (r != nil) {
|
||||
let entry: [24]u8;
|
||||
wru64(entry.ptr, 0u64, r.off);
|
||||
let r_info: u64 = (r.asy.idx: u64 << 32u64) | (r.kind: u64 & 4294967295u64);
|
||||
wru64(entry.ptr, 8u64, r_info);
|
||||
let rinfo: u64 = (r.asy.idx: u64 << 32u64) | (r.kind: u64 & 4294967295u64);
|
||||
wru64(entry.ptr, 8u64, rinfo);
|
||||
wru64(entry.ptr, 16u64, r.addend: u64);
|
||||
bufputb(&rela, entry.ptr, 24u64);
|
||||
r = r.rnext;
|
||||
@@ -171,13 +171,13 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
|
||||
// File offsets.
|
||||
let off: u64 = EHDR_SZ;
|
||||
let off_text: u64 = off; off = off + a.textlen;
|
||||
let off_rela: u64 = off; off = off + rela.n;
|
||||
let off_sym: u64 = off; off = off + sym.n;
|
||||
let off_str: u64 = off; off = off + str_.n;
|
||||
let off_shstr: u64 = off; off = off + shstr.n;
|
||||
let offtext: u64 = off; off = off + a.textlen;
|
||||
let offrela: u64 = off; off = off + rela.n;
|
||||
let offsym: u64 = off; off = off + sym.n;
|
||||
let offstr: u64 = off; off = off + str_.n;
|
||||
let offshstr: u64 = off; off = off + shstr.n;
|
||||
for ((off & 7u64) != 0u64) { off += 1u64; };
|
||||
let off_shdr: u64 = off;
|
||||
let offshdr: u64 = off;
|
||||
let NSECT: u16 = 6u16;
|
||||
|
||||
// ---- Ehdr ----
|
||||
@@ -196,7 +196,7 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
wru32(eh.ptr, 20u64, EV_CURRENT_W);
|
||||
wru64(eh.ptr, 24u64, 0u64); // e_entry
|
||||
wru64(eh.ptr, 32u64, 0u64); // e_phoff
|
||||
wru64(eh.ptr, 40u64, off_shdr); // e_shoff
|
||||
wru64(eh.ptr, 40u64, offshdr); // e_shoff
|
||||
wru32(eh.ptr, 48u64, 0u32); // e_flags
|
||||
wru16(eh.ptr, 52u64, 64u16); // e_ehsize
|
||||
wru16(eh.ptr, 54u64, 0u16); // e_phentsize
|
||||
@@ -238,20 +238,20 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
// .text
|
||||
sn = 0;
|
||||
for (sn < 64) { shbuf[sn] = 0u8; sn += 1; };
|
||||
wru32(shbuf.ptr, 0u64, shn_text);
|
||||
wru32(shbuf.ptr, 0u64, shntext);
|
||||
wru32(shbuf.ptr, 4u64, SHT_PROGBITS_C);
|
||||
wru64(shbuf.ptr, 8u64, SHF_ALLOC | SHF_EXECINSTR);
|
||||
wru64(shbuf.ptr, 24u64, off_text);
|
||||
wru64(shbuf.ptr, 24u64, offtext);
|
||||
wru64(shbuf.ptr, 32u64, a.textlen);
|
||||
wru64(shbuf.ptr, 48u64, 1u64); // sh_addralign
|
||||
os.writefull(fd, shbuf.ptr, 64u64);
|
||||
// .rela.text
|
||||
sn = 0;
|
||||
for (sn < 64) { shbuf[sn] = 0u8; sn += 1; };
|
||||
wru32(shbuf.ptr, 0u64, shn_rela);
|
||||
wru32(shbuf.ptr, 0u64, shnrela);
|
||||
wru32(shbuf.ptr, 4u64, SHT_RELA_C);
|
||||
wru64(shbuf.ptr, 8u64, SHF_INFO_LINK);
|
||||
wru64(shbuf.ptr, 24u64, off_rela);
|
||||
wru64(shbuf.ptr, 24u64, offrela);
|
||||
wru64(shbuf.ptr, 32u64, rela.n);
|
||||
wru32(shbuf.ptr, 40u64, 3u32); // sh_link = symtab idx
|
||||
wru32(shbuf.ptr, 44u64, 1u32); // sh_info = .text idx
|
||||
@@ -261,9 +261,9 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
// .symtab
|
||||
sn = 0;
|
||||
for (sn < 64) { shbuf[sn] = 0u8; sn += 1; };
|
||||
wru32(shbuf.ptr, 0u64, shn_symtab);
|
||||
wru32(shbuf.ptr, 0u64, shnsymtab);
|
||||
wru32(shbuf.ptr, 4u64, SHT_SYMTAB_C);
|
||||
wru64(shbuf.ptr, 24u64, off_sym);
|
||||
wru64(shbuf.ptr, 24u64, offsym);
|
||||
wru64(shbuf.ptr, 32u64, sym.n);
|
||||
wru32(shbuf.ptr, 40u64, 4u32); // sh_link = strtab
|
||||
wru32(shbuf.ptr, 44u64, 1u32); // sh_info = one local (STN_UNDEF)
|
||||
@@ -273,18 +273,18 @@ export fn emitelf(a: *asm_, fd: i32) i32 = {
|
||||
// .strtab
|
||||
sn = 0;
|
||||
for (sn < 64) { shbuf[sn] = 0u8; sn += 1; };
|
||||
wru32(shbuf.ptr, 0u64, shn_strtab);
|
||||
wru32(shbuf.ptr, 0u64, shnstrtab);
|
||||
wru32(shbuf.ptr, 4u64, SHT_STRTAB_C);
|
||||
wru64(shbuf.ptr, 24u64, off_str);
|
||||
wru64(shbuf.ptr, 24u64, offstr);
|
||||
wru64(shbuf.ptr, 32u64, str_.n);
|
||||
wru64(shbuf.ptr, 48u64, 1u64);
|
||||
os.writefull(fd, shbuf.ptr, 64u64);
|
||||
// .shstrtab
|
||||
sn = 0;
|
||||
for (sn < 64) { shbuf[sn] = 0u8; sn += 1; };
|
||||
wru32(shbuf.ptr, 0u64, shn_shstrtab);
|
||||
wru32(shbuf.ptr, 0u64, shnshstrtab);
|
||||
wru32(shbuf.ptr, 4u64, SHT_STRTAB_C);
|
||||
wru64(shbuf.ptr, 24u64, off_shstr);
|
||||
wru64(shbuf.ptr, 24u64, offshstr);
|
||||
wru64(shbuf.ptr, 32u64, shstr.n);
|
||||
wru64(shbuf.ptr, 48u64, 1u64);
|
||||
os.writefull(fd, shbuf.ptr, 64u64);
|
||||
|
||||
Reference in New Issue
Block a user