scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

commit c1e1df2ac4a400eae9b97a01106a95cc927f83db
parent 6abf674372bf77c7bcd7ed762b3791c67b7fdf47
Author: Roberto E. Vargas Caballero <k0ga@shike2.net>
Date:   Fri,  8 May 2026 18:52:07 +0200

libmach: Use 32BE for index in elf

Archive of elf always use offset of 4 bytes and being big endian
independently of the architecture used in the object files.

Diffstat:
Msrc/libmach/Makefile | 1-
Msrc/libmach/elf/elfsetidx.c | 6+-----
Dsrc/libmach/setidx64.c | 29-----------------------------
3 files changed, 1 insertion(+), 35 deletions(-)

diff --git a/src/libmach/Makefile b/src/libmach/Makefile @@ -32,7 +32,6 @@ OBJS =\ rebase.o\ setindex.o\ setidx32.o\ - setidx64.o\ mapsec.o\ mapseg.o\ setsec.o\ diff --git a/src/libmach/elf/elfsetidx.c b/src/libmach/elf/elfsetidx.c @@ -9,9 +9,5 @@ int elfsetidx(int type, long nsymbols, char *names[], long offs[], FILE *fp) { - int (*f)(int, long, char *[], long[], FILE *); - - f = (BITS(type) == OBJ32) ? setidx32 : setidx64; - - return (*f)(ORDER(type), nsymbols, names, offs, fp); + return setidx32(BIG_ENDIAN, nsymbols, names, offs, fp); } diff --git a/src/libmach/setidx64.c b/src/libmach/setidx64.c @@ -1,29 +0,0 @@ -#include <stdio.h> -#include <string.h> - -#include <scc/mach.h> - -#include "libmach.h" - -int -setidx64(int order, long nsyms, char *names[], long offs[], FILE *fp) -{ - long i; - size_t len; - unsigned char buff[8]; - - pack(order, buff, "q", (long long) nsyms); - fwrite(buff, 8, 1, fp); - - for (i = 0; i < nsyms; i++) { - pack(order, buff, "q", (long long) offs[i]); - fwrite(buff, 8, 1, fp); - } - - for (i = 0; i < nsyms; i++) { - len = strlen(names[i]) + 1; - fwrite(names[i], len, 1, fp); - } - - return fflush(fp) == EOF ? -1 : 0; -}