xref: /linux-6.15/scripts/mod/mk_elfconfig.c (revision a660deb0)
1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds #include <stdio.h>
31da177e4SLinus Torvalds #include <stdlib.h>
41da177e4SLinus Torvalds #include <string.h>
51da177e4SLinus Torvalds #include <elf.h>
61da177e4SLinus Torvalds 
71da177e4SLinus Torvalds int
main(int argc,char ** argv)81da177e4SLinus Torvalds main(int argc, char **argv)
91da177e4SLinus Torvalds {
101da177e4SLinus Torvalds 	unsigned char ei[EI_NIDENT];
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds 	if (fread(ei, 1, EI_NIDENT, stdin) != EI_NIDENT) {
131da177e4SLinus Torvalds 		fprintf(stderr, "Error: input truncated\n");
141da177e4SLinus Torvalds 		return 1;
151da177e4SLinus Torvalds 	}
161da177e4SLinus Torvalds 	if (memcmp(ei, ELFMAG, SELFMAG) != 0) {
171da177e4SLinus Torvalds 		fprintf(stderr, "Error: not ELF\n");
181da177e4SLinus Torvalds 		return 1;
191da177e4SLinus Torvalds 	}
201da177e4SLinus Torvalds 	switch (ei[EI_CLASS]) {
211da177e4SLinus Torvalds 	case ELFCLASS32:
221da177e4SLinus Torvalds 		printf("#define KERNEL_ELFCLASS ELFCLASS32\n");
231da177e4SLinus Torvalds 		break;
241da177e4SLinus Torvalds 	case ELFCLASS64:
251da177e4SLinus Torvalds 		printf("#define KERNEL_ELFCLASS ELFCLASS64\n");
261da177e4SLinus Torvalds 		break;
271da177e4SLinus Torvalds 	default:
286803dc0eSSam Ravnborg 		exit(1);
291da177e4SLinus Torvalds 	}
301da177e4SLinus Torvalds 
311da177e4SLinus Torvalds 	return 0;
321da177e4SLinus Torvalds }
33