From 9e7ed8b080afa19fff25244913594f95af282657 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Thu, 27 Aug 2020 15:25:03 +0000 Subject: Fix PR binutils/26356 on hppa*-*-hpux*. PR 26356 * som.c (som_bfd_copy_private_section_data): Issue error when a subspace is specified without its containing space. * testsuite/binutils-all/objcopy.exp (objcopy --reverse-bytes): Add "-j $PRIVATE$" to command on hppa*-*-hpux*. * testsuite/lib/utils-lib.exp (default_binutils_run): Remove existing dollar-sign quotes before quoting. Do this prior to generating log output. --- bfd/ChangeLog | 6 ++++++ bfd/som.c | 14 ++++++++++++-- binutils/ChangeLog | 9 +++++++++ binutils/testsuite/binutils-all/objcopy.exp | 10 +++++----- binutils/testsuite/lib/utils-lib.exp | 11 +++++++---- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1d783f7..7700973 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-08-27 John David Anglin + + PR 26356 + * som.c (som_bfd_copy_private_section_data): Issue error when a + subspace is specified without its containing space. + 2020-08-27 Alan Modra PR 26469 diff --git a/bfd/som.c b/bfd/som.c index 93a0ad8..d3865f0 100644 --- a/bfd/som.c +++ b/bfd/som.c @@ -5455,8 +5455,18 @@ som_bfd_copy_private_section_data (bfd *ibfd, /* Reparent if necessary. */ if (som_section_data (osection)->copy_data->container) - som_section_data (osection)->copy_data->container = - som_section_data (osection)->copy_data->container->output_section; + { + if (som_section_data (osection)->copy_data->container->output_section) + som_section_data (osection)->copy_data->container = + som_section_data (osection)->copy_data->container->output_section; + else + { + /* User has specified a subspace without its containing space. */ + _bfd_error_handler (_("%pB[%pA]: no output section for space %pA"), + obfd, osection, som_section_data (osection)->copy_data->container); + return FALSE; + } + } return TRUE; } diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 6ad05ad..e5e3386 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,12 @@ +2020-08-27 John David Anglin + + PR 26356 + * testsuite/binutils-all/objcopy.exp (objcopy --reverse-bytes): Add + "-j $PRIVATE$" to command on hppa*-*-hpux*. + * testsuite/lib/utils-lib.exp (default_binutils_run): Remove existing + dollar-sign quotes before quoting. Do this prior to generating log + output. + 2020-08-27 Ralf Habacker PR 26088 diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp index f857003..9877f3d 100644 --- a/binutils/testsuite/binutils-all/objcopy.exp +++ b/binutils/testsuite/binutils-all/objcopy.exp @@ -170,7 +170,11 @@ if { [file exists $tempfile] } { set reversed ${tempfile}-reversed set sect_names [get_standard_section_names] if { $sect_names != "" } { - set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -j [lindex $sect_names 1] --reverse-bytes=4 $tempfile $reversed"] + if { [istarget hppa*-*-hpux*] } { + set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -j \$PRIVATE\$ -j [lindex $sect_names 1] --reverse-bytes=4 $tempfile $reversed"] + } else { + set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -j [lindex $sect_names 1] --reverse-bytes=4 $tempfile $reversed"] + } } else { set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -j .data --reverse-bytes=4 $tempfile $reversed"] } @@ -191,10 +195,6 @@ if { [file exists $tempfile] } { set found_rev [regexp -lineanchor $want $revdata -> revdata] if {$found_orig == 0 || $found_rev == 0} then { - # som doesn't have a .data section - setup_xfail "hppa*-*-hpux*" - clear_xfail "hppa*64*-*-hpux*" - fail "objcopy --reverse-bytes" } else { scan $origdata "%2x%2x%2x%2x" b1 b2 b3 b4 diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp index 1bb5e61..56ac0cd 100644 --- a/binutils/testsuite/lib/utils-lib.exp +++ b/binutils/testsuite/lib/utils-lib.exp @@ -80,13 +80,16 @@ proc default_binutils_run { prog progargs } { regsub -- "-j \\.bss" $progargs "-j [lindex $sect_names 2]" progargs } + # Gotta quote dollar-signs because they get mangled by the + # shell otherwise. Since get_standard_section_names returns + # quoted section names, we first remove the original quote + # and then requote. + regsub -all {\\\$} "$progargs" {$} progargs + regsub -all {\$} "$progargs" {\$} progargs + send_log "$prog $progargs\n" verbose "$prog $progargs" - # Gotta quote dollar-signs because they get mangled by the - # shell otherwise. - regsub -all "\\$" "$progargs" "\\$" progargs - set state [remote_exec host $prog $progargs] set binutils_run_status [lindex $state 0] set exec_output [prune_warnings [lindex $state 1]] -- cgit v1.1