URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-src/binutils-2.18.50/ld/testsuite/ld-gc
- from Rev 38 to Rev 156
- ↔ Reverse comparison
Rev 38 → Rev 156
/gc.exp
0,0 → 1,78
# Expect script for ld-gc tests |
# Copyright 2008 |
# Free Software Foundation, Inc. |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
|
# These tests require --gc-sections |
if ![check_gc_sections_available] { |
return |
} |
|
set cflags "-ffunction-sections -fdata-sections" |
set objfile "tmpdir/gc.o" |
|
if { [is_remote host] || [which $CC] != 0 } { |
ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/gc.c $objfile |
} |
|
proc test_gc { testname filename linker ldflags} { |
global nm |
global srcdir |
global subdir |
global nm_output |
global objfile |
|
if ![file readable $objfile ] { |
untested $testname |
return |
} |
|
set outfile "tmpdir/$filename" |
|
if ![ld_simple_link $linker $outfile "-L$srcdir/$subdir $ldflags $objfile"] { |
fail $testname |
return |
} |
if ![ld_nm $nm "" $outfile] { |
unresolved $testname |
return |
} |
if {![info exists nm_output(used_func)] \ |
|| ![info exists nm_output(used_var)]} { |
send_log "used sections do not exist\n" |
verbose "used sections do not exist" |
fail $testname |
return |
} |
if {[info exists nm_output(unused_func)] \ |
|| [info exists nm_output(unused_var)]} { |
send_log "unused section still here\n" |
verbose "unused section still here" |
fail $testname |
return |
} |
pass $testname |
} |
|
test_gc "Check --gc-section" "gcexe" $ld "--gc-sections -e main" |
test_gc "Check --gc-section/-q" "gcrexe" $ld "--gc-sections -q -e main" |
test_gc "Check --gc-section/-r/-e" "gcrel" $ld "-r --gc-sections -e main" |
test_gc "Check --gc-section/-r/-u" "gcrel" $ld "-r --gc-sections -u used_func" |
|
run_dump_test "noent" |
/noent.s
0,0 → 1,4
.text |
.globl entry |
entry: |
.long 0 |
/noent.d
0,0 → 1,3
# name: --gc-sections -r without -e |
# ld: --gc-sections -r |
# error: gc-sections requires either an entry or an undefined symbol |
/gc.c
0,0 → 1,21
int unused_var = 7; |
int used_var = 7; |
|
int |
unused_func (int v) |
{ |
return 3 * unused_var; |
} |
|
int |
__attribute__((noinline)) |
used_func (int v) |
{ |
return 2 * used_var; |
} |
|
int |
main (void) |
{ |
return used_func (5); |
} |