From 105958d7eca6f896fb8caab1f9777157eb0a352c Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Mon, 8 Dec 2014 06:19:08 -0800 Subject: [PATCH] 5773 Extra pointless steps in kernel module builds Reviewed by: Dan McDonald Reviewed by: Josef Sipek Reviewed by: Rich Lowe Reviewed by: Robert Mustacchi Approved by: Rich Lowe --- usr/src/Makefile.master | 7 - usr/src/pkg/manifests/developer-build-onbld.mf | 2 - usr/src/tools/ctf/Makefile | 2 +- usr/src/tools/ctf/scripts/Makefile | 47 ------ usr/src/tools/ctf/scripts/ctfcvtptbl.pl | 222 ------------------------- usr/src/tools/ctf/scripts/ctffindmod.sh | 171 ------------------- usr/src/tools/scripts/bldenv.sh | 3 - usr/src/tools/scripts/nightly.sh | 7 - usr/src/uts/Makefile.uts | 70 ++------ 9 files changed, 12 insertions(+), 519 deletions(-) delete mode 100644 usr/src/tools/ctf/scripts/Makefile delete mode 100644 usr/src/tools/ctf/scripts/ctfcvtptbl.pl delete mode 100644 usr/src/tools/ctf/scripts/ctffindmod.sh diff --git a/usr/src/Makefile.master b/usr/src/Makefile.master index ee9ee2a9c4..59f342b69d 100644 --- a/usr/src/Makefile.master +++ b/usr/src/Makefile.master @@ -161,8 +161,6 @@ CTFSTABS= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstabs CTFSTRIP= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstrip NDRGEN= $(ONBLD_TOOLS)/bin/$(MACH)/ndrgen GENOFFSETS= $(ONBLD_TOOLS)/bin/genoffsets -CTFCVTPTBL= $(ONBLD_TOOLS)/bin/ctfcvtptbl -CTFFINDMOD= $(ONBLD_TOOLS)/bin/ctffindmod XREF= $(ONBLD_TOOLS)/bin/xref FIND= /usr/bin/find PERL= /usr/bin/perl @@ -187,11 +185,6 @@ MSGCC= $(ASTBINDIR)/msgcc FILEMODE= 644 DIRMODE= 755 -# -# The version of the patch makeup table optimized for build-time use. Used -# during patch builds only. -$(PATCH_BUILD)PMTMO_FILE=$(SRC)/patch_makeup_table.mo - # Declare that nothing should be built in parallel. # Individual Makefiles can use the .PARALLEL target to declare otherwise. .NO_PARALLEL: diff --git a/usr/src/pkg/manifests/developer-build-onbld.mf b/usr/src/pkg/manifests/developer-build-onbld.mf index 6b9439f5fb..cdbbb05747 100644 --- a/usr/src/pkg/manifests/developer-build-onbld.mf +++ b/usr/src/pkg/manifests/developer-build-onbld.mf @@ -92,8 +92,6 @@ file path=opt/onbld/bin/checkpaths mode=0555 file path=opt/onbld/bin/checkproto mode=0555 file path=opt/onbld/bin/copyrightchk mode=0555 file path=opt/onbld/bin/cstyle mode=0555 -file path=opt/onbld/bin/ctfcvtptbl mode=0555 -file path=opt/onbld/bin/ctffindmod mode=0555 file path=opt/onbld/bin/elfcmp mode=0555 file path=opt/onbld/bin/elfsigncmp mode=0555 file path=opt/onbld/bin/find_elf mode=0555 diff --git a/usr/src/tools/ctf/Makefile b/usr/src/tools/ctf/Makefile index 0746c4943f..dee410e27c 100644 --- a/usr/src/tools/ctf/Makefile +++ b/usr/src/tools/ctf/Makefile @@ -26,7 +26,7 @@ include ../Makefile.tools -SUBDIRS = cvt dump stabs scripts ctfstrip +SUBDIRS = cvt dump stabs ctfstrip .PARALLEL: $(SUBDIRS) diff --git a/usr/src/tools/ctf/scripts/Makefile b/usr/src/tools/ctf/scripts/Makefile deleted file mode 100644 index a4b30cf153..0000000000 --- a/usr/src/tools/ctf/scripts/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# Copyright 2002 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -#ident "%Z%%M% %I% %E% SMI" - -include ../../Makefile.tools - -.KEEP_STATE: - -SHFILES= \ - ctffindmod - -PERLFILES= \ - ctfcvtptbl - -all: $(SHFILES) $(PERLFILES) - -install: all .WAIT $(ROOTONBLDSHFILES) $(ROOTONBLDPERLFILES) - -lint: - -clean: - $(RM) $(SHFILES) $(PERLFILES) - -include ../../Makefile.targ diff --git a/usr/src/tools/ctf/scripts/ctfcvtptbl.pl b/usr/src/tools/ctf/scripts/ctfcvtptbl.pl deleted file mode 100644 index cc2de05c3a..0000000000 --- a/usr/src/tools/ctf/scripts/ctfcvtptbl.pl +++ /dev/null @@ -1,222 +0,0 @@ -#!/bin/perl -w -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License, Version 1.0 only -# (the "License"). You may not use this file except in compliance -# with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# ident "%Z%%M% %I% %E% SMI" -# -# Copyright 2002 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# ctfcvtptbl [-o outfile] patch-makeup-table -# -# Given a path to a patch makeup table, this script converts that table to -# machine-optimal format and deposits it in the file specified by the -o option -# or on stdout depending on whether or not -o is specified. -# -# The user-supplied patch makeup table is in the following format: -# -# # -# # comment -# # -# -# genunix_archive=/path/to/genunix/archive -# -# patch 100001-01 kureq 100002-01 -# usr/src/uts/sparc/sd/debug32/sd -# module2 -# -# patch 100003-08 -# module3 -# -# The machine-optimal format for the above looks like this: -# -# GENUNIX_ARCHIVE=/path/to/genunix/archive -# module1 100001-01 100002-01 -# module2 100001-01 100002-01 -# module3 100003-08 -# -# -# Macros and other time-savers: -# -# * $RELEASE and $MACH in the genunix archive path will be replaced by the -# values of the RELEASE and MACH environment variables, respectively, as -# set by the program calling this one. -# -# * BUILD, BUILD32, and BUILD64 will, when used in the path for the module, -# will be match as follows: -# -# BUILD debug32, debug64, obj32, obj64 -# BUILD32 debug32, obj32 -# BUILD64 debug64, obj64 -# -# * The presence of `usr/src' at the beginning of each module path will be -# assumed, and is not required to be specified. -# - -use strict; -use Getopt::Std; -use File::Basename; - -my $PROGNAME = basename($0); - -my $genunix_archive; -my %moddata; -my %typehash = ( - BUILD => [ "debug32", "debug64", "obj32", "obj64" ], - BUILD32 => [ "debug32", "obj32" ], - BUILD64 => [ "debug64", "obj64" ] -); - -my %opts; -my $err = 0; -$err = 1 unless getopts("ho:", \%opts); -if ($opts{"o"}) { - close(STDOUT); - open(STDOUT, ">" . $opts{"o"}) || do { - print STDERR "Couldn't open " . $opts{"o"} . ": $!\n"; - exit(1); - } -} -if ($opts{"h"}) { - &usage; - exit(2); -} - -if (@ARGV != 1) { - $err = 1; -} - -if ($err) { - &usage; - exit(2); -} - -$::table = $ARGV[0]; - -if (!open(TABLE, "<$::table")) { - print STDERR "Couldn't open $::table: $!\n"; - exit(1); -} - -if (!&read_table) { - exit(1); -} - -&sub_vars; - -&dump_table; - -exit(0); - -sub usage { - print STDERR "Usage: $PROGNAME [-o outfile] table\n"; -} - -sub read_table { - my $patchid = ""; - my $kureq = ""; - my $kuprev = ""; - - $genunix_archive = ""; - undef %moddata; - - while () { - chop; - s/\#.*$//; # Strip comments - s/^\s+//; - - if (!$patchid && /^genunix_archive=(\S+)\s*$/) { - $genunix_archive = $1; - next; - } - - while ($_) { - if (s/^patch\s+(\d{6}-\d{2}) - (\s+ku(req|prev)\s+(\d{6}-\d{2}|fcs))?//x && - (!$_ || /^\s/)) { - $patchid = $1; - $kureq = (defined $4 ? $4 : "fcs"); - $kuprev = (defined $3 && $3 eq "prev" ? 1 : 0); - } elsif ($patchid && s/^(\S+)//) { - my $module = $1; - - if (($module =~ m:/genunix/:) && !$kuprev) { - &parseerror("No kuprev supplied " . - "for entry including genunix"); - } - - if (($module !~ m:^usr/src/:)) { - $module = "usr/src/" . $module; - } - - if (($module =~ - m:^(.*)\$(BUILD|BUILD32|BUILD64)(/.*)$:)) { - foreach my $type (@{$typehash{$2}}) { - $moddata{$1 . $type . $3} = - [$patchid, $kureq]; - } - } else { - $moddata{$module} = [$patchid, $kureq]; - } - } else { - &parseerror("Cannot parse table"); - } - - s/^\s+//; - } - } - - if (!$genunix_archive) { - print STDERR "No genunix_archive line in table\n"; - return (0); - } - - if (!%moddata) { - print STDERR "No module information read\n"; - return (0); - } - - return (1); -} - -sub parseerror { - my $msg = $_[0]; - - print STDERR "$msg at line $.\n"; - exit(1); -} - -sub sub_vars { - my $release = $ENV{"RELEASE"}; - my $mach = $ENV{"MACH"}; - - $genunix_archive =~ s/\$RELEASE/$release/ if defined $release; - $genunix_archive =~ s/\$MACH/$mach/ if defined $mach; -} - -sub dump_table { - print "GENUNIX_ARCHIVE=" . $genunix_archive . "\n"; - - foreach my $mod (sort keys %moddata) { - print join(" ", ($mod, @{$moddata{$mod}})) . "\n"; - } -} diff --git a/usr/src/tools/ctf/scripts/ctffindmod.sh b/usr/src/tools/ctf/scripts/ctffindmod.sh deleted file mode 100644 index 8f583371d9..0000000000 --- a/usr/src/tools/ctf/scripts/ctffindmod.sh +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/ksh -p -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# ident "%Z%%M% %I% %E% SMI" -# -# Copyright 2006 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# Given a machine-optimal patch makeup table (see ctfcvtptbl), this program -# will allow the build process to determine the following: -# -# * The patch ID associated with a given module -# * The KU required by the patch associated with a given module -# * The patch ID and location of the genunix module preceding the genunix -# module currently being built. -# - -PROGNAME=$(basename "$0") - -usage() -{ - echo "Usage: $PROGNAME [-nr] [-o outfmt] [-b build_type] -t table" \ - "module_path" >&2 -} - -die() -{ - echo "$1" >&2 - exit 1 -} - -outfmt="patch,ku" -notfoundok=0 -relative=0 -build_type=debug32 -err=0 -while getopts b:lno:rt: c ; do - case $c in - b) - build_type="$OPTARG" - ;; - n) - notfoundok=1 - ;; - o) - outfmt="$OPTARG" - ;; - r) - relative=1 - ;; - t) - table="$OPTARG" - ;; - \?) - err=1 - ;; - esac -done -shift `expr $OPTIND - 1` - -if [[ $err -eq 1 || $# -ne 1 || -z "$table" ]] ; then - usage - exit 2 -fi - -print_garpath=0 -print_ku=0 -print_patch=0 -print_lastgu=0 -for word in $(echo "$outfmt" |tr ',' ' ') ; do - case $word in - garpath) - print_garpath=1 - ;; - ku) - print_ku=1 - ;; - lastgu) - print_lastgu=1 - ;; - patch) - print_patch=1 - ;; - \?) - usage - exit 2 - esac -done - -module="$1" -shift - -if [[ ! -f "$table" ]] ; then - die "$PROGNAME: Cannot open $table" -fi - -head -1 "$table" |sed -e 's/^\([^=]*\)=/\1 /' |read garkw garpath - -if [[ "$garkw" != "GENUNIX_ARCHIVE" || -z "$garpath" ]] ; then - die "$PROGNAME: $table is not a machine-optimal patch table" >&2 -fi - -if [[ $relative -eq 1 ]] ; then - crd=$(pwd |sed -e 's:^.*usr/src/uts::') - module=$(echo "$crd/$module" |sed -e 's://*:/:g') -fi - -fgrep "$module" "$table" |read junk patch ku - -if [[ -z "$patch" || - "$(expr "$patch" : '[0-9]\{6\}-[0-9][0-9]')" -ne 9 ]] ; then - if [[ "$notfoundok" -eq 1 ]] ; then - patch="-" - else - die "$PROGNAME: Cannot find patch for $module" >&2 - fi -fi - -if [[ -z "$ku" ]] ; then - ku="-" -fi - -# Output - -space="" -if [[ $print_patch -eq 1 ]] ; then - echo "$space$patch\c" - space=" " -fi -if [[ $print_ku -eq 1 ]] ; then - echo "$space$ku\c" - space=" " -fi -if [[ $print_garpath -eq 1 ]] ; then - echo "$space$garpath\c" - space=" " -fi -if [[ $print_lastgu -eq 1 ]] ; then - suffix= - if expr $build_type : '.*64' >/dev/null ; then - if [ `uname -p` = "sparc" ] ; then - suffix=/sparcv9 - else - suffix=/amd64 - fi - fi - echo "$space$garpath/$ku$suffix/genunix\c" - space=" " -fi -[[ -n "$space" ]] && echo - -return 0 diff --git a/usr/src/tools/scripts/bldenv.sh b/usr/src/tools/scripts/bldenv.sh index 3722594e70..f841a3cfc5 100644 --- a/usr/src/tools/scripts/bldenv.sh +++ b/usr/src/tools/scripts/bldenv.sh @@ -294,9 +294,6 @@ if "${flags.t}" ; then export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert" export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge" - export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl" - export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod" - PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}" PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}" export PATH diff --git a/usr/src/tools/scripts/nightly.sh b/usr/src/tools/scripts/nightly.sh index 610cfc34b6..353c24d3fe 100644 --- a/usr/src/tools/scripts/nightly.sh +++ b/usr/src/tools/scripts/nightly.sh @@ -522,11 +522,6 @@ function use_tools { CTFMERGE=${TOOLSROOT}/opt/onbld/bin/${MACH}/ctfmerge export CTFMERGE - CTFCVTPTBL=${TOOLSROOT}/opt/onbld/bin/ctfcvtptbl - export CTFCVTPTBL - CTFFINDMOD=${TOOLSROOT}/opt/onbld/bin/ctffindmod - export CTFFINDMOD - if [ "$VERIFY_ELFSIGN" = "y" ]; then ELFSIGN=${TOOLSROOT}/opt/onbld/bin/elfsigncmp else @@ -548,8 +543,6 @@ function use_tools { echo "CTFSTABS=${CTFSTABS}" >> $LOGFILE echo "CTFCONVERT=${CTFCONVERT}" >> $LOGFILE echo "CTFMERGE=${CTFMERGE}" >> $LOGFILE - echo "CTFCVTPTBL=${CTFCVTPTBL}" >> $LOGFILE - echo "CTFFINDMOD=${CTFFINDMOD}" >> $LOGFILE echo "ELFSIGN=${ELFSIGN}" >> $LOGFILE echo "PATH=${PATH}" >> $LOGFILE echo "ONBLD_TOOLS=${ONBLD_TOOLS}" >> $LOGFILE diff --git a/usr/src/uts/Makefile.uts b/usr/src/uts/Makefile.uts index ae53983d07..6a418b34e7 100644 --- a/usr/src/uts/Makefile.uts +++ b/usr/src/uts/Makefile.uts @@ -327,71 +327,27 @@ CTFMERGE_GENUNIX = \ $(UTSBASE)/$(CTFMERGE_GUDIR)/genunix/$(OBJS_DIR)/genunix # -# Used to uniquify a non-genunix module against genunix. If used in patch -# mode (PATCH_BUILD != "#"), the patch ID corresponding to the module being -# built will be used as the label. If no ID is available, or if patch mode -# is not being used, the value of $VERSION will be used. +# Used to uniquify a non-genunix module against genunix. $VERSION is used +# for the label. # # For the ease of developers dropping modules onto possibly unrelated systems, # you can set NO_GENUNIX_UNIQUIFY= in the environment to skip uniquifying # against genunix. # NO_GENUNIX_UNIQUIFY=$(POUND_SIGN) -SKIP_GENUNIX_UNIQUIFY=no -$(NO_GENUNIX_UNIQUIFY)SKIP_GENUNIX_UNIQUIFY=yes +CTFMERGE_GENUNIX_DFLAG=-d $(CTFMERGE_GENUNIX) +$(NO_GENUNIX_UNIQUIFY)CTF_GENUNIX_DFLAG= CTFMERGE_UNIQUIFY_AGAINST_GENUNIX = \ - @label="-L VERSION" ; \ - uniq= ; \ - if [ -z "$(PATCH_BUILD)" ] ; then \ - uniq="-D BASE" ; \ - set -- `$(CTFFINDMOD) -n -r -t $(PMTMO_FILE) $@` ; \ - if [ "X$$1" != "X-" ] ; then \ - label="-l $$1" ; \ - if [ "$$2" != "fcs" ] ; then \ - uniq="-D $$2" ; \ - fi ; \ - fi ; \ - fi ; \ - if [ "$(SKIP_GENUNIX_UNIQUIFY)" = "yes" ]; then \ - uniq= ; \ - else \ - uniq="-d $(CTFMERGE_GENUNIX) $$uniq" ; \ - fi ; \ - cmd="$(CTFMERGE) $(CTFMRGFLAGS) $$label $$uniq" ; \ - cmd="$$cmd -o $@ $(OBJECTS) $(CTFEXTRAOBJS)" ; \ - echo $$cmd ; \ - $$cmd - -# -# Used to merge the genunix module. genunix has special requirements in -# patch mode. In particular, it needs to be able to find the genunix used -# in the previous version of the KU patch (or the FCS version of genunix in -# the case of KU 1). + $(CTFMERGE) $(CTFMRGFLAGS) -L VERSION \ + $(CTFMERGE_GENUNIX_DFLAG) -o $@ $(OBJECTS) $(CTFEXTRAOBJS) + +# +# Used to merge the genunix module. # CTFMERGE_GENUNIX_MERGE = \ - @if [ -z "$(PATCH_BUILD)" ] ; then \ - set -- `$(CTFFINDMOD) -b $(OBJS_DIR) -o patch,lastgu -n -r \ - -t $(PMTMO_FILE) $(GENUNIX) || true` '' ; \ - msg= ; \ - if [ $$$(POUND_SIGN) -eq 1 ] ; \ - then msg="Error in $(CTFFINDMOD)" ; \ - elif [ "X$$1" = "X-" ] ; then msg="Did not get label" ; \ - elif [ "X$$2" = "X-" ] ; then msg="Did not get withfile" ; \ - fi ; \ - if [ -n "$$msg" ] ; then \ - echo "make ctf: $$msg - removing $(GENUNIX)" ; \ - $(RM) $(GENUNIX) ; \ - exit 1 ; \ - fi ; \ - label="-l $$1" ; \ - with="-w $$2" ; \ - else \ - label="-L VERSION" ; \ - fi ; \ - cmd="$(CTFMERGE) $(CTFMRGFLAGS) $$label $$with -o $@" ; \ - echo $$cmd "$(OBJECTS) $(CTFEXTRAOBJS) $(IPCTF_TARGET)"; \ - $$cmd $(OBJECTS) $(CTFEXTRAOBJS) $(IPCTF_TARGET) + $(CTFMERGE) $(CTFMRGFLAGS) -L VERSION -o $@ \ + $(OBJECTS) $(CTFEXTRAOBJS) $(IPCTF_TARGET) # # We ctfmerge the ip objects into genunix to maximize the number of common types @@ -633,10 +589,6 @@ LINT_KMODS = $(DRV_KMODS) $(EXEC_KMODS) $(FS_KMODS) $(SCHED_KMODS) \ $(DRV_KMODS_$(CLASS)) $(MISC_KMODS_$(CLASS)) $(MAC_KMODS) \ $(BRAND_KMODS) $(KICONV_KMODS) $(SOCKET_KMODS) -THIS_YEAR:sh= /bin/date +%Y -$(OBJS_DIR)/logsubr.o := CPPFLAGS += -DTHIS_YEAR=$(THIS_YEAR) -$(OBJS_DIR)/logsubr.ln := CPPFLAGS += -DTHIS_YEAR=$(THIS_YEAR) - # # Files to be compiled with -xa, to generate basic block execution # count data. -- 2.11.4.GIT