hurd-devel
[Top][All Lists]
Advanced

[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);
}'



reply via email to

[Prev in Thread] Current Thread [Next in Thread]