Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: [agc-symver] src/lib/libc
On Sun, Mar 31, 2013 at 11:48:21AM +0900, Masao Uebayashi wrote:
> How do you generate Version.map?
With a script.
> Can you define symbols per-module (e.g., libc/gen, libc/stdio, ...)?
No, that makes no sense. Symbols are per-library, and no-one wants to
manage multiple files for the symbols in one library. What next?
Multiple files for major, minor and teeny shlib_versions?
I'll commit some information regarding the symbol versioning methods RSN.
Regards,
Alistair
#! /bin/sh
# $NetBSD: genraidconf.sh,v 1.5 2011/05/19 00:24:22 agc Exp $
# Copyright (c) 2013 Alistair Crooks <agc%NetBSD.org@localhost>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Usage: mkvermap c
# makes symbol versioning info for /usr/lib/libc.so
major=0
minor=0
minimus=0
if [ -f shlib_version ]; then
. ./shlib_version
fi
os="$(uname -r)"
output=Version.map
while [ $# -gt 0 ]; do
case "$1" in
--major=*) major=${1#--major=} ;;
--minor=*) minor=${1#--minor=} ;;
--os=*) os=${1#--os=} ;;
--output=*) output=${1#--output=} ;;
-o) output=$2; shift ;;
-v) set -x ;;
*) break ;;
esac
shift
done
LIB=$1
nm /usr/lib/lib${LIB}.so |
awk '$2 ~ /^[BCDRTWV]$/ { print "\t" $3 ";" }' |
sort -u |
awk -v LIB=${LIB} -v osver="${os}" -v major=${major} -v minor=${minor}
-v minimus=${minimus} '
BEGIN {
printf("LIB%s_%s.%s.%s.0 {\nglobal:\n", toupper(LIB), major,
minor, minimus)
}
{ print }
END {
printf("};\n\n");
printf("NetBSD_%s.0 {\n} LIB%s_%s.%s.%s.0;\n\n", osver,
toupper(LIB), major, minor, minimus);
printf("LIB%s_private_%s.%s.%s.0 {\nlocal:\n\t*;\n};\n\n",
toupper(LIB), major, minor, minimus);
}' > ${output}
exit 0
Home |
Main Index |
Thread Index |
Old Index