authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-04-22 16:41:25+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-04-23 13:50:24+02:00
logb95cdf0aeb4d4d31c0b6a54302ef61baec8f6773
tree9899799a79075c59eb753b0b772c7718be7a09fa
parentc3ce04b9e548b0dbf2c286e7c764320620f06bf9

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


1 files changed, 18 insertions(+), 4 deletions(-)

lib/std/elf.zig+18-4
......@@ -719,6 +719,13 @@ pub const Elf32_Sym = extern struct {
719719 st_info: u8,
720720 st_other: u8,
721721 st_shndx: Elf32_Section,
722
723 pub inline fn st_type(self: @This()) u4 {
724 return @truncate(u4, self.st_info);
725 }
726 pub inline fn st_bind(self: @This()) u4 {
727 return @truncate(u4, self.st_info >> 4);
728 }
722729};
723730pub const Elf64_Sym = extern struct {
724731 st_name: Elf64_Word,
......@@ -727,6 +734,13 @@ pub const Elf64_Sym = extern struct {
727734 st_shndx: Elf64_Section,
728735 st_value: Elf64_Addr,
729736 st_size: Elf64_Xword,
737
738 pub inline fn st_type(self: @This()) u4 {
739 return @truncate(u4, self.st_info);
740 }
741 pub inline fn st_bind(self: @This()) u4 {
742 return @truncate(u4, self.st_info >> 4);
743 }
730744};
731745pub const Elf32_Syminfo = extern struct {
732746 si_boundto: Elf32_Half,
......@@ -744,7 +758,7 @@ pub const Elf32_Rel = extern struct {
744758 return @truncate(u24, self.r_info >> 8);
745759 }
746760 pub inline fn r_type(self: @This()) u8 {
747 return @truncate(u8, self.r_info & 0xff);
761 return @truncate(u8, self.r_info);
748762 }
749763};
750764pub const Elf64_Rel = extern struct {
......@@ -755,7 +769,7 @@ pub const Elf64_Rel = extern struct {
755769 return @truncate(u32, self.r_info >> 32);
756770 }
757771 pub inline fn r_type(self: @This()) u32 {
758 return @truncate(u32, self.r_info & 0xffffffff);
772 return @truncate(u32, self.r_info);
759773 }
760774};
761775pub const Elf32_Rela = extern struct {
......@@ -767,7 +781,7 @@ pub const Elf32_Rela = extern struct {
767781 return @truncate(u24, self.r_info >> 8);
768782 }
769783 pub inline fn r_type(self: @This()) u8 {
770 return @truncate(u8, self.r_info & 0xff);
784 return @truncate(u8, self.r_info);
771785 }
772786};
773787pub const Elf64_Rela = extern struct {
......@@ -779,7 +793,7 @@ pub const Elf64_Rela = extern struct {
779793 return @truncate(u32, self.r_info >> 32);
780794 }
781795 pub inline fn r_type(self: @This()) u32 {
782 return @truncate(u32, self.r_info & 0xffffffff);
796 return @truncate(u32, self.r_info);
783797 }
784798};
785799pub const Elf32_Dyn = extern struct {