Date: Tue, 19 Dec 2000 23:05:39 -0800 From: Marcel Moolenaar <marcel@cup.hp.com> To: arch@FreeBSD.org Subject: gensetdefs using sh(1),sed(1),grep(1) and awk(1) Message-ID: <3A405A43.5C10697C@cup.hp.com>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------7F3A09E70C2BA0794B40E0DC Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Read and weep :-) It takes roughly 11 seconds on a 750 Athlon for this script to process all the object files. Not exactly quick... I think it can do better if we can avoid the "system()" calls... -- Marcel Moolenaar mail: marcel@cup.hp.com / marcel@FreeBSD.org tel: (408) 447-4222 --------------7F3A09E70C2BA0794B40E0DC Content-Type: application/x-sh; name="gensetdefs.sh" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="gensetdefs.sh" #!/bin/sh # # Generate setdefs.h # (for obj in $*; do ${OBJDUMP:=objdump} -h $obj | fgrep '.set.' | sed -e 's/2\*\*/1<</g' | \ awk '{ printf "%s %s ", $2, system(sprintf("exit $((%s))", $7)); \ system(sprintf("echo 16 i %s p | dc", toupper($3))) } \ ' | sed -e 's/^.set.//g' done) | sort | awk 'function emit(name, size, align) \ { printf "DEFINE_SET(%s, %d);\n", name, size/align } \ BEGIN { name = "" } \ END { if (name != "") emit(name, size, align) } \ $1 == name { size += $3 } \ $1 != name { if (name != "") emit(name, size, align); \ name = $1; size = $3; align = $2 } \ ' > setdefs.h # # generate setdef0.c # cat <<EOF > setdef0.c /* THIS FILE IS GENERATED, DO NOT EDIT. */ #define DEFINE_SET(set, count) \\ __asm__(".section .set." #set ",\"aw\""); \\ __asm__(".globl " #set); \\ __asm__(".type " #set ",@object"); \\ __asm__(".p2align 3"); \\ __asm__(#set ":"); \\ __asm__(".quad " #count); \\ __asm__(".previous") #include "setdefs.h" EOF # # generate setdef1.c # cat <<EOF > setdef1.c /* THIS FILE IS GENERATED, DO NOT EDIT. */ #define DEFINE_SET(set, count) \\ __asm__(".section .set." #set ",\"aw\""); \\ __asm__(".quad 0"); \\ __asm__(".previous") #include "setdefs.h" EOF --------------7F3A09E70C2BA0794B40E0DC-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A405A43.5C10697C>