Module Name: src Committed By: rin Date: Mon Apr 25 14:03:15 UTC 2022
Modified Files: src/sys/arch/amiga/stand/bootblock/elf2bb: chksum.c elf2bb.c Log Message: Use htobe{16,32}(9) instead of be{16,32}toh(9) where appropriate. No binary changes both for little and big endian machines. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/amiga/stand/bootblock/elf2bb/chksum.c cvs rdiff -u -r1.22 -r1.23 src/sys/arch/amiga/stand/bootblock/elf2bb/elf2bb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amiga/stand/bootblock/elf2bb/chksum.c diff -u src/sys/arch/amiga/stand/bootblock/elf2bb/chksum.c:1.6 src/sys/arch/amiga/stand/bootblock/elf2bb/chksum.c:1.7 --- src/sys/arch/amiga/stand/bootblock/elf2bb/chksum.c:1.6 Mon Apr 25 13:43:50 2022 +++ src/sys/arch/amiga/stand/bootblock/elf2bb/chksum.c Mon Apr 25 14:03:15 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: chksum.c,v 1.6 2022/04/25 13:43:50 rin Exp $ */ +/* $NetBSD: chksum.c,v 1.7 2022/04/25 14:03:15 rin Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -49,7 +49,7 @@ chksum(uint32_t *block, int size) for (i=0; i<size; i++) { lastsum = sum; - sum += htobe32(block[i]); + sum += be32toh(block[i]); if (sum < lastsum) ++sum; } Index: src/sys/arch/amiga/stand/bootblock/elf2bb/elf2bb.c diff -u src/sys/arch/amiga/stand/bootblock/elf2bb/elf2bb.c:1.22 src/sys/arch/amiga/stand/bootblock/elf2bb/elf2bb.c:1.23 --- src/sys/arch/amiga/stand/bootblock/elf2bb/elf2bb.c:1.22 Mon Apr 25 13:43:50 2022 +++ src/sys/arch/amiga/stand/bootblock/elf2bb/elf2bb.c Mon Apr 25 14:03:15 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: elf2bb.c,v 1.22 2022/04/25 13:43:50 rin Exp $ */ +/* $NetBSD: elf2bb.c,v 1.23 2022/04/25 14:03:15 rin Exp $ */ /*- * Copyright (c) 1996,2006 The NetBSD Foundation, Inc. @@ -147,51 +147,51 @@ main(int argc, char *argv[]) eh = (Elf32_Ehdr *)image; /* XXX endianness */ - dprintf(("%04x sections, offset %08x\n", htobe16(eh->e_shnum), htobe32(eh->e_shoff))); - if (htobe16(eh->e_type) != ET_REL) + dprintf(("%04x sections, offset %08x\n", be16toh(eh->e_shnum), be32toh(eh->e_shoff))); + if (be16toh(eh->e_type) != ET_REL) errx(1, "%s isn't a relocatable file, type=%d", - argv[0], htobe16(eh->e_type)); - if (htobe16(eh->e_machine) != EM_68K) + argv[0], be16toh(eh->e_type)); + if (be16toh(eh->e_machine) != EM_68K) errx(1, "%s isn't M68K, machine=%d", argv[0], - htobe16(eh->e_machine)); + be16toh(eh->e_machine)); /* Calculate sizes from section headers. */ tsz = dsz = bsz = trsz = 0; - sh = (Elf32_Shdr *)(image + htobe32(eh->e_shoff)); - shstrtab = (char *)(image + htobe32(sh[htobe16(eh->e_shstrndx)].sh_offset)); + sh = (Elf32_Shdr *)(image + be32toh(eh->e_shoff)); + shstrtab = (char *)(image + be32toh(sh[be16toh(eh->e_shstrndx)].sh_offset)); symtab = NULL; /*XXX*/ strtab = NULL; /*XXX*/ dprintf((" name type flags addr offset size align\n")); - for (i = 0; i < htobe16(eh->e_shnum); ++i) { + for (i = 0; i < be16toh(eh->e_shnum); ++i) { uint32_t sh_size; dprintf( ("%2d: %08x %-16s %08x %08x %08x %08x %08x %08x\n", i, - htobe32(sh[i].sh_name), shstrtab + htobe32(sh[i].sh_name), - htobe32(sh[i].sh_type), - htobe32(sh[i].sh_flags), htobe32(sh[i].sh_addr), - htobe32(sh[i].sh_offset), htobe32(sh[i].sh_size), - htobe32(sh[i].sh_addralign))); - sh_size = (htobe32(sh[i].sh_size) + htobe32(sh[i].sh_addralign) - 1) & - -htobe32(sh[i].sh_addralign); + be32toh(sh[i].sh_name), shstrtab + be32toh(sh[i].sh_name), + be32toh(sh[i].sh_type), + be32toh(sh[i].sh_flags), be32toh(sh[i].sh_addr), + be32toh(sh[i].sh_offset), be32toh(sh[i].sh_size), + be32toh(sh[i].sh_addralign))); + sh_size = (be32toh(sh[i].sh_size) + be32toh(sh[i].sh_addralign) - 1) & + - be32toh(sh[i].sh_addralign); /* If section allocates memory, add to text, data, or bss size. */ - if (htobe32(sh[i].sh_flags) & SHF_ALLOC) { - if (htobe32(sh[i].sh_type) == SHT_PROGBITS) { - if (htobe32(sh[i].sh_flags) & SHF_WRITE) + if (be32toh(sh[i].sh_flags) & SHF_ALLOC) { + if (be32toh(sh[i].sh_type) == SHT_PROGBITS) { + if (be32toh(sh[i].sh_flags) & SHF_WRITE) dsz += sh_size; else tsz += sh_size; } else bsz += sh_size; /* If it's relocations, add to relocation count */ - } else if (htobe32(sh[i].sh_type) == SHT_RELA) { - trsz += htobe32(sh[i].sh_size); + } else if (be32toh(sh[i].sh_type) == SHT_RELA) { + trsz += be32toh(sh[i].sh_size); } /* Check for SHT_REL? */ /* Get symbol table location. */ - else if (htobe32(sh[i].sh_type) == SHT_SYMTAB) { - symtab = (Elf32_Sym *)(image + htobe32(sh[i].sh_offset)); - } else if (strcmp(".strtab", shstrtab + htobe32(sh[i].sh_name)) == 0) { - strtab = image + htobe32(sh[i].sh_offset); + else if (be32toh(sh[i].sh_type) == SHT_SYMTAB) { + symtab = (Elf32_Sym *)(image + be32toh(sh[i].sh_offset)); + } else if (strcmp(".strtab", shstrtab + be32toh(sh[i].sh_name)) == 0) { + strtab = image + be32toh(sh[i].sh_offset); } } dprintf(("tsz = 0x%x, dsz = 0x%x, bsz = 0x%x, total 0x%x\n", @@ -244,18 +244,18 @@ retry: memset(buffer, 0, bbsize); /* Allocate and load loadable sections */ - sect_offset = (uint32_t *)malloc(htobe16(eh->e_shnum) * sizeof(uint32_t)); - for (i = 0, l = 0; i < htobe16(eh->e_shnum); ++i) { - if (htobe32(sh[i].sh_flags) & SHF_ALLOC) { + sect_offset = (uint32_t *)malloc(be16toh(eh->e_shnum) * sizeof(uint32_t)); + for (i = 0, l = 0; i < be16toh(eh->e_shnum); ++i) { + if (be32toh(sh[i].sh_flags) & SHF_ALLOC) { dprintf(("vaddr 0x%04x size 0x%04x offset 0x%04x section %s\n", - l, htobe32(sh[i].sh_size), htobe32(sh[i].sh_offset), - shstrtab + htobe32(sh[i].sh_name))); - if (htobe32(sh[i].sh_type) == SHT_PROGBITS) - memcpy(buffer + l, image + htobe32(sh[i].sh_offset), - htobe32(sh[i].sh_size)); + l, be32toh(sh[i].sh_size), be32toh(sh[i].sh_offset), + shstrtab + be32toh(sh[i].sh_name))); + if (be32toh(sh[i].sh_type) == SHT_PROGBITS) + memcpy(buffer + l, image + be32toh(sh[i].sh_offset), + be32toh(sh[i].sh_size)); sect_offset[i] = l; - l += (htobe32(sh[i].sh_size) + htobe32(sh[i].sh_addralign) - 1) & - -htobe32(sh[i].sh_addralign); + l += (be32toh(sh[i].sh_size) + be32toh(sh[i].sh_addralign) - 1) & + - be32toh(sh[i].sh_addralign); } } @@ -264,7 +264,7 @@ retry: * relocator version. For now, check that the relocator at * the image start does understand what we output. */ - relver = htobe32(*(uint32_t *)(buffer + 4)); + relver = be32toh(*(uint32_t *)(buffer + 4)); switch (relver) { default: errx(1, "%s: unrecognized relocator version %d", @@ -296,70 +296,70 @@ retry: * PC-relative entries will be absolute and don't need relocation */ undefsyms = 0; - for (i = 0; i < htobe16(eh->e_shnum); ++i) { + for (i = 0; i < be16toh(eh->e_shnum); ++i) { int n; Elf32_Rela *ra; uint8_t *base; - if (htobe32(sh[i].sh_type) != SHT_RELA) + if (be32toh(sh[i].sh_type) != SHT_RELA) continue; base = NULL; - if (strncmp(shstrtab + htobe32(sh[i].sh_name), ".rela", 5) != 0) + if (strncmp(shstrtab + be32toh(sh[i].sh_name), ".rela", 5) != 0) err(1, "bad relocation section name %s", shstrtab + - htobe32(sh[i].sh_name)); - for (n = 0; n < htobe16(eh->e_shnum); ++n) { - if (strcmp(shstrtab + htobe32(sh[i].sh_name) + 5, shstrtab + - htobe32(sh[n].sh_name)) != 0) + be32toh(sh[i].sh_name)); + for (n = 0; n < be16toh(eh->e_shnum); ++n) { + if (strcmp(shstrtab + be32toh(sh[i].sh_name) + 5, shstrtab + + be32toh(sh[n].sh_name)) != 0) continue; base = buffer + sect_offset[n]; break; } if (base == NULL) errx(1, "Can't find section for reloc %s", shstrtab + - htobe32(sh[i].sh_name)); - ra = (Elf32_Rela *)(image + htobe32(sh[i].sh_offset)); - for (n = 0; n < htobe32(sh[i].sh_size); n += sizeof(Elf32_Rela), ++ra) { + be32toh(sh[i].sh_name)); + ra = (Elf32_Rela *)(image + be32toh(sh[i].sh_offset)); + for (n = 0; n < be32toh(sh[i].sh_size); n += sizeof(Elf32_Rela), ++ra) { Elf32_Sym *s; int value; - s = &symtab[ELF32_R_SYM(htobe32(ra->r_info))]; + s = &symtab[ELF32_R_SYM(be32toh(ra->r_info))]; if (s->st_shndx == ELF_SYM_UNDEFINED) { fprintf(stderr, "Undefined symbol: %s\n", - strtab + htobe32(s->st_name)); + strtab + be32toh(s->st_name)); ++undefsyms; } - value = htobe32(ra->r_addend) + eval(s, sect_offset); + value = be32toh(ra->r_addend) + eval(s, sect_offset); dprintf(("reloc %04x info %04x (type %d sym %d) add 0x%x val %x\n", - htobe32(ra->r_offset), htobe32(ra->r_info), - ELF32_R_TYPE(htobe32(ra->r_info)), - ELF32_R_SYM(htobe32(ra->r_info)), - htobe32(ra->r_addend), value)); - switch (ELF32_R_TYPE(htobe32(ra->r_info))) { + be32toh(ra->r_offset), be32toh(ra->r_info), + ELF32_R_TYPE(be32toh(ra->r_info)), + ELF32_R_SYM(be32toh(ra->r_info)), + be32toh(ra->r_addend), value)); + switch (ELF32_R_TYPE(be32toh(ra->r_info))) { case R_68K_32: tmp32 = htobe32(value); - memcpy(base + htobe32(ra->r_offset), &tmp32, + memcpy(base + be32toh(ra->r_offset), &tmp32, sizeof(tmp32)); - relbuf[r32sz++] = (base - buffer) + htobe32(ra->r_offset); + relbuf[r32sz++] = (base - buffer) + be32toh(ra->r_offset); break; case R_68K_PC32: ++pcrelsz; - tmp32 = htobe32(value - htobe32(ra->r_offset)); - memcpy(base + htobe32(ra->r_offset), &tmp32, + tmp32 = htobe32(value - be32toh(ra->r_offset)); + memcpy(base + be32toh(ra->r_offset), &tmp32, sizeof(tmp32)); break; case R_68K_PC16: ++pcrelsz; - value -= htobe32(ra->r_offset); + value -= be32toh(ra->r_offset); if (value < -0x8000 || value > 0x7fff) errx(1, "PC-relative offset out of range: %x\n", value); tmp16 = htobe16(value); - memcpy(base + htobe32(ra->r_offset), &tmp16, + memcpy(base + be32toh(ra->r_offset), &tmp16, sizeof(tmp16)); break; default: errx(1, "Relocation type %d not supported", - ELF32_R_TYPE(htobe32(ra->r_info))); + ELF32_R_TYPE(be32toh(ra->r_info))); } } } @@ -469,10 +469,10 @@ eval(Elf32_Sym *s, uint32_t *o) { int value; - value = htobe32(s->st_value); - if (htobe16(s->st_shndx) < 0xf000) - value += o[htobe16(s->st_shndx)]; + value = be32toh(s->st_value); + if (be16toh(s->st_shndx) < 0xf000) + value += o[be16toh(s->st_shndx)]; else - printf("eval: %x\n", htobe16(s->st_shndx)); + printf("eval: %x\n", be16toh(s->st_shndx)); return value; }