diff options
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/objcopy.c | 2 | ||||
-rw-r--r-- | binutils/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/objcopy.exp | 2 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/strip-1.d | 11 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/strip-2.d | 18 | ||||
-rw-r--r-- | binutils/testsuite/lib/utils-lib.exp | 12 |
7 files changed, 56 insertions, 5 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index e1636e1..48f6a39 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2006-09-14 H.J. Lu <hongjiu.lu@intel.com> + + PR binutils/3182 + * objcopy.c (group_signature): Return proper group signature. + 2006-09-14 Alan Modra <amodra@bigpond.net.au> PR 3182 diff --git a/binutils/objcopy.c b/binutils/objcopy.c index e916fce..9bfb68d 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -804,7 +804,7 @@ group_signature (asection *group) if (symhdr->sh_type == SHT_SYMTAB && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym) - return isympp[ghdr->sh_info]; + return isympp[ghdr->sh_info - 1]; } return NULL; } diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog index b3347b7..47befb9 100644 --- a/binutils/testsuite/ChangeLog +++ b/binutils/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2006-09-14 H.J. Lu <hongjiu.lu@intel.com> + + PR binutils/3182 + * binutils-all/objcopy.exp: Run strip-1 and strip-2 for ELF + targets. + + * binutils-all/strip-1.d: New file. + * binutils-all/strip-2.d: Likewise. + + * lib/utils-lib.exp (run_dump_test): Support strip. + 2006-08-15 Thiemo Seufer <ths@mips.com> Nigel Stephens <nigel@mips.com> David Ung <davidu@mips.com> diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp index 679eea5..96ae518 100644 --- a/binutils/testsuite/binutils-all/objcopy.exp +++ b/binutils/testsuite/binutils-all/objcopy.exp @@ -731,5 +731,7 @@ run_dump_test "copy-3" if [is_elf_format] { run_dump_test "localize-hidden-1" + run_dump_test "strip-1" + run_dump_test "strip-2" } run_dump_test "localize-hidden-2" diff --git a/binutils/testsuite/binutils-all/strip-1.d b/binutils/testsuite/binutils-all/strip-1.d new file mode 100644 index 0000000..2009832 --- /dev/null +++ b/binutils/testsuite/binutils-all/strip-1.d @@ -0,0 +1,11 @@ +#PROG: strip +#source: group.s +#readelf: -Sg --wide +#name: strip with section group 1 + +#... + \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AX[ \t]+.* +#... + \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WA[ \t]+.* +#... +There are no section groups in this file. diff --git a/binutils/testsuite/binutils-all/strip-2.d b/binutils/testsuite/binutils-all/strip-2.d new file mode 100644 index 0000000..5c54b7e --- /dev/null +++ b/binutils/testsuite/binutils-all/strip-2.d @@ -0,0 +1,18 @@ +#PROG: strip +#source: group.s +#strip: --strip-unneeded +#readelf: -Sg --wide +#name: strip with section group 2 + +#... + \[[ 0-9]+\] foo_group[ \t]+GROUP[ \t]+.* +#... + \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.* +#... + \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.* +#... +COMDAT group section \[[ 0-9]+\] `foo_group' \[foo_group\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.* + \[[ 0-9]+\] .data.* +#pass diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp index 3ee7675..b914500 100644 --- a/binutils/testsuite/lib/utils-lib.exp +++ b/binutils/testsuite/lib/utils-lib.exp @@ -279,8 +279,8 @@ proc exe_ext {} { proc run_dump_test { name {extra_options {}} } { global subdir srcdir - global OBJDUMP NM OBJCOPY READELF - global OBJDUMPFLAGS NMFLAGS OBJCOPYFLAGS READELFFLAGS + global OBJDUMP NM OBJCOPY READELF STRIP + global OBJDUMPFLAGS NMFLAGS OBJCOPYFLAGS READELFFLAGS STRIPFLAGS global host_triplet global env global copyfile @@ -362,11 +362,15 @@ proc run_dump_test { name {extra_options {}} } { return } + set destopt "" switch -- $opts(PROG) { ar { set program ar } objcopy { set program objcopy } ranlib { set program ranlib } - strip { set program strip } + strip { + set program strip + set destopt "-o" + } strings { set program strings } default { perror "unrecognized program option $opts(PROG) in $file.d" @@ -470,7 +474,7 @@ proc run_dump_test { name {extra_options {}} } { eval set progopts \$[string toupper $program]FLAGS eval set binary \$[string toupper $program] - set exec_output [binutils_run $binary "$progopts $progopts1 $tempfile ${copyfile}.o"] + set exec_output [binutils_run $binary "$progopts $progopts1 $tempfile $destopt ${copyfile}.o"] if ![string match "" $exec_output] { send_log "$exec_output\n" verbose "$exec_output" |