zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit b95cdf0aeb4d4d31c0b6a54302ef61baec8f6773 (tree)
parent c3ce04b9e548b0dbf2c286e7c764320620f06bf9
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Sat, 22 Apr 2023 16:41:25 +0200

elf: add helpers for extracting type and bind from symbol def

Diffstat:
Mlib/std/elf.zig | 22++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/lib/std/elf.zig b/lib/std/elf.zig @@ -719,6 +719,13 @@ pub const Elf32_Sym = extern struct { st_info: u8, st_other: u8, st_shndx: Elf32_Section, + + pub inline fn st_type(self: @This()) u4 { + return @truncate(u4, self.st_info); + } + pub inline fn st_bind(self: @This()) u4 { + return @truncate(u4, self.st_info >> 4); + } }; pub const Elf64_Sym = extern struct { st_name: Elf64_Word, @@ -727,6 +734,13 @@ pub const Elf64_Sym = extern struct { st_shndx: Elf64_Section, st_value: Elf64_Addr, st_size: Elf64_Xword, + + pub inline fn st_type(self: @This()) u4 { + return @truncate(u4, self.st_info); + } + pub inline fn st_bind(self: @This()) u4 { + return @truncate(u4, self.st_info >> 4); + } }; pub const Elf32_Syminfo = extern struct { si_boundto: Elf32_Half, @@ -744,7 +758,7 @@ pub const Elf32_Rel = extern struct { return @truncate(u24, self.r_info >> 8); } pub inline fn r_type(self: @This()) u8 { - return @truncate(u8, self.r_info & 0xff); + return @truncate(u8, self.r_info); } }; pub const Elf64_Rel = extern struct { @@ -755,7 +769,7 @@ pub const Elf64_Rel = extern struct { return @truncate(u32, self.r_info >> 32); } pub inline fn r_type(self: @This()) u32 { - return @truncate(u32, self.r_info & 0xffffffff); + return @truncate(u32, self.r_info); } }; pub const Elf32_Rela = extern struct { @@ -767,7 +781,7 @@ pub const Elf32_Rela = extern struct { return @truncate(u24, self.r_info >> 8); } pub inline fn r_type(self: @This()) u8 { - return @truncate(u8, self.r_info & 0xff); + return @truncate(u8, self.r_info); } }; pub const Elf64_Rela = extern struct { @@ -779,7 +793,7 @@ pub const Elf64_Rela = extern struct { return @truncate(u32, self.r_info >> 32); } pub inline fn r_type(self: @This()) u32 { - return @truncate(u32, self.r_info & 0xffffffff); + return @truncate(u32, self.r_info); } }; pub const Elf32_Dyn = extern struct {