1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #! /usr/bin/awk -f
- #
- # Copyright (C) 2006 Free Software Foundation, Inc.
- #
- # This genmoddep.awk is free software; the author
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
- # Read defined symbols from stdin.
- BEGIN {
- while (getline <"/dev/stdin") {
- symtab[$1] = $2
- }
- }
- # The first line contains a module name.
- FNR == 1 {
- module = $1
- next
- };
- # The rest is undefined symbols.
- {
- if ($1 in symtab) {
- modtab[module] = modtab[module] " " symtab[$1];
- }
- else if ($1 != "__gnu_local_gp") {
- printf "%s in %s is not defined\n", $1, module >"/dev/stderr";
- error++;
- }
- }
- # Output the result.
- END {
- if (error >= 1)
- exit 1;
- for (mod in modtab) {
- # Remove duplications.
- split(modtab[mod], depmods, " ");
- for (depmod in uniqmods) {
- delete uniqmods[depmod];
- }
- for (i in depmods) {
- depmod = depmods[i];
- # Ignore kernel, as always loaded.
- if (depmod != "kernel" && depmod != mod)
- uniqmods[depmod] = 1;
- }
- modlist = ""
- for (depmod in uniqmods) {
- modlist = modlist " " depmod;
- }
- printf "%s:%s\n", mod, modlist;
- }
- }
|