aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-04-22 16:41:25 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-04-23 13:50:24 +0200
commitb95cdf0aeb4d4d31c0b6a54302ef61baec8f6773 (patch)
tree9899799a79075c59eb753b0b772c7718be7a09fa /lib
parentc3ce04b9e548b0dbf2c286e7c764320620f06bf9 (diff)
downloadzig-b95cdf0aeb4d4d31c0b6a54302ef61baec8f6773.tar.gz
zig-b95cdf0aeb4d4d31c0b6a54302ef61baec8f6773.zip
elf: add helpers for extracting type and bind from symbol def
Diffstat (limited to 'lib')
-rw-r--r--lib/std/elf.zig22
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/std/elf.zig b/lib/std/elf.zig
index 6807e153fd..e2cad5640e 100644
--- 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 {