authorgravatar for 75898413+Artix-Fox@users.noreply.github.comArtixFox <75898413+Artix-Fox@users.noreply.github.com> 2021-06-08 23:02:12+05:30
committergravatar for noreply@github.comGitHub <noreply@github.com> 2021-06-08 20:32:12+03:00
log032204ffe79a9686560c2638eda4af649bfd9dd4
tree9558d66069922fa69207e09567c6501224f85671
parent38e233845ef7fa5c8ccb2cd3ce053d1827f9ee42
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Changed return values of SectionHeaderIterator().next() to bswapAllFields() (#9014)


1 files changed, 3 insertions(+), 24 deletions(-)

lib/std/elf.zig+3-24
...@@ -479,18 +479,8 @@ pub fn SectionHeaderIterator(ParseSource: anytype) type {...@@ -479,18 +479,8 @@ pub fn SectionHeaderIterator(ParseSource: anytype) type {
479 if (self.elf_header.endian == native_endian) return shdr;479 if (self.elf_header.endian == native_endian) return shdr;
480480
481 // Convert fields to native endianness.481 // Convert fields to native endianness.
482 return Elf64_Shdr{482 bswapAllFields(Elf64_Shdr, &shdr);
483 .sh_name = @byteSwap(@TypeOf(shdr.sh_name), shdr.sh_name),483 return shdr;
484 .sh_type = @byteSwap(@TypeOf(shdr.sh_type), shdr.sh_type),
485 .sh_flags = @byteSwap(@TypeOf(shdr.sh_flags), shdr.sh_flags),
486 .sh_addr = @byteSwap(@TypeOf(shdr.sh_addr), shdr.sh_addr),
487 .sh_offset = @byteSwap(@TypeOf(shdr.sh_offset), shdr.sh_offset),
488 .sh_size = @byteSwap(@TypeOf(shdr.sh_size), shdr.sh_size),
489 .sh_link = @byteSwap(@TypeOf(shdr.sh_link), shdr.sh_link),
490 .sh_info = @byteSwap(@TypeOf(shdr.sh_info), shdr.sh_info),
491 .sh_addralign = @byteSwap(@TypeOf(shdr.sh_addralign), shdr.sh_addralign),
492 .sh_entsize = @byteSwap(@TypeOf(shdr.sh_entsize), shdr.sh_entsize),
493 };
494 }484 }
495485
496 var shdr: Elf32_Shdr = undefined;486 var shdr: Elf32_Shdr = undefined;
...@@ -501,18 +491,7 @@ pub fn SectionHeaderIterator(ParseSource: anytype) type {...@@ -501,18 +491,7 @@ pub fn SectionHeaderIterator(ParseSource: anytype) type {
501 // ELF endianness does NOT match native endianness.491 // ELF endianness does NOT match native endianness.
502 if (self.elf_header.endian != native_endian) {492 if (self.elf_header.endian != native_endian) {
503 // Convert fields to native endianness.493 // Convert fields to native endianness.
504 shdr = .{494 bswapAllFields(Elf32_Shdr, &shdr);
505 .sh_name = @byteSwap(@TypeOf(shdr.sh_name), shdr.sh_name),
506 .sh_type = @byteSwap(@TypeOf(shdr.sh_type), shdr.sh_type),
507 .sh_flags = @byteSwap(@TypeOf(shdr.sh_flags), shdr.sh_flags),
508 .sh_addr = @byteSwap(@TypeOf(shdr.sh_addr), shdr.sh_addr),
509 .sh_offset = @byteSwap(@TypeOf(shdr.sh_offset), shdr.sh_offset),
510 .sh_size = @byteSwap(@TypeOf(shdr.sh_size), shdr.sh_size),
511 .sh_link = @byteSwap(@TypeOf(shdr.sh_link), shdr.sh_link),
512 .sh_info = @byteSwap(@TypeOf(shdr.sh_info), shdr.sh_info),
513 .sh_addralign = @byteSwap(@TypeOf(shdr.sh_addralign), shdr.sh_addralign),
514 .sh_entsize = @byteSwap(@TypeOf(shdr.sh_entsize), shdr.sh_entsize),
515 };
516 }495 }
517496
518 // Convert 32-bit header to 64-bit.497 // Convert 32-bit header to 64-bit.