Use _CALL_DL_FCT to call function from dynamically loaded object.
[kopensolaris-gnu/glibc.git] / glibcbug.in
index c23f32a..0f392e7 100644 (file)
@@ -6,34 +6,60 @@
 #       these variables are filled in by configure
 #
 VERSION="@VERSION@"
-BUGGLIBC="bugs@gnu.ai.mit.edu"
+RELEASE="@RELEASE@"
 ADDONS="@subdirs@"
+HOST="@host@"
+CC='@CC@'
+CFLAGS="@CFLAGS@"
+SYSINCLUDES="@SYSINCLUDES@"
+VERSIONING="@VERSIONING@"
+BUILD_STATIC="@static@"
+BUILD_SHARED="@shared@"
+BUILD_PIC_DEFAULT="@pic_default@"
+BUILD_PROFILE="@profile@"
+BUILD_OMITFP="@omitfp@"
+BUILD_BOUNDED="@bounded@"
+BUILD_STATIC_NSS="@static_nss@"
+STDIO="@stdio@"
 
-PATH=/bin:/usr/bin:/usr/local/bin:$PATH
-export PATH
+TEMP=`mktemp -q /tmp/glibcbugXXXXXX 2>/dev/null`
+if test $? -ne 0; then
+  TEMP=/tmp/glibcbug.$$
+  echo > $TEMP
+  chmod 600 $TEMP
+fi
+TEMPx=`mktemp -q /tmp/glibcbugXXXXXX 2>/dev/null`
+if test $? -ne 0; then
+  TEMPx=/tmp/glibcbug.$$.x
+  echo > $TEMPx
+  chmod 600 $TEMPx
+fi
 
-TEMP=/tmp/glibcbug.$$
+if test "$RELEASE" = "stable"; then
+  BUGGLIBC="bugs@gnu.org"
+else
+  BUGGLIBC="libc-alpha@cygnus.com"
+fi
 
 BUGADDR=${1-$BUGGLIBC}
-ENVIRONMENT=`uname -a`
 
 : ${EDITOR=emacs}
 
 : ${USER=${LOGNAME-`whoami`}}
 
-trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15
-trap 'rm -f $TEMP $TEMP.x' 0
+trap 'rm -f $TEMP $TEMPx; exit 1' 1 2 3 13 15
+trap 'rm -f $TEMP $TEMPx' 0
 
 
 # How to read the passwd database.
 PASSWD="cat /etc/passwd"
 
 if [ -f /usr/lib/sendmail ] ; then
-        RMAIL="/usr/lib/sendmail -oi -t"
+        MAIL_AGENT="/usr/lib/sendmail -oi -t"
 elif [ -f /usr/sbin/sendmail ] ; then
-        RMAIL="/usr/sbin/sendmail -oi -t"
+        MAIL_AGENT="/usr/sbin/sendmail -oi -t"
 else
-        RMAIL=rmail
+        MAIL_AGENT=rmail
 fi
 
 # Figure out how to echo a string without a trailing newline
@@ -53,7 +79,6 @@ else
   # and to protect shell metacharacters in the expansion of $LOGNAME
   $PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP
   ORIGINATOR="`cat $TEMP`"
-  rm -f $TEMP
 fi
 
 if [ -n "$ORGANIZATION" ]; then
@@ -84,9 +109,15 @@ SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
         ( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
 ARCH=`[ -f /bin/arch ] && /bin/arch`
 MACHINE=`[ -f /bin/machine ] && /bin/machine`
+CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
+
+case $HOST in *linux*)
+  KHDRS=`(echo '#include <linux/version.h>'
+         echo '! UTS_RELEASE' ) |
+        $CC $SYSINCLUDES -E - | sed -n '/!/s/[! "]//gp'`;;
+esac
 
 ORGANIZATION_C='<organization of PR author (multiple lines)>'
-CONFIDENTIAL_C='<[ yes | no ] (one line)>'
 SYNOPSIS_C='<synopsis of the problem (one line)>'
 SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
 PRIORITY_C='<[ low | medium | high ] (one line)>'
@@ -107,11 +138,11 @@ From: ${USER}
 To: ${BUGADDR}
 Subject: [50 character or so descriptive subject here (for reference)]
 
->Submitter-Id: <submitter ID>
+>Submitter-Id: net
 >Originator:   ${ORIGINATOR}
 >Organization:
 ${ORGANIZATION- $ORGANIZATION_C}
