[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Checks-syms results
From: |
Roland McGrath |
Subject: |
Re: Checks-syms results |
Date: |
Sat, 23 Feb 2002 19:03:14 -0500 (EST) |
> Now that I have a bootable libio system, I have run the check-syms
> script on it.
Excellent. Thanks for doing this.
> You may want me to rerunit with more binaries, though.
As many as you can, please. In examining the results I realized that the
script is not showing all relevant symbols, because data references wind up
with defined symbols. I'm attaching a new version of the script that shows
these too.
> You can find the report at: http://people.debian.org/~jbailey/check_syms.txt
We need to figure out what used the GLIBC_2.0 set. Nothing should.
It might be some libgcc code or something like that.
> Please let me know as soon as you can whether I can proceed with this,
> or need to do more tests, or what.
I want to change the errno definition, that is de-inline it,
to avoid programs using the __hurd_sigthread_* et al symbols.
In the glibc-2.3 ABI, I think these will go away.
So you'll have to recompile everything again (sorry). But this is a
compatible change, i.e. the binaries you have now will continue to work.
We just want to make sure not to get an installed base of binaries using
those symbols.
#!/bin/sh
${OBJDUMP:-objdump} --dynamic-syms ${1+"$@"} | ${AWK:-awk} '
/^[^:]+: +file format/ {
sub(/:.*$/, "");
file = $0
}
$3 == "*UND*" && NF == 5 {
sets[""] = sets[""] "\n\t" $5;
syms[$5] = syms[$5] " " file;
next
}
$2 == "w" && $4 == "*UND*" && NF == 7 {
sets[$6] = sets[$6] "\nweak\t" $7;
syms[$7] = syms[$7] " " file;
next
}
$2 == "w" && $4 == "*UND*" && NF == 6 {
sets[""] = sets[""] "\nweak\t" $6;
syms[$6] = syms[$6] " " file;
next
}
NF == 6 && $5 != "Base" {
sets[$5] = sets[$5] "\n\t" $6;
syms[$6] = syms[$6] " " file;
next
}
END {
for (set in sets) {
if (set != "") {
printf "%s", set;
out = "sort -u";
print sets[set] | out;
close(out)
}
}
out = "sort -u";
printf "\ndefault";
print sets[""] | "sort -u";
close(out);
print "\nsymbol users:\n";
out = "sort -u";
for (sym in syms) {
printf "%-24s\t%s\n", sym, syms[sym] | out;
}
close(out);
}'