aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsj? <martin@martin.st>2022-01-22 14:32:35 +0000
committerNick Clifton <nickc@redhat.com>2022-01-22 14:32:35 +0000
commitfdeee5d59dca41e3c70c399a939105e39a4b4282 (patch)
tree15a611f05fa035156655b769678727aa9894360a
parentAdjust default page sizes for haiku arm. (diff)
downloadbinutils-gdb-fdeee5d59dca41e3c70c399a939105e39a4b4282.tar.gz
binutils-gdb-fdeee5d59dca41e3c70c399a939105e39a4b4282.tar.bz2
binutils-gdb-fdeee5d59dca41e3c70c399a939105e39a4b4282.zip
Allow inferring tmp_prefix from the dll name from a def file
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/dlltool.c34
-rwxr-xr-xlibbacktrace/allocfail.sh104
3 files changed, 22 insertions, 121 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index d8f370dfd65..09f392091e8 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2022-01-22 Martin Storsjö <martin@martin.st>
+
+ * dlltool.c (main): Allow inferring tmp_prefix from the dll name
+ from a def file.
+
2022-01-22 Nick Clifton <nickc@redhat.com>
* configure: Regenerate.
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index a1e2b484328..d95bf3f5470 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -3930,23 +3930,6 @@ main (int ac, char **av)
}
}
- if (tmp_prefix == NULL)
- {
- /* If possible use a deterministic prefix. */
- if (dll_name)
- {
- tmp_prefix = xmalloc (strlen (dll_name) + 2);
- sprintf (tmp_prefix, "%s_", dll_name);
- for (i = 0; tmp_prefix[i]; i++)
- if (!ISALNUM (tmp_prefix[i]))
- tmp_prefix[i] = '_';
- }
- else
- {
- tmp_prefix = prefix_encode ("d", getpid ());
- }
- }
-
for (i = 0; mtable[i].type; i++)
if (strcmp (mtable[i].type, mname) == 0)
break;
@@ -4006,6 +3989,23 @@ main (int ac, char **av)
optind++;
}
+ if (tmp_prefix == NULL)
+ {
+ /* If possible use a deterministic prefix. */
+ if (dll_name)
+ {
+ tmp_prefix = xmalloc (strlen (dll_name) + 2);
+ sprintf (tmp_prefix, "%s_", dll_name);
+ for (i = 0; tmp_prefix[i]; i++)
+ if (!ISALNUM (tmp_prefix[i]))
+ tmp_prefix[i] = '_';
+ }
+ else
+ {
+ tmp_prefix = prefix_encode ("d", getpid ());
+ }
+ }
+
mangle_defs ();
if (exp_name)
diff --git a/libbacktrace/allocfail.sh b/libbacktrace/allocfail.sh
deleted file mode 100755
index 1f9894fd2e8..00000000000
--- a/libbacktrace/allocfail.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/bin/sh
-
-# allocfail.sh -- Test for libbacktrace library.
-# Copyright (C) 2018-2021 Free Software Foundation, Inc.
-
-# 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.
-
-# (3) The name of the author may not be used to
-# endorse or promote products derived from this software without
-# specific prior written permission.
-
-# 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.
-
-set -e
-
-if [ ! -f ./allocfail ]; then
- # Hard failure.
- exit 99
-fi
-
-allocs=$(./allocfail 2>&1)
-if [ "$allocs" = "" ]; then
- # Hard failure.
- exit 99
-fi
-
-# This generates the following output:
-# ...
-# $ allocfail.sh
-# allocs: 80495
-# Status changed to 0 at 1
-# Status changed to 1 at 3
-# Status changed to 0 at 11
-# Status changed to 1 at 12
-# Status changed to 0 at 845
-# ...
-#
-# We have status 0 for an allocation failure at:
-# - 1 because backtrace_create_state handles failure robustly
-# - 2 because the fail switches backtrace_full to !can_alloc mode.
-# - 11 because failure of elf_open_debugfile_by_buildid does not generate an
-# error callback beyond the one for the allocation failure itself.
-
-echo "allocs: $allocs"
-
-step=1
-i=1
-passes=0
-prev_status=-1
-while [ $i -le $allocs ]; do
- if ./allocfail $i >/dev/null 2>&1; status=$?; then
- true
- fi
- if [ $status -gt 1 ]; then
- echo "Unallowed fail found: $i"
- # Failure.
- exit 1
- fi
-
- # The test-case would run too long if we would excercise all allocs.
- # So, run with step 1 initially, and increase the step once we have 10
- # subsequent passes, and drop back to step 1 once we encounter another
- # failure. This takes ~2.6 seconds on an i7-6600U CPU @ 2.60GHz.
- if [ $status -eq 0 ]; then
- passes=$(($passes + 1))
- if [ $passes -ge 10 ]; then
- step=$((step * 10))
- passes=0
- fi
- elif [ $status -eq 1 ]; then
- passes=0
- step=1
- fi
-
- if [ $status -ne $prev_status ]; then
- echo "Status changed to $status at $i"
- fi
- prev_status=$status
-
- i=$(($i + $step))
-done
-
-# Success.
-exit 0