->Confidential: $CONFIDENTIAL_C
+>Confidential: no
 >Synopsis:     $SYNOPSIS_C
 >Severity:     $SEVERITY_C
 >Priority:     $PRIORITY_C
@@ -119,11 +150,25 @@ ${ORGANIZATION- $ORGANIZATION_C}
 >Class:                $CLASS_C
 >Release:      libc-${VERSION}
 >Environment:
-       <machine, os, target, libraries (multiple lines)>
+       $ENVIRONMENT_C
+`[ -n "$HOST" ] && echo Host type: $HOST`
 `[ -n "$SYSTEM" ] && echo System: $SYSTEM`
 `[ -n "$ARCH" ] && echo Architecture: $ARCH`
 `[ -n "$MACHINE" ] && echo Machine: $MACHINE`
 `[ -n "$ADDONS" ] && echo Addons: $ADDONS`
+`[ -n "$CFLAGS" ] && echo Build CFLAGS: $CFLAGS`
+`[ -n "$CC" ] && echo Build CC: $CC`
+`[ -n "$CCVERSION" ] && echo Compiler version: $CCVERSION`
+`[ -n "$KHDRS" ] && echo Kernel headers: $KHDRS`
+`[ -n "$VERSIONING" ] && echo Symbol versioning: $VERSIONING`
+`[ -n "$BUILD_STATIC" ] && echo Build static: $BUILD_STATIC`
+`[ -n "$BUILD_SHARED" ] && echo Build shared: $BUILD_SHARED`
+`[ -n "$BUILD_PIC_DEFAULT" ] && echo Build pic-default: $BUILD_PIC_DEFAULT`
+`[ -n "$BUILD_PROFILE" ] && echo Build profile: $BUILD_PROFILE`
+`[ -n "$BUILD_OMITFP" ] && echo Build omitfp: $BUILD_OMITFP`
+`[ -n "$BUILD_BOUNDED" ] && echo Build bounded: $BUILD_BOUNDED`
+`[ -n "$BUILD_STATIC_NSS" ] && echo Build static-nss: $BUILD_STATIC_NSS`
+`[ -n "$STDIO" ] && echo Stdio: $STDIO`
 
 >Description:
        $DESCRIPTION_C
@@ -134,11 +179,11 @@ ${ORGANIZATION- $ORGANIZATION_C}
 EOF
 
 chmod u+w $TEMP
-cp $TEMP $TEMP.x
+cp $TEMP $TEMPx
 
 eval $EDIT $TEMP
 
-if cmp -s $TEMP $TEMP.x; then
+if cmp -s $TEMP $TEMPx; then
        echo "File not changed, no bug report submitted."
        exit 1
 fi
@@ -153,8 +198,8 @@ SED_CMD='
 /$PATTERN/{
 s|||
 s|<.*>||
-s|^[    ]*||
-s|[     ]*$||
+s|^[   ]*||
+s|[    ]*$||
 p
 q
 }'
@@ -163,16 +208,8 @@ q
 while :; do
   CNT=0
 
-  # 1) Confidential
-  #
-  PATTERN=">Confidential:"
-  CONFIDENTIAL=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
-  case "$CONFIDENTIAL" in
-    ""|yes|no) CNT=`expr $CNT + 1` ;;
-    *) echo "$COMMAND: \`$CONFIDENTIAL' is not a valid value for \`Confidential'." ;;
-  esac
   #
-  # 2) Severity
+  # 1) Severity
   #
   PATTERN=">Severity:"
   SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
@@ -181,7 +218,7 @@ while :; do
     *)  echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
   esac
   #
-  # 3) Priority
+  # 2) Priority
   #
   PATTERN=">Priority:"
   PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
@@ -190,7 +227,7 @@ while :; do
     *)  echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
   esac
   #
-  # 4) Class
+  # 3) Class
   #
   PATTERN=">Class:"
   CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
@@ -199,7 +236,7 @@ while :; do
     *)  echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
   esac
 
-  [ $CNT -lt 5 ] &&
+  [ $CNT -lt 3 ] &&
     echo "Errors were found with the problem report."
 
   while :; do
@@ -239,9 +276,9 @@ sed  -e "
 /^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
 /^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
 /^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
-" $TEMP > $REF
+" $TEMP > $TEMPx
 
-if $MAIL_AGENT < $REF; then
+if $MAIL_AGENT < $TEMPx; then
   echo "$COMMAND: problem report sent"
   xs=0; exit
 else