Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  objdiff   Sprache: PVS

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-only

# objdiff - a small script for validating that a commit or series of commits
# didn't change object code.
#
# Copyright 2014, Jason Cooper <jason@lakedaemon.net>
#

# usage example:
#
# $ git checkout COMMIT_A
# $ <your fancy build command here>
# $ ./scripts/objdiff record path/to/*.o
#
# $ git checkout COMMIT_B
# $ <your fancy build command here>
# $ ./scripts/objdiff record path/to/*.o
#
# $ ./scripts/objdiff diff COMMIT_A COMMIT_B
# $

# And to clean up (everything is in .objdiff/*)
# $ ./scripts/objdiff clean all
#
# Note: 'make mrproper' will also remove .objdiff

SRCTREE=$(cd $(git rev-parse --show-toplevel 2>/dev/null); pwd)

if [ -z "$SRCTREE" ]; then
 echo >&2 "ERROR: Not a git repository."
 exit 1
fi

TMPD=$SRCTREE/.objdiff

usage() {
 echo >&2 "Usage: $0 <command> <args>"
 echo >&2 "  record    <list of object files or directories>"
 echo >&2 "  diff      <commitA> <commitB>"
 echo >&2 "  clean     all | <commit>"
 exit 1
}

get_output_dir() {
 dir=${1%/*}

 if [ "$dir" = "$1" ]; then
  dir=.
 fi

 dir=$(cd $dir; pwd)

 echo $TMPD/$CMT${dir#$SRCTREE}
}

do_objdump() {
 dir=$(get_output_dir $1)
 base=${1##*/}
 stripped=$dir/${base%.o}.stripped
 dis=$dir/${base%.o}.dis

 [ ! -d "$dir" ] && mkdir -p $dir

 # remove addresses for a cleaner diff
 # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
 $STRIP -g $1 -R __bug_table -R .note -R .comment -o $stripped
 $OBJDUMP -D $stripped | sed -e "s/^[[:space:]]\+[0-9a-f]\+//" -e "s:^$stripped:$1:" > $dis
}

dorecord() {
 [ $# -eq 0 ] && usage

 FILES="$*"

 CMT="`git rev-parse --short HEAD`"

 STRIP="${CROSS_COMPILE}strip"
 OBJDUMP="${CROSS_COMPILE}objdump"

 for d in $FILES; do
  if [ -d "$d" ]; then
   for f in $(find $d -name '*.o')
   do
    do_objdump $f
   done
  else
   do_objdump $d
  fi
 done
}

dodiff() {
 [ $# -ne 2 ] && [ $# -ne 0 ] && usage

 if [ $# -eq 0 ]; then
  SRC="`git rev-parse --short HEAD^`"
  DST="`git rev-parse --short HEAD`"
 else
  SRC="`git rev-parse --short $1`"
  DST="`git rev-parse --short $2`"
 fi

 DIFF="`which colordiff`"

 if [ ${#DIFF} -eq 0 ] || [ ! -x "$DIFF" ]; then
  DIFF="`which diff`"
 fi

 SRCD="$TMPD/$SRC"
 DSTD="$TMPD/$DST"

 if [ ! -d "$SRCD" ]; then
  echo >&2 "ERROR: $SRCD doesn't exist"
  exit 1
 fi

 if [ ! -d "$DSTD" ]; then
  echo >&2 "ERROR: $DSTD doesn't exist"
  exit 1
 fi

 $DIFF -Nurd $SRCD $DSTD
}

doclean() {
 [ $# -eq 0 ] && usage
 [ $# -gt 1 ] && usage

 if [ "x$1" = "xall" ]; then
  rm -rf $TMPD/*
 else
  CMT="`git rev-parse --short $1`"

  if [ -d "$TMPD/$CMT" ]; then
   rm -rf $TMPD/$CMT
  else
   echo >&2 "$CMT not found"
  fi
 fi
}

[ $# -eq 0 ] && usage

case "$1" in
 record)
  shift
  dorecord $*
  ;;
 diff)
  shift
  dodiff $*
  ;;
 clean)
  shift
  doclean $*
  ;;
 *)
  echo >&2 "Unrecognized command '$1'"
  exit 1
  ;;
esac

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge