OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /open8_urisc
    from Rev 52 to Rev 53
    Reverse comparison

Rev 52 → Rev 53

/trunk/gnu/binutils/ld/testsuite/ld-elf/expr1.d
0,0 → 1,2
# ld: -T expr1.t
# error: expr1.t:3: nonconstant expression for load base
/trunk/gnu/binutils/ld/testsuite/ld-elf/unknown2.s
0,0 → 1,6
.section .note.foo,"a","note"
.space 16
.section .data,"aw"
.space 3800
.section .rodata,"a"
.space 4
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan.ld
0,0 → 1,8
SECTIONS
{
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) *(COMMON) }
.note : { *(.note) }
/DISCARD/ : { *(.reginfo) *(.trampolines) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/note-1.d
0,0 → 1,10
#ld: -Tnote-1.t
#readelf: -l --wide
#xfail: hppa64-*-*
# hppa64 adds PHDR
 
#...
Section to Segment mapping:
Segment Sections...
00 .foo
01 .note
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl4a.out
0,0 → 1,6
bar OK1
bar OK3
DSO1
DSO2
OK1
OK3
/trunk/gnu/binutils/ld/testsuite/ld-elf/fini.out
0,0 → 1,3
fini array 2
fini array 1
fini array 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9676-4.c
0,0 → 1,9
extern int bar (void);
extern int foo (void);
 
int
x (void)
{
foo ();
return bar ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkoncerdiff2.s
0,0 → 1,22
.section .gnu.linkonce.t.foo, "a", %progbits
1:
.globl symfoo
symfoo:
.long 0
 
.section .gnu.linkonce.t.bar, "a", %progbits
2:
.globl symbar
symbar:
.long 0
 
.section .gnu.linkonce.r.foo, "a", %progbits
.long 1b
.long symfoo
/* ld currently incorrectly silently discards this relocation. Just such
relocations are never produced by g++-3.4 so this suppressed error message
is not a problem:
#error: `.gnu.linkonce.t.bar' referenced in section `.gnu.linkonce.r.foo' of tmpdir/dump1.o: defined in discarded section `.gnu.linkonce.t.bar' of tmpdir/dump1.o
*/
.long 2b
.long symbar
/trunk/gnu/binutils/ld/testsuite/ld-elf/expr1.s
0,0 → 1,4
.section .bar,"ax","progbits"
.byte 0
.section .foo,"aw","progbits"
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl1.c
0,0 → 1,10
#include <stdio.h>
 
extern int bar;
 
void
foo (void)
{
if (bar == -20)
printf ("OK\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/expr1.t
0,0 → 1,6
SECTIONS
{
.bar : AT ((ADDR(.foo) + 4095) & ~(4095)) { *(.bar) }
.foo : { *(.foo) }
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh5.d
0,0 → 1,162
#source: eh5.s
#source: eh5a.s
#source: eh5b.s
#ld:
#readelf: -wf
#target: cfi
#notarget: alpha* hppa64*
 
Contents of the .eh_frame section:
 
00000000 0000001[04] 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
Augmentation data: (0b|1b)
 
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
0000001[48] 00000014 0000001[8c] FDE cie=00000000 pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
000000(2c|30) 00000014 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
Augmentation data: 03 .. .. .. .. (0b|1b)
 
DW_CFA_nop
 
0000004[48] 00000014 0000001c FDE cie=000000(2c|30) pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
000000(5c|60) 00000014 0000006[04] FDE cie=00000000 pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
0000007[48] 0000001[8c] 00000000 CIE
Version: 1
Augmentation: "zPLR"
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
Augmentation data: 03 .. .. .. .. 0c (0b|1b)
 
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
0000009[08] 0000001c 0000002[04] FDE cie=0000007[48] pc=.*
Augmentation data: (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef)
 
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
000000b[08] 0000001[04] 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
Augmentation data: (0b|1b)
 
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
#...
000000(c4|d0) 0000001[04] 0000001[8c] FDE cie=000000b[08] pc=.*
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
000000[de]8 00000014 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
Augmentation data: 03 .. .. .. .. (0b|1b)
 
DW_CFA_nop
 
00000(0f|10)0 00000014 0000001c FDE cie=000000[de]8 pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
000001[01]8 0000001[04] 000000(5c|64) FDE cie=000000b[08] pc=.*
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
000001(1c|30) 0000001[8c] 00000000 CIE
Version: 1
Augmentation: "zPLR"
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
Augmentation data: 03 .. .. .. .. 0c (0b|1b)
 
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
000001(38|50) 0000001c 0000002[04] FDE cie=000001(1c|30) pc=.*
Augmentation data: (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef)
 
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
000001(58|70) 00000014 000001(5c|74) FDE cie=00000000 pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
000001(70|88) 00000014 00000(01c|148|15c) FDE cie=00000(02c|030|170) pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
000001(88|a0) 00000014 000001(8c|a4) FDE cie=00000000 pc=.*
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
#...
000001(a0|b8|d4) 0000001c 00000(020|130|144) FDE cie=00000(074|078|1b8) pc=.*
Augmentation data: (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef)
 
DW_CFA_advance_loc: 4 to .*
DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/note-1.s
0,0 → 1,6
.globl _entry
.section .foo,"awx",%progbits
_entry:
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.section .note,"",%note
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/note-1.t
0,0 → 1,14
ENTRY(_entry)
PHDRS
{
data PT_LOAD;
note PT_NOTE;
}
SECTIONS
{
. = 0x1000000;
.foo : { *(.foo) } :data
. = 0x2000000;
.note : { *(.note) } :note
/DISCARD/ : { *(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/group9b.d
0,0 → 1,18
#source: group9.s
#ld: -r --gc-sections --entry bar
#readelf: -g --wide
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
#notarget: alpha-*-* hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
#xfail: cr16-*-* crx-*-*
# generic linker targets don't support --gc-sections, nor do a bunch of others
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
 
COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
\[[ 0-9]+\] .data.foo
 
COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains 1 sections:
\[Index\] Name
\[[ 0-9]+\] .text.bar
/trunk/gnu/binutils/ld/testsuite/ld-elf/tls_gc.s
0,0 → 1,16
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.globl var
.section .tbss.var,"awT",%nobits
.type var,%object
.size var,1
var:
.zero 1
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11304b.s
0,0 → 1,4
.section .zzz,"ax",%progbits
.long 0
.text
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl6bmain.c
0,0 → 1,33
#include <stdio.h>
#include <dlfcn.h>
 
int bar = -20;
 
int
main (void)
{
int ret = 0;
void *handle;
void (*fcn) (void);
 
handle = dlopen("./tmpdir/libdl6b.so", RTLD_GLOBAL|RTLD_LAZY);
if (!handle)
{
printf("dlopen ./tmpdir/libdl6b.so: %s\n", dlerror ());
return 1;
}
 
fcn = (void (*)(void)) dlsym(handle, "foo");
if (!fcn)
{
printf("dlsym foo: %s\n", dlerror ());
ret += 1;
}
else
{
(*fcn) ();
}
 
dlclose (handle);
return ret;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3d.s
0,0 → 1,2
.section .foo,"a",%nobits
.space 16
/trunk/gnu/binutils/ld/testsuite/ld-elf/empty.d
0,0 → 1,7
#source: empty.s
#ld:
#readelf: -s
 
#...
+[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9] _start
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/merge.d
0,0 → 1,17
#source: merge.s
#ld: -T merge.ld
#objdump: -s
#xfail: "arc-*-*" "avr-*-*" "bfin-*-*" "cr16-*-*" "cris*-*-*" "crx-*-*" "d10v-*-*" "d30v-*-*"
#xfail: "dlx-*-*" "fr30-*-*" "frv-*-*" "hppa*64*-*-*" "h8300-*-*" "score-*-*"
#xfail: "i370-*-*" "i860-*-*" "i960-*-*" "ip2k-*-*" "iq2000-*-*" "lm32-*-*"
#xfail: "mcore-*-*" "mn102*-*-*" "mips*-*-*" "ms1-*-*" "msp430-*-*" "mep-*-*"
#xfail: "or32-*-*" "pj-*-*" "sparc*-*-*" "tic6x-*-*" "vax-*-*" "xstormy16-*-*"
#xfail: "xtensa*-*-*"
 
.*: file format .*elf.*
 
Contents of section .text:
1000 (1010)?0000(1010)? (1210)?0000(1012)? (0c)?000000(0c)? (0e)?000000(0e)? .*
Contents of section .rodata:
1010 61626300 .*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh5.s
0,0 → 1,29
.text
.cfi_startproc simple
.long 0
.cfi_def_cfa 0, 16
.long 0
.cfi_endproc
 
.cfi_startproc simple
.cfi_personality 3, my_personality_v0
.long 0
.cfi_def_cfa 0, 16
.cfi_endproc
 
.cfi_startproc simple
.long 0
.cfi_def_cfa 0, 16
.long 0
.cfi_endproc
 
.cfi_startproc simple
.cfi_personality 3, my_personality_v0
.cfi_lsda 12, 0xdeadbeef
.long 0
.cfi_def_cfa 0, 16
.cfi_endproc
 
.globl my_personality_v0
my_personality_v0:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/frame.exp
0,0 → 1,90
# Expect script for frame section tests
# Copyright 2004, 2005, 2007 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.
#
# Written by H.J. Lu (hongjiu.lu@intel.com)
#
 
# Make sure that ld correctly handles frame sections in ELF.
 
# This test can only be run on ELF platforms.
if ![is_elf_format] {
return
}
 
# No shared lib support on this target.
if { [istarget "mcore-*-*"] } {
return
}
 
# Too small MAXPAGESIZE on this target.
if { [istarget "sh*-*-elf*"] } {
return
}
 
# ??? These targets have their own .tbss section, with different meaning
# to the usual ELF .tbss.
if { [istarget "hppa64-*-*"] || [istarget "v850-*-*"] } {
return
}
 
set as_opt ""
 
# This target requires extra as options when building code for shared
# libraries.
if { [istarget "tic6x-*-*"] } {
set as_opt "-mpic -mpid=near"
}
 
set test1 "read-only .eh_frame section"
set test2 "read-only .gcc_except_table section"
 
global as
global ld
 
if { ![ld_assemble_flags $as $as_opt $srcdir/$subdir/tbss.s tmpdir/tbss.o ]
|| ![ld_assemble_flags $as $as_opt $srcdir/$subdir/frame.s tmpdir/frame.o] } {
unresolved "$test1"
return
}
 
if { [ld_simple_link $ld tmpdir/frame.so "--shared tmpdir/frame.o tmpdir/tbss.o"] } {
pass "$test1"
} else {
if [string match "*shared not supported*" $link_output] {
unsupported "-shared is not supported by this target"
} else {
fail "$test1"
}
}
 
if ![ld_assemble_flags $as $as_opt $srcdir/$subdir/table.s tmpdir/table.o ] {
unresolved "$test2"
return
}
 
if { [ld_simple_link $ld tmpdir/table.so "--shared tmpdir/table.o tmpdir/tbss.o"] } {
pass "$test2"
} else {
if [string match "*shared not supported*" $link_output] {
unsupported "-shared is not supported by this target"
} else {
fail "$test2"
}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/local1.map
0,0 → 1,6
{
global:
*;
local:
foo;
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage3a.d
0,0 → 1,11
#source: maxpage1.s
#ld: -z max-page-size=0x10000000 -T maxpage3.t
#readelf: -lS --wide
#target: *-*-linux* *-*-gnu*
 
#...
\[[ 0-9]+\] \.data[ \t]+PROGBITS[ \t]+0*10000000[ \t]+[ \t0-9a-f]+WA?.*
#...
LOAD+.*0x10000000
LOAD+.*0x10000000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/commonpage1.d
0,0 → 1,9
#source: maxpage1.s
#ld: -z max-page-size=0x200000 -z common-page-size=0x100000
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
LOAD+.*0x200000
LOAD+.*0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec-to-seg1.s
0,0 → 1,9
.file "sec-to-seg1.s"
 
.section .rodata
.align 2
.ascii "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\000"
.align 2
.ascii "0000000000000000000000000000000\000"
 
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11138-2.map
0,0 → 1,4
{
global: main;
local: *;
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl1.list
0,0 → 1,6
{
extern "C"
{
bar;
};
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/simple.s
0,0 → 1,4
.text
.long 1
.data
.long 2
/trunk/gnu/binutils/ld/testsuite/ld-elf/func1.c
0,0 → 1,2
void foo (void) { }
void bar (void) { }
/trunk/gnu/binutils/ld/testsuite/ld-elf/dwarf.exp
0,0 → 1,114
# Expect script for various DWARF tests.
# Copyright 2006, 2007 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.
#
 
#
# Written by H.J. Lu (hongjiu.lu@intel.com)
#
 
# Exclude non-ELF targets.
 
if ![is_elf_format] {
return
}
 
# The following tests require running the executable generated by ld.
if ![isnative] {
return
}
 
# Check if compiler works
if { [which $CC] == 0 } {
return
}
 
# Skip if -feliminate-dwarf2-dups isn't supported.
if ![ld_compile "$CC -g -feliminate-dwarf2-dups" $srcdir/$subdir/dummy.c tmpdir/dummy.o] {
return
}
 
set build_tests {
{"Build libdwarf1.so"
"-s -shared" "-fPIC -g -feliminate-dwarf2-dups"
{dwarf1.c} {} "libdwarf1.so"}
}
 
set run_tests {
{"Run with libdwarf1.so first"
"tmpdir/libdwarf1.so" ""
{dwarf1main.c} "dwarf1a" "dwarf1.out"
"-g -feliminate-dwarf2-dups"}
{"Run with libdwarf1.so last"
"tmpdir/dwarf1main.o tmpdir/libdwarf1.so" ""
{dummy.c} "dwarf1b" "dwarf1.out"
"-g -feliminate-dwarf2-dups"}
}
 
run_cc_link_tests $build_tests
run_ld_link_exec_tests [] $run_tests
 
proc strip_test {} {
global ld
global strip
global NM
 
set test "libdwarf1c.so"
set test_name "Strip -s $test"
set prog $strip
 
if ![ld_simple_link $ld tmpdir/$test "-shared tmpdir/dwarf1.o"] {
unresolved "$test_name"
return
}
 
send_log "$NM -D tmpdir/$test > tmpdir/$test.exp\n"
catch "exec $NM -D tmpdir/$test > tmpdir/$test.exp" got
if ![string match "" $got] then {
send_log "$got\n"
unresolved "$test_name"
return
}
 
send_log "$prog -s tmpdir/$test\n"
catch "exec $prog -s tmpdir/$test" got
if ![string match "" $got] then {
send_log "$got\n"
fail "$test_name"
return
}
 
send_log "$NM -D tmpdir/$test > tmpdir/$test.out\n"
catch "exec $NM -D tmpdir/$test > tmpdir/$test.out" got
if ![string match "" $got] then {
send_log "$got\n"
unresolved "$test_name"
return
}
 
if { [catch {exec cmp tmpdir/$test.exp tmpdir/$test.out}] } then {
send_log "tmpdir/$test.exp tmpdir/$test.out differ.\n"
fail "$test_name"
return
}
 
pass "$test_name"
}
 
strip_test
/trunk/gnu/binutils/ld/testsuite/ld-elf/empty.s
0,0 → 1,16
.section .bss
bar:
.text
.type start,"function"
.global start
start:
.type _start,"function"
.global _start
_start:
.type __start,"function"
.global __start
__start:
.type main,"function"
.global main
main:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/merge.s
0,0 → 1,14
.section .rodata.str,"aMS","progbits",1
.LC0:
.asciz "abc"
.LC1:
.asciz "c"
 
.text
.global _start
_start:
.long .LC0
.LT0:
.long .LC1
.long .LC0-.LT0
.long .LC1-.LT0
/trunk/gnu/binutils/ld/testsuite/ld-elf/multibss1.d
0,0 → 1,11
#source: multibss1.s
#ld: -e 0
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
#xfail: hppa64-*-*
# hppa64 default script add 16 bytes at start of .data giving 0x500010 p_memsz
 
#...
+LOAD +0x[^ ]+ +0x[^ ]+ +0x[^ ]+ +0x[^ ]+ +0x500000 .*
# p_offset p_vaddr p_paddr p_filesz
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkonce1.d
0,0 → 1,12
#source: linkonce1a.s
#source: linkonce1b.s
#ld: -r
#objdump: -r
 
.*: file format .*
 
RELOCATION RECORDS FOR \[.debug_frame\]:
OFFSET[ ]+TYPE[ ]+VALUE[ ]*
.*(NONE|unused|UNUSED).*\*ABS\*
 
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl5.cc
0,0 → 1,61
#include <stdio.h>
#include <stdlib.h>
#include <new>
 
int pass = 0;
 
void *
operator new (size_t sz, const std::nothrow_t&) throw ()
{
void *p;
pass++;
p = malloc(sz);
return p;
}
 
void *
operator new (size_t sz) throw (std::bad_alloc)
{
void *p;
pass++;
p = malloc(sz);
return p;
}
 
void
operator delete (void *ptr) throw ()
{
pass++;
if (ptr)
free (ptr);
}
 
class A
{
public:
A() {}
~A() { }
int a;
int b;
};
 
 
int
main (void)
{
A *bb = new A[10];
delete [] bb;
bb = new (std::nothrow) A [10];
delete [] bb;
 
if (pass == 4)
{
printf ("PASS\n");
return 0;
}
else
{
printf ("FAIL\n");
return 1;
}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/dummy.c
0,0 → 1,61
/* An empty file. */
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude2.s
0,0 → 1,4
.globl exclude_sym
.data
exclude_sym:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh3a.s
0,0 → 1,3
.section .eh_frame,"a",%progbits
.align 8
.zero 8
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr1.d
0,0 → 1,8
#source: maxpage1.s
#ld: -Ttext-segment 0x7000000 -z max-page-size=0x200000
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu*
 
#...
LOAD +0x0+ 0x0*7000000 0x0*7000000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/multibss1.s
0,0 → 1,11
.macro makebss
.section .bss_\@,"aw",%nobits
.space 0x10000
.endm
 
.rept 80
makebss
.endr
 
.text
.space 0x10
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage1.d
0,0 → 1,9
#source: maxpage1.s
#ld: -z max-page-size=0x200000
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
LOAD+.*0x200000
LOAD+.*0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/group8.s
0,0 → 1,10
.section .text.foo,"axG",%progbits,foo,comdat
.globl foo
.type foo,%function
foo:
.byte 0
.section .text.bar,"axG",%progbits,bar,comdat
.globl bar
.type bar,%function
bar:
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/note-2.d
0,0 → 1,17
#ld: -Tnote-2.t
#objcopy_linked_file: -R .foo
#readelf: -l --wide
#xfail: hppa64-*-*
# hppa64 adds PHDR
 
#...
Program Headers:
Type.*
LOAD +0x[0-9a-f]+ .*
NOTE +0x[0-9a-f]+ .*
 
#...
Segment Sections...
00[ \t]+.text *
01[ \t]+.note *
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/end.c
0,0 → 1,7
#include <stdio.h>
 
void
foo ()
{
printf ("TEST1\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/lma.lnk
0,0 → 1,6
SECTIONS
{
. = -0x100000;
.text : AT(ADDR(.text) + 0x100000) { *(.text) }
/DISCARD/ : { *(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/flags1.d
0,0 → 1,22
#name: --set-section-flags test 1 (sections)
#ld: -Tflags1.ld
#objcopy_linked_file: --set-section-flags .post_text_reserve=contents,alloc,load,readonly,code
#readelf: -l --wide
#xfail: "avr-*-*" "dlx-*-*" "h8300-*-*" "i960-*-*" "ip2k-*-*" "m32r-*-*"
#xfail: "moxie-*-*" "mt-*-*" "msp430-*-*"
#xfail: "*-*-hpux*" "hppa*64*-*-*"
# Fails on the AVR, DLX, H8300, I960, IP2K, M32R, MOXIE, MT, and MSP430
# because the two sections are not merged into one segment.
# (There is no good reason why they have to be).
# Fails on HPUX systems because the .type pseudo-op behaves differently.
# Fails on hppa64 because a PHDR is always added.
 
#...
Program Headers:
Type.*
LOAD +0x[0-9a-f]+ 0x0*0 0x0*0 0x0*01(6[1-9a-f]|70) 0x0*01(6[1-9a-f]|70) RWE 0x[0-9a-f]+
 
#...
Segment Sections...
00[ \t]+.text .post_text_reserve[ \t]*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/shared.exp
0,0 → 1,334
# Expect script for various ELF tests.
# Copyright 2006, 2007, 2008, 2009 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.
#
 
# Exclude non-ELF targets.
 
# The following tests require running the executable generated by ld,
# or enough of a build environment to create a fully linked executable.
# This is not commonly available when testing a cross-built linker.
if ![isnative] {
return
}
 
if ![is_elf_format] {
return
}
 
# Check to see if the C compiler works
if { [which $CC] == 0 } {
return
}
 
set build_tests {
{"Build libfoo.so"
"-shared" "-fPIC"
{foo.c} {} "libfoo.so"}
{"Build versioned libfoo.so"
"-shared -Wl,--version-script=foo.map" "-fPIC"
{foo.c} {} "libfoov.so"}
{"Build libbar.so"
"-shared" "-fPIC"
{begin.c end.c} {} "libbar.so"}
{"Build warn libbar.so"
"-shared" "-fPIC"
{beginwarn.c end.c} {} "libbarw.so"
"C" "^.*\\\): warning: function foo is deprecated$"}
{"Build hidden libbar.so"
"-shared" "-fPIC"
{begin.c endhidden.c} {} "libbarh.so"}
{"Build protected libbar.so"
"-shared" "-fPIC"
{begin.c endprotected.c} {} "libbarp.so"}
{"Build libbar.so with libfoo.so"
"-shared tmpdir/begin.o tmpdir/libfoo.so" "-fPIC"
{end.c} {} "libbarfoo.so"}
{"Build libar.so with versioned libfoo.so"
"-shared tmpdir/begin.o tmpdir/libfoov.so" "-fPIC"
{end.c} {} "libbarfoov.so"}
{"Build hidden libbar.so with libfoo.so"
"-shared tmpdir/begin.o tmpdir/libfoo.so" "-fPIC"
{endhidden.c} {} "libbarhfoo.so"}
{"Build hidden libar.so with versioned libfoo.so"
"-shared tmpdir/begin.o tmpdir/libfoov.so" "-fPIC"
{endhidden.c} {} "libbarhfoov.so"}
{"Build protected libbar.so with libfoo.so"
"-shared tmpdir/begin.o tmpdir/libfoo.so" "-fPIC"
{endprotected.c} {} "libbarpfoo.so"}
{"Build protected libbar.so with versioned libfoo.so"
"-shared tmpdir/begin.o tmpdir/libfoov.so" "-fPIC"
{endprotected.c} {} "libbarpfoov.so"}
{"Build libdl1.so"
"-shared" "-fPIC"
{dl1.c} {} "libdl1.so"}
{"Build libdl2a.so with --dynamic-list=dl2.list"
"-shared -Wl,--dynamic-list=dl2.list" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2a.so"}
{"Build libdl2a.so with --dynamic-list=dl2a.list"
"-shared -Wl,--dynamic-list=dl2a.list" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2a.so"}
{"Build libdl2a.so with --dynamic-list-data"
"-shared -Wl,--dynamic-list-data" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2a.so"}
{"Build libdl2b.so with --dynamic-list=dl2.list and dl2xxx.list"
"-shared -Wl,--dynamic-list=dl2.list,--dynamic-list=dl2xxx.list" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2b.so"}
{"Build libdl2c.so with --dynamic-list-data and dl2xxx.list"
"-shared -Wl,--dynamic-list-data,--dynamic-list=dl2xxx.list" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2c.so"}
{"Build libdl4a.so with --dynamic-list=dl4.list"
"-shared -Wl,--dynamic-list=dl4.list" "-fPIC"
{dl4.c dl4xxx.c} {} "libdl4a.so"}
{"Build libdl4b.so with --dynamic-list-data"
"-shared -Wl,--dynamic-list-data" "-fPIC"
{dl4.c dl4xxx.c} {} "libdl4b.so"}
{"Build libdl4c.so with --dynamic-list=dl4.list and dl4xxx.list"
"-shared -Wl,--dynamic-list=dl4.list,--dynamic-list=dl4xxx.list" "-fPIC"
{dl4.c dl4xxx.c} {} "libdl4c.so"}
{"Build libdl4d.so with --dynamic-list-data and dl4xxx.list"
"-shared -Wl,--dynamic-list-data,--dynamic-list=dl4xxx.list" "-fPIC"
{dl4.c dl4xxx.c} {} "libdl4d.so"}
{"Build libdl4e.so with -Bsymbolic-functions --dynamic-list-cpp-new"
"-shared -Wl,-Bsymbolic-functions,--dynamic-list-cpp-new" "-fPIC"
{dl4.c dl4xxx.c} {} "libdl4e.so"}
{"Build libdl4f.so with --dynamic-list-cpp-new -Bsymbolic-functions"
"-shared -Wl,--dynamic-list-cpp-new,-Bsymbolic-functions" "-fPIC"
{dl4.c dl4xxx.c} {} "libdl4f.so"}
{"Build libdl6a.so"
"-shared" "-fPIC"
{dl6.c} {} "libdl6a.so"}
{"Build libdl6b.so with -Bsymbolic --dynamic-list-data"
"-shared -Wl,-Bsymbolic,--dynamic-list-data" "-fPIC"
{dl6.c} {} "libdl6b.so"}
{"Build libdl6c.so with -Bsymbolic"
"-shared -Wl,-Bsymbolic" "-fPIC"
{dl6.c} {} "libdl6c.so"}
{"Build libdl6d.so with --dynamic-list-data -Bsymbolic"
"-shared -Wl,--dynamic-list-data,-Bsymbolic" "-fPIC"
{dl6.c} {} "libdl6d.so"}
{"Build libdata1.so"
"-shared" "-fPIC"
{data1.c} {} "libdata1.so"}
{"Build libcomm1.o"
"-r -nostdlib" ""
{comm1.c} {} "libcomm1.o"}
{"Build libfunc1.so"
"-shared" "-fPIC"
{func1.c} {} "libfunc1.so"}
{"Build libpr9676-1.a"
"" "-fPIC"
{pr9676-1.c} {} "libpr9676-1.a"}
{"Build libpr9676-2.a"
"" "-fPIC"
{pr9676-2.c} {} "libpr9676-2.a"}
{"Build libpr9676-3.so"
"-shared" "-fPIC"
{pr9676-3.c} {} "libpr9676-3.so"}
{"Build libpr9676-4.so"
"-shared" "-fPIC"
{pr9676-4.c} {} "libpr9676-4.so"}
{"Build libpr9676-4a.so"
"-shared tmpdir/pr9676-4.o -Ltmpdir -lpr9676-3 -Wl,--start-group -lpr9676-1 -lpr9676-2 -Wl,--end-group"
"-fPIC"
{dummy.c} {{readelf {-s} pr9676.rd}} "libpr9676-4a.so"}
{"Build libpr9679.so"
"-shared" "-fPIC -O0"
{pr9679-1.c pr9679-2.c} {{readelf {-s} pr9679.rd}} "libpr9679.so"}
{"Build libpr11138-1.so"
"-shared -Wl,--version-script=pr11138-1.map" "-fPIC"
{pr11138-1.c} {} "libpr11138-1.so"}
{"Build libpr11138-2.o"
"-r -nostdlib" ""
{pr11138-2.c} {} "libpr11138-2.o"}
}
 
run_cc_link_tests $build_tests
 
set run_tests {
{"Run normal with libfoo.so"
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" ""
{main.c} "normal" "normal.out"}
{"Run protected with libfoo.so"
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/endprotected.o" ""
{main.c} "protected" "normal.out"}
{"Run hidden with libfoo.so"
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/endhidden.o" ""
{main.c} "hidden" "hidden.out"}
{"Run normal with versioned libfoo.so"
"tmpdir/begin.o tmpdir/libfoov.so tmpdir/end.o" ""
{main.c} "normalv" "normal.out"}
{"Run warn with versioned libfoo.so"
"tmpdir/beginwarn.o tmpdir/libfoov.so" ""
{main.c} "warn" "warn.out"
"" "" "^.*\\\): warning: function foo is deprecated$"}
{"Run protected with versioned libfoo.so"
"tmpdir/begin.o tmpdir/libfoov.so tmpdir/endprotected.o" ""
{main.c} "protected" "normal.out"}
{"Run hidden with versioned libfoo.so"
"tmpdir/begin.o tmpdir/libfoov.so tmpdir/endhidden.o" ""
{main.c} "hiddenv" "hidden.out"}
{"Run normal libbar.so with libfoo.so"
"tmpdir/libbarfoo.so tmpdir/libfoo.so" ""
{main.c} "normal" "normal.out"}
{"Run protected libbar.so with libfoo.so"
"tmpdir/libbarpfoo.so tmpdir/libfoo.so" ""
{main.c} "protected" "normal.out"}
{"Run hidden libbar.so with libfoo.so"
"tmpdir/libbarhfoo.so tmpdir/libfoo.so" ""
{main.c} "hidden" "hidden.out"}
{"Run normal libbar.so with versioned libfoo.so"
"tmpdir/libbarfoov.so tmpdir/libfoov.so" ""
{main.c} "normal" "normal.out"}
{"Run protected libbar.so with versioned libfoo.so"
"tmpdir/libbarpfoov.so tmpdir/libfoov.so" ""
{main.c} "protected" "normal.out"}
{"Run hidden libbar.so with versioned libfoo.so"
"tmpdir/libbarhfoov.so tmpdir/libfoov.so" ""
{main.c} "hidden" "hidden.out"}
{"Run dl1a with --dynamic-list=dl1.list and dlopen on libdl1.so"
"--dynamic-list=dl1.list -ldl" ""
{dl1main.c} "dl1a" "dl1.out"}
{"Run dl1b with --dynamic-list-data and dlopen on libdl1.so"
"--dynamic-list-data -ldl" ""
{dl1main.c} "dl1b" "dl1.out"}
{"Run with libdl2a.so"
"tmpdir/libdl2a.so" ""
{dl2main.c} "dl2a" "dl2a.out"}
{"Run with libdl2b.so"
"tmpdir/libdl2b.so" ""
{dl2main.c} "dl2b" "dl2b.out"}
{"Run with libdl2c.so"
"tmpdir/libdl2c.so" ""
{dl2main.c} "dl2c" "dl2b.out"}
{"Run with libdl4a.so"
"tmpdir/libdl4a.so" ""
{dl4main.c} "dl4a" "dl4a.out"}
{"Run with libdl4b.so"
"tmpdir/libdl4b.so" ""
{dl4main.c} "dl4b" "dl4a.out"}
{"Run with libdl4c.so"
"tmpdir/libdl4c.so" ""
{dl4main.c} "dl4c" "dl4b.out"}
{"Run with libdl4d.so"
"tmpdir/libdl4d.so" ""
{dl4main.c} "dl4d" "dl4b.out"}
{"Run with libdl4e.so"
"tmpdir/libdl4e.so" ""
{dl4main.c} "dl4e" "dl4a.out"}
{"Run with libdl4f.so"
"tmpdir/libdl4f.so" ""
{dl4main.c} "dl4f" "dl4a.out"}
{"Run dl6a1 with --dynamic-list-data and dlopen on libdl6a.so"
"--dynamic-list-data -ldl" ""
{dl6amain.c} "dl6a1" "dl6a.out"}
{"Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so"
"-Bsymbolic-functions -ldl" ""
{dl6amain.c} "dl6a2" "dl6b.out"}
{"Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so"
"-Bsymbolic -ldl" ""
{dl6amain.c} "dl6a3" "dl6b.out"}
{"Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so"
"-Bsymbolic --dynamic-list-data -ldl" ""
{dl6amain.c} "dl6a4" "dl6a.out"}
{"Run dl6a5 with -Bsymbolic-functions --dynamic-list-cpp-new and dlopen on libdl6a.so"
"-Bsymbolic-functions --dynamic-list-cpp-new -ldl" ""
{dl6amain.c} "dl6a5" "dl6b.out"}
{"Run dl6a6 with --dynamic-list-cpp-new -Bsymbolic-functions and dlopen on libdl6a.so"
"--dynamic-list-cpp-new -Bsymbolic-functions -ldl" ""
{dl6amain.c} "dl6a6" "dl6b.out"}
{"Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so"
"--dynamic-list-data -Bsymbolic -ldl" ""
{dl6amain.c} "dl6a7" "dl6a.out"}
{"Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so"
"--dynamic-list-data -ldl" ""
{dl6bmain.c} "dl6b1" "dl6a.out"}
{"Run dl6b2 with dlopen on libdl6b.so"
"-ldl" ""
{dl6bmain.c} "dl6b2" "dl6b.out"}
{"Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so"
"--dynamic-list-data -ldl" ""
{dl6cmain.c} "dl6c1" "dl6b.out"}
{"Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so"
"--dynamic-list-data -ldl" ""
{dl6dmain.c} "dl6d1" "dl6b.out"}
{"Run with libdata1.so"
"tmpdir/libdata1.so" ""
{dynbss1.c} "dynbss1" "pass.out"}
{"Run with libfunc1.so comm1.o"
"tmpdir/libfunc1.so tmpdir/comm1.o" ""
{dummy.c} "comm1" "pass.out"}
{"Run with comm1.o libfunc1.so"
"tmpdir/comm1.o tmpdir/libfunc1.so" ""
{dummy.c} "comm1" "pass.out"}
{"Run with pr11138-2.c libpr11138-1.so"
"--version-script=pr11138-2.map tmpdir/pr11138-2.o tmpdir/libpr11138-1.so" ""
{dummy.c} "pr11138a" "pr11138.out"}
{"Run with libpr11138-1.so pr11138-2.c"
"--version-script=pr11138-2.map tmpdir/libpr11138-1.so tmpdir/pr11138-2.o" ""
{dummy.c} "pr11138b" "pr11138.out"}
}
 
# NetBSD ELF systems do not currently support the .*_array sections.
run_ld_link_exec_tests [list "*-*-netbsdelf*"] $run_tests
 
# Check to see if the C++ compiler works
if { [which $CXX] == 0 } {
return
}
 
set build_cxx_tests {
{"Build libdl3a.so with --dynamic-list=dl3.list"
"-shared -Wl,--dynamic-list=dl3.list" "-fPIC"
{dl3.cc} {} "libdl3a.so" "c++"}
{"Build libdl3b.so with -Bsymbolic"
"-shared -Wl,-Bsymbolic" "-fPIC"
{dl3.cc} {} "libdl3b.so" "c++"}
{"Build libdl3a.so with --dynamic-list-cpp-typeinfo"
"-shared -Wl,--dynamic-list-cpp-typeinfo" "-fPIC"
{dl3.cc} {} "libdl3c.so" "c++"}
{"Build libdnew1a.so with --Bsymbolic-functions --dynamic-list-cpp-new"
"-shared -Wl,-Bsymbolic-functions,--dynamic-list-cpp-new" "-fPIC"
{del.cc new.cc} {} "libnew1a.so" "c++"}
{"Build libdnew1b.so with --dynamic-list-data --dynamic-list-cpp-new"
"-shared -Wl,--dynamic-list-data,--dynamic-list-cpp-new" "-fPIC"
{del.cc new.cc} {} "libnew1b.so" "c++"}
}
 
set run_cxx_tests {
{"Run with libdl3a.so"
"tmpdir/libdl3a.so" ""
{dl3main.cc} "dl3a" "dl3a.out" "" "c++"}
# "-shared -Bsymbolic" only works with gcc 4.5.0 and newer.
# {"Run with libdl3b.so"
# "tmpdir/libdl3b.so" ""
# {dl3main.cc} "dl3b" "dl3b.out" "" "c++"}
{"Run with libdl3c.so"
"tmpdir/libdl3c.so" ""
{dl3main.cc} "dl3c" "dl3a.out" "" "c++"}
{"Run with libnew1a.so"
"tmpdir/libnew1a.so" ""
{dl5.cc} "dl5a" "dl5.out" "" "c++"}
{"Run with libnew1b.so"
"tmpdir/libnew1b.so" ""
{dl5.cc} "dl5b" "dl5.out" "" "c++"}
}
 
run_cc_link_tests $build_cxx_tests
run_ld_link_exec_tests [] $run_cxx_tests
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl2.c
0,0 → 1,16
#include <stdio.h>
 
int foo;
 
extern void xxx (void);
 
void
bar (int x)
{
if (foo == 1)
printf ("OK1\n");
else if (foo == 0)
printf ("OK2\n");
foo = -1;
xxx ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr349.d
0,0 → 1,13
#source: pr349-1.s
#source: pr349-2.s
#ld: -r
#readelf: -S
#xfail: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-elf i860-*-* i960-*-*
#xfail: iq*-*-* mn10200-*-* moxie-*-* msp*-*-* mt-*-* or32-*-* pj*-*-*
# if not using elf32.em, you don't get fancy section handling
 
#...
.* .abcxyz .*
#...
.* .abcxyz .*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dynamic1.ld
0,0 → 1,8
SECTIONS
{
. = SIZEOF_HEADERS;
.text : { *(.text) }
.data : { *(.data) }
.data1 : { KEEP (*(.data1)) }
.dynamic : { *(.dynamic) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage1.s
0,0 → 1,13
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.long 0
 
.data
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh6.d
0,0 → 1,17
#source: eh6.s
#ld: --gc-sections -shared
#readelf: -wf
#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
Contents of the .eh_frame section:
 
00000000 0000001[4c] 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: 1
Data alignment factor: .*
Return address column: .*
Augmentation data: 9[bc] .* 1b
 
DW_CFA_nop
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/note-2.s
0,0 → 1,8
.globl _entry
.text
_entry:
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.section .foo,"awx",%progbits
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.section .note,"",%note
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan-region.ld
0,0 → 1,11
MEMORY
{
region : ORIGIN = 0x40000000, LENGTH = 8M
}
 
SECTIONS
{
.text : ALIGN (4) { *(.text) } > region
.rodata : ALIGN (4) { *(.rodata) } > region
/DISCARD/ : { *(.reginfo) *(.trampolines) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/note-2.t
0,0 → 1,13
ENTRY(_entry)
PHDRS
{
data PT_LOAD;
note PT_NOTE;
}
SECTIONS
{
.text : { *(.text) } :data
.foo : { *(.foo) } :data
.note : { *(.note) } :note
/DISCARD/ : { *(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/discard.ld
0,0 → 1,3
SECTIONS {
/DISCARD/ : { *(.discard) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec-to-seg-script-adjoining-pages.t
0,0 → 1,11
SECTIONS
{
. = 0x1000;
.sec1 : { *sec-to-seg1.o(.rodata) }
. += CONSTANT(MAXPAGESIZE);
.sec2 : { *sec-to-seg2.o(.rodata) }
 
.data : { *(.data) } /* For hppa64. */
/DISCARD/ : {*(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/data1.c
0,0 → 1,6
#include "data1.h"
 
char a1[1] __attribute__ ((aligned (ALIGNMENT1))) = { 10 };
char a2[2] __attribute__ ((aligned (ALIGNMENT2)));
char a3[3] __attribute__ ((aligned (ALIGNMENT3)));
char a4[4] __attribute__ ((aligned (ALIGNMENT4)));
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr1.d
0,0 → 1,10
#source: loadaddr.s
#ld: -T loadaddr1.t -T loadaddr.t -z max-page-size=0x200000
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
LOAD +0x000000 0xf*80000000 0xf*80000000 0x100050 0x100050 RWE 0x200000
LOAD +0x200000 0xf*ff600000 0xf*80101000 0x0*10 0x0*10 R E 0x200000
LOAD +0x302000 0xf*80102000 0xf*80102000 0x0*10 0x0*10 RW 0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/flags1.s
0,0 → 1,5
.text
.globl start
.type start, %function
start:
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/symbol1w.s
0,0 → 1,10
.section .gnu.warning.symbol1
.asciz "witty one-liner"
.text
.type symbol1,"function"
.global symbol1
symbol1:
.L1:
.long 0
.L0:
.size symbol1,.L0-.L1
/trunk/gnu/binutils/ld/testsuite/ld-elf/group10.d
0,0 → 1,11
#source: group10.s
#ld: -r -T group.ld
#readelf: -Sg --wide
 
#...
group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 4 sections:
\[Index\] Name
\[[ 0-9]+\] \.text.*
\[[ 0-9]+\] \.rodata\.str.*
\[[ 0-9]+\] \.data.*
\[[ 0-9]+\] \.keepme.*
/trunk/gnu/binutils/ld/testsuite/ld-elf/tdata1.s
0,0 → 1,24
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.globl data
.section .data,"aw",%progbits
.p2align 4
.type data,%object
.size data,4096
data:
.zero 4096
.globl tdata
.section .tdata,"awT",%progbits
.p2align 4
.type tdata,%object
.size tdata,4096
tdata:
.zero 4096
/trunk/gnu/binutils/ld/testsuite/ld-elf/weak-dyn-1a.s
0,0 → 1,13
.globl foo
.weak foo
.type foo,%object
.size foo,1
 
.globl bar
.type bar,%object
.size bar,1
 
.data
foo:
bar:
.byte 1
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr349-1.s
0,0 → 1,2
.section ".abcxyz","ax",%progbits
.long 1
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3e.s
0,0 → 1,2
.section .foo,"a",%progbits
.long 4,4,4,4
/trunk/gnu/binutils/ld/testsuite/ld-elf/data1.h
0,0 → 1,9
#define ALIGNMENT1 0x800
#define ALIGNMENT2 0x400
#define ALIGNMENT3 0x200
#define ALIGNMENT4 0x100
 
extern char a1[1];
extern char a2[2];
extern char a3[3];
extern char a4[4];
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh6.s
0,0 → 1,17
.section .text.foo, "ax", @progbits
.globl foo
.type foo, @function
foo:
.cfi_startproc simple
.cfi_personality 0x80, indirect_ptr
ret
.cfi_endproc
.size foo, . - foo
 
.section .data.rel.ro, "a", @progbits
indirect_ptr:
.long my_personality_v0
 
.globl my_personality_v0
my_personality_v0:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/binutils.exp
0,0 → 1,142
# Expect script for binutils tests
# Copyright 2006, 2007, 2008, 2009, 2010 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.
#
# Written by H.J. Lu (hongjiu.lu@intel.com)
#
 
# Make sure that binutils can correctly handle ld output in ELF.
 
if { ![istarget *-*-linux*]
&& ![istarget *-*-gnu*]} {
return
}
 
if { [istarget *-*-linux*aout*]
|| [istarget *-*-linux*oldld*] } {
return
}
 
proc binutils_test { prog_name ld_options test } {
global as
global ld
global READELF
global objcopy
global strip
global srcdir
global subdir
global link_output
 
eval set prog \$$prog_name
set test_name "$prog_name $ld_options ($test)"
 
if { ![ld_assemble $as $srcdir/$subdir/$test.s tmpdir/$test.o ] } {
unresolved "$test_name"
return
}
 
if { ![ld_simple_link $ld tmpdir/$test "$ld_options tmpdir/$test.o"] } {
if { [string match "*not supported*" $link_output]
|| [string match "*unrecognized option*" $link_output] } {
unsupported "$ld_options is not supported by this target"
} else {
unresolved "$test_name"
}
return
}
 
send_log "$READELF -l --wide tmpdir/$test > tmpdir/$test.exp\n"
set got [remote_exec host "$READELF -l --wide tmpdir/$test" "" "/dev/null" "tmpdir/$test.exp"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
unresolved "$test_name"
return
}
 
send_log "$prog tmpdir/$test\n"
set got [remote_exec host "$prog tmpdir/$test"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
return
}
 
send_log "$READELF -l --wide tmpdir/$test > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -l --wide tmpdir/$test" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
unresolved "$test_name"
return
}
 
if { [catch {exec cmp tmpdir/$test.exp tmpdir/$test.out}] } then {
send_log "tmpdir/$test.exp tmpdir/$test.out differ.\n"
fail "$test_name"
return
}
 
pass "$test_name"
}
 
binutils_test strip "-z max-page-size=0x200000" maxpage1
binutils_test strip "-z max-page-size=0x200000 -z common-page-size=0x100000" maxpage1
binutils_test strip "-z max-page-size=0x100000" maxpage1
binutils_test strip "-z max-page-size=0x100000 -z common-page-size=0x1000" maxpage1
 
binutils_test strip "" maxpage1
binutils_test strip "-shared" maxpage1
binutils_test objcopy "" maxpage1
binutils_test objcopy "-shared" maxpage1
 
binutils_test strip "-z relro" relro1
binutils_test strip "-z relro -shared" relro1
binutils_test objcopy "-z relro" relro1
binutils_test objcopy "-z relro -shared" relro1
if { ([istarget "i?86-*-elf*"]
|| (([istarget "i?86-*-linux*"]
|| [istarget "i?86-*-gnu*"])
&& ![istarget "*-*-*aout*"]
&& ![istarget "*-*-*oldld*"])
|| [istarget "x86_64-*-linux*"]
|| [istarget "amd64-*-linux*"]) } {
binutils_test strip "-z relro -shared" relro2
binutils_test objcopy "-z relro -shared" relro2
}
 
binutils_test strip "-T ${srcdir}/${subdir}/lma.lnk" lma
 
set tls_tests { "tdata1" "tdata2" }
# hppa64 has its own .tbss section, with different flags.
if { ![istarget "hppa64-*-*"] } {
lappend tls_tests "tdata3" "tbss1" "tbss2" "tbss3"
}
set tls_opts {
""
"-z relro"
"-shared"
"-shared -z relro"
"-z max-page-size=0x100000"
"-z max-page-size=0x100000 -z common-page-size=0x1000"
}
 
foreach testitem $tls_tests {
foreach testopt $tls_opts {
binutils_test objcopy $testopt $testitem
}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage3b.d
0,0 → 1,10
#source: maxpage1.s
#ld: -T maxpage3.t -z max-page-size=0x10000000
#readelf: -lS --wide
#target: x86_64-*-linux*
 
#...
\[[ 0-9]+\] \.data[ \t]+PROGBITS[ \t]+0*200000[ \t]+[ \t0-9a-f]+WA?.*
#...
LOAD+.*0x10000000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/commonpage2.d
0,0 → 1,9
#source: maxpage1.s
#as: --32
#ld: -z max-page-size=0x200000 -z common-page-size=0x100000 -T maxpage4.t
#readelf: -l --wide
#target: x86_64-*-linux*
 
#...
LOAD+.*0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec-to-seg2.s
0,0 → 1,13
.file "sec-to-seg2.s"
 
.section .rodata
.align 2
.ascii "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz\000"
.align 2
.ascii "55555555555555555555555555555555\000"
.align 2
.ascii "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\000"
.align 2
.ascii "99999999999999999999999999999999\000"
 
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr1.t
0,0 → 1,7
SECTIONS
{
.bar -0xa00000 : AT ((LOADADDR(.foo) + SIZEOF(.foo) + 4095) & ~(4095))
{ *(.bar) }
. = LOADADDR(.bar) + 4096;
}
INSERT AFTER .foo;
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11138-1.c
0,0 → 1,13
#include <stdio.h>
 
void
bar (void)
{
printf ("DSO bar\n");
}
 
void
foo (void)
{
bar ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/group10.s
0,0 → 1,14
.section .text.foo,"axG",%progbits,foo_group
.word 0
 
.section .rodata.str.1,"aMSG",%progbits,1,foo_group
.asciz "abc"
 
.section .data.foo,"waG",%progbits,foo_group
.word 1
 
.section .dropme,"G",%progbits,foo_group
.word 2
 
.section .keepme,"G",%progbits,foo_group
.word 3
/trunk/gnu/binutils/ld/testsuite/ld-elf/group1.d
0,0 → 1,12
#source: group1a.s
#source: group1b.s
#ld: -T group.ld
#readelf: -s
#xfail: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
# generic linker targets don't comply with all symbol merging rules
 
Symbol table '.symtab' contains .* entries:
#...
.*: 0+1000 +0 +(NOTYPE|OBJECT) +WEAK +DEFAULT +. foo
.*: 0+0000 +0 +(NOTYPE|OBJECT) +GLOBAL +DEFAULT +UND bar
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/elf.exp
0,0 → 1,116
# Expect script for various ELF tests.
# Copyright 2002, 2003, 2005, 2007, 2009, 2010 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.
#
 
# Exclude non-ELF targets.
 
if ![is_elf_format] {
return
}
 
set old_ldflags $LDFLAGS
if { [istarget spu*-*-*] } {
set LDFLAGS "$LDFLAGS --local-store 0:0"
}
if { [istarget alpha*-*-* ] } {
# The compress1 test is written expecting 32-bit addresses; force the
# executable down into the low address space to match.
# ??? How can we adjust just the one testcase?
set LDFLAGS "$LDFLAGS -Ttext-segment 0x1000000"
}
 
if { [is_remote host] } then {
remote_download host merge.ld
}
 
set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
foreach t $test_list {
# We need to strip the ".d", but can leave the dirname.
verbose [file rootname $t]
run_dump_test [file rootname $t]
}
 
if { [istarget *-*-linux*]
|| [istarget *-*-gnu*] } {
run_ld_link_tests {
{"Weak symbols in dynamic objects 1 (support)"
"-shared" "" {weak-dyn-1a.s}
{}
"libweakdyn1a.so"}
{"Weak symbols in dynamic objects 1 (main test)"
"-shared tmpdir/libweakdyn1a.so -Tweak-dyn-1.ld" "" {weak-dyn-1b.s}
{{readelf {--relocs --wide} weak-dyn-1.rd}}
"libweakdyn1b.so"}
}
}
 
#v850 gas complains about .tbss.var section attributes.
if { [check_gc_sections_available] && ![istarget "v850-*-*"] } {
run_ld_link_tests {
{"--gc-sections on tls variable"
"--gc-section" "" {tls_gc.s} {} "tls_gc"}
}
}
 
set LDFLAGS $old_ldflags
 
# The following tests require running the executable generated by ld.
if ![isnative] {
return
}
 
set array_tests {
{"preinit array" "" "" {preinit.c} "preinit" "preinit.out"}
{"init array" "" "" {init.c} "init" "init.out"}
{"fini array" "" "" {fini.c} "fini" "fini.out"}
{"init array mixed" "" "" {init-mixed.c} "init-mixed" "init-mixed.out" "-I."}
}
set array_tests_pie {
{"PIE preinit array" "-pie" "" {preinit.c} "preinit" "preinit.out" "-fPIE" }
{"PIE init array" "-pie" "" {init.c} "init" "init.out" "-fPIE"}
{"PIE fini array" "-pie" "" {fini.c} "fini" "fini.out" "-fPIE"}
{"PIE init array mixed" "-pie" "" {init-mixed.c} "init-mixed" "init-mixed.out" "-I. -fPIE"}
}
set array_tests_static {
{"static preinit array" "-static" "" {preinit.c} "preinit" "preinit.out"}
{"static init array" "-static" "" {init.c} "init" "init.out"}
{"static fini array" "-static" "" {fini.c} "fini" "fini.out"}
{"static init array mixed" "-static" "" {init-mixed.c} "init-mixed" "init-mixed.out" "-I."}
}
 
# NetBSD ELF systems do not currently support the .*_array sections.
set xfails [list "*-*-netbsdelf*"]
run_ld_link_exec_tests $xfails $array_tests
 
# Run PIE tests only on Linux.
if { [istarget "*-*-linux*"] } {
run_ld_link_exec_tests $xfails $array_tests_pie
}
 
# Be cautious to not XFAIL for *-*-linux-gnu*, *-*-kfreebsd-gnu*, etc.
switch -regexp $target_triplet {
^\[^-\]*-\[^-\]*-gnu.*$ {
# <http://www.gnu.org/software/hurd/open_issues/binutils.html#static>
lappend xfails "*-*-*"
}
}
run_ld_link_exec_tests $xfails $array_tests_static
 
catch "exec rm -f tmpdir/preinit tmpdir/init tmpdir/fini tmpdir/init-mixed" status
/trunk/gnu/binutils/ld/testsuite/ld-elf/tls_common.exp
0,0 → 1,72
# Expect script for .tls_common tests
# Copyright 2006, 2007, 2010 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.
#
# Written by Jakub Jelinek (jakub@redhat.com)
#
 
# Make sure that binutils can correctly handle ld output in ELF.
 
if { ![istarget *-*-linux*]
&& ![istarget *-*-gnu*] } {
return
}
 
if { [istarget *-*-linux*aout*]
|| [istarget *-*-linux*oldld*] } {
return
}
 
global as
global ld
global READELF
global srcdir
global subdir
global link_output
 
if { ![ld_assemble $as $srcdir/$subdir/tls_common.s tmpdir/tls_common.o ] } {
unresolved "tls_common"
return
}
 
if { ![ld_simple_link $ld tmpdir/tls_common1.o "-r tmpdir/tls_common.o"] } {
fail "tls_common"
return
}
 
if { ![ld_simple_link $ld tmpdir/tls_common "tmpdir/tls_common1.o"] } {
if { [string match "*not supported*" $link_output]
|| [string match "*unrecognized option*" $link_output] } {
unsupported "$ld_options is not supported by this target"
} elseif { [string match "*Warning*alignment*of common symbol*" $link_output] } {
fail "tls_common"
} else {
unresolved "tls_common"
}
return
}
 
set readelf_output [run_host_cmd "$READELF" "-l --wide tmpdir/tls_common"]
if ![regexp ".*TLS.*0x0+ 0x0+4 R .*" $readelf_output] then {
send_log "$readelf_output\n"
fail "tls_common"
return
}
 
pass "tls_common"
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkonce2.d
0,0 → 1,14
#source: linkonce1a.s
#source: linkonce1b.s
#ld: -emit-relocs
#objdump: -r
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
# generic elf targets don't emit relocs
 
.*: file format .*
 
RELOCATION RECORDS FOR \[.debug_frame\]:
OFFSET[ ]+TYPE[ ]+VALUE[ ]*
.*(NONE|unused|UNUSED).*\*ABS\*
 
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl2main.c
0,0 → 1,22
#include <stdio.h>
 
extern int foo;
extern void bar (void);
 
void
xxx (void)
{
printf ("MAIN\n");
}
 
int
main (void)
{
foo = 1;
bar ();
if (foo == -1)
printf ("OK1\n");
else if (foo == 1)
printf ("OK2\n");
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/header.d
0,0 → 1,5
# target: *-*-linux* *-*-gnu* *-*-vxworks
# ld: -T header.t -z max-page-size=0x100
# objdump: -hpw
 
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude3.s
0,0 → 1,16
.text
.type start,"function"
.global start
start:
.type _start,"function"
.global _start
_start:
.type __start,"function"
.global __start
__start:
.type main,"function"
.global main
main:
.long 0
.section .foo1,"e", %progbits
.byte 0,0,0,0
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9676.rd
0,0 → 1,5
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
#...
+[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9]+ +_?foo
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr2.d
0,0 → 1,8
#source: maxpage1.s
#ld: -shared -Ttext-segment 0x7000000 -z max-page-size=0x200000
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu*
 
#...
LOAD +0x0+ 0x0*7000000 0x0*7000000 0x0*[0-9a-f]+ 0x0*[0-9a-f]+ R[ W]E 0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage2.d
0,0 → 1,9
#source: maxpage1.s
#ld: -z max-page-size=0x100000
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
LOAD+.*0x100000
LOAD+.*0x100000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/group9.s
0,0 → 1,15
.section .text.foo,"axG",%progbits,foo,comdat
.globl foo
.type foo,%function
foo:
.byte 0
.section .data.foo,"axG",%progbits,foo,comdat
.globl foo.data
.type foo,%object
foo.data:
.byte 0
.section .text.bar,"axG",%progbits,bar,comdat
.globl bar
.type bar,%function
bar:
.long foo.data
/trunk/gnu/binutils/ld/testsuite/ld-elf/header.s
0,0 → 1,8
.text
.globl main
main:
.rept 0x40 - 0x15
.long 0xfedcba98
.endr
.data
.long 0x76543210
/trunk/gnu/binutils/ld/testsuite/ld-elf/header.t
0,0 → 1,8
ENTRY(main)
 
SECTIONS
{
. = 0x100 + SIZEOF_HEADERS;
.text : { *(.text) }
.data : { *(.data) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec64k.exp
0,0 → 1,206
# Expect script for tests for >64k sections
# Copyright 2002, 2003, 2005, 2006, 2007, 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.
#
# Written by Hans-Peter Nilsson (hp@axis.com)
#
 
# Exclude non-ELF targets.
 
if ![is_elf_format] {
return
}
 
# Targets using the generic linker backend don't sort section symbols
# before local symbols, so don't bother testing them.
if { [istarget "arc-*-*"]
|| [istarget "d30v-*-*"]
|| [istarget "dlx-*-*"]
|| [istarget "i960-*-*"]
|| [istarget "or32-*-*"]
|| [istarget "pj*-*-*"]
|| [istarget "m32r-*-*"] } {
return
}
 
# Test >64k sections, with and without -r. First, create the assembly
# files. Have a relocation to another section and one within the local
# section.
 
set test1 "64ksec-r"
set test2 "64ksec"
 
if { ![runtest_file_p $runtests $test1] \
&& ![runtest_file_p $runtests $test2] } {
return
}
 
set sfiles {}
set max_sec 66000
set secs_per_file 1000
for { set i 0 } { $i < $max_sec / $secs_per_file } { incr i } {
set sfile "$objdir/tmpdir/sec64-$i.s"
lappend sfiles $sfile
if [catch { set ofd [open $sfile w] } x] {
perror "$x"
unresolved $test1
unresolved $test2
return
}
 
if { $i == 0 } {
puts $ofd " .global start"
puts $ofd "start:"
puts $ofd " .global _start"
puts $ofd "_start:"
puts $ofd " .global __start"
puts $ofd "__start:"
puts $ofd " .global main"
puts $ofd "main:"
puts $ofd " .global foo_0"
puts $ofd "foo_0: .dc.a 0"
}
 
# Make sure the used section is not covered by common linker scripts.
# They should get separate section entries even without -r.
puts $ofd " .altmacro"
puts $ofd " .macro sec secn, secp"
if {![istarget "frv-*-*linux*"]} then {
puts $ofd " .section .foo.\\secn,\"ax\""
} else {
puts $ofd " .section .foo.\\secn,\"aw\""
}
puts $ofd " .global foo_\\secn"
puts $ofd "foo_\\secn:"
puts $ofd " .dc.a foo_\\secp"
puts $ofd "bar_\\secn:"
puts $ofd " .dc.a bar_\\secn"
puts $ofd " .endm"
if {![istarget "bfin-*-*"]} then {
puts $ofd " secn = [expr $i * $secs_per_file]"
} else {
puts $ofd " .set secn, [expr $i * $secs_per_file]"
}
puts $ofd " .rept $secs_per_file"
if {![istarget "bfin-*-*"]} then {
puts $ofd " secn = secn + 1"
} else {
puts $ofd " .set secn, secn + 1"
}
puts $ofd " sec %(secn), %(secn-1)"
puts $ofd " .endr"
 
close $ofd
}
 
if [catch { set ofd [open "tmpdir/$test1.d" w] } x] {
perror "$x"
unresolved $test1
unresolved $test2
return
}
 
# The ld-r linked file will contain relocation-sections too, so make it
# half the size in order to try and keep the test-time down.
 
# The m32r target generates both REL and RELA relocs (for historical
# reasons) so the expected number of sections will be much more than
# 68000, which throws this particular test right off.
if { ![istarget "m32r-*-*"] } then {
foreach sfile [lrange $sfiles 0 [expr [llength $sfiles] / 2]] {
puts $ofd "#source: $sfile"
}
puts $ofd "#ld: -r"
puts $ofd "#readelf: -W -Ss"
puts $ofd "There are 680.. section headers.*:"
puts $ofd "#..."
puts $ofd " \\\[ 0\\\] .* 680\[0-9\]\[0-9\]\[ \]+0\[ \]+0"
puts $ofd "#..."
puts $ofd " \\\[ \[0-9\]\\\] \.foo\.1\[ \]+PROGBITS\[ \]+.*"
puts $ofd "#..."
puts $ofd " \\\[65279\\\] (.rel\[a\]?)?\\.foo\\.\[0-9\]+ .*"
puts $ofd " \\\[65280\\\] (.rel\[a\]?)?\\.foo\\.\[0-9\]+ .*"
puts $ofd "#..."
puts $ofd " 340..: 0+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+68... "
puts $ofd "#..."
puts $ofd " 340..: 0+(2|4|8)\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[2-5\] bar_1$"
puts $ofd "#..."
puts $ofd ".* bar_34000$"
puts $ofd "#..."
# Global symbols are not in "alphanumeric" order, so we just check
# that the first and the last are present in any order (assuming no
# duplicates).
puts $ofd ".* (\[0-9\] foo_1|68... foo_34000)$"
puts $ofd "#..."
puts $ofd ".* (\[0-9\] foo_1|68... foo_34000)$"
puts $ofd "#pass"
close $ofd
run_dump_test "tmpdir/$test1"
}
 
if [catch { set ofd [open "tmpdir/$test2.d" w] } x] {
perror "$x"
unresolved $test2
return
}
 
# too big for d10v and msp
# lack of fancy orphan section handling causes overlap on fr30 and iq2000
if { ![istarget "d10v-*-*"]
&& ![istarget "msp*-*-*"]
&& ![istarget "fr30-*-*"]
&& ![istarget "iq2000-*-*"] } {
foreach sfile $sfiles { puts $ofd "#source: $sfile" }
if { [istarget "avr-*-*"] } then {
puts $ofd "#as: -mmcu=avr6"
puts $ofd "#ld: -mavr6"
} elseif { [istarget spu*-*-*] } {
puts $ofd "#ld: --local-store 0:0"
} else {
puts $ofd "#ld:"
}
puts $ofd "#readelf: -W -Ss"
puts $ofd "There are 660.. section headers.*:"
puts $ofd "#..."
puts $ofd " \\\[ 0\\\] .* 660..\[ \]+0\[ \]+0"
puts $ofd "#..."
puts $ofd " \\\[65279\\\] \\.foo\\.\[0-9\]+ .*"
puts $ofd " \\\[65280\\\] \\.foo\\.\[0-9\]+ .*"
puts $ofd "#..."
puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+660.. "
puts $ofd "#..."
puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[0-9\] bar_1$"
puts $ofd "#..."
puts $ofd ".* bar_66000$"
puts $ofd "#..."
# Global symbols are not in "alphanumeric" order, so we just check
# that the first and the last are present in any order (assuming no
# duplicates).
puts $ofd ".* (\[0-9\] foo_1|66... foo_66000)$"
puts $ofd "#..."
puts $ofd ".* (\[0-9\] foo_1|66... foo_66000)$"
puts $ofd "#pass"
close $ofd
run_dump_test "tmpdir/$test2"
}
 
for { set i 1 } { $i < $max_sec / $secs_per_file } { incr i } {
catch "exec rm -f tmpdir/dump$i.o" status
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl4b.out
0,0 → 1,6
bar OK1
bar OK3
MAIN1
MAIN2
OK1
OK3
/trunk/gnu/binutils/ld/testsuite/ld-elf/hash.d
0,0 → 1,17
#source: start.s
#readelf: -d -s -D
#ld: -shared --hash-style=gnu
#target: *-*-linux* *-*-gnu*
#notarget: mips*-*-*
 
#...
+0x[0-9a-z]+ +\(GNU_HASH\) +0x[0-9a-z]+
#...
+[0-9]+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +NOTYPE +GLOBAL +DEFAULT +[1-9] _start
#...
+[0-9]+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +NOTYPE +GLOBAL +DEFAULT +[1-9] main
#...
+[0-9]+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +NOTYPE +GLOBAL +DEFAULT +[1-9] start
#...
+[0-9]+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +NOTYPE +GLOBAL +DEFAULT +[1-9] __start
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/relro1.s
0,0 → 1,14
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.long 0
.data
.long 0
.section .data.rel.ro,"aw",%progbits
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/warn1.d
0,0 → 1,15
#source: start.s
#source: symbol1ref.s
#source: symbol1w.s
#ld: -T group.ld
#warning: ^[^\\n]*\): warning: witty one-liner$
#readelf: -s
#notarget: "sparc64-*-solaris2*" "sparcv9-*-solaris2*"
#xfail: "arc-*-*" "d30v-*-*" "dlx-*-*" "i960-*-*" "or32-*-*" "pj-*-*"
 
# Check that warnings are generated for the .gnu.warning.SYMBOL
# construct and that the symbol still appears as expected.
 
#...
+[0-9]+: +[0-9a-f]+ +[48] +FUNC +GLOBAL +DEFAULT +[1-9] symbol1
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr.s
0,0 → 1,20
.text
.globl main
.globl start
.globl _start
.globl __start
main:
start:
_start:
__start:
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
.section .bar,"ax","progbits"
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
.section .foo,"aw","progbits"
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
.data
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr.t
0,0 → 1,10
SECTIONS
{
. = -0x7ff00000;
.text : {*(.text .text.*)}
. = ALIGN(64);
.foo : { *(.foo) }
. = ALIGN(8192);
.data : AT (ADDR(.data)) { *(.data) }
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr2.d
0,0 → 1,10
#source: loadaddr.s
#ld: -T loadaddr2.t -T loadaddr.t -z max-page-size=0x200000
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
LOAD +0x000000 0xf*80000000 0xf*80000000 0x100050 0x100050 RWE 0x200000
LOAD +0x110000 0xf*80110000 0xf*80101000 0x0*10 0x0*10 R E 0x200000
LOAD +0x302000 0xf*80302000 0xf*80302000 0x0*10 0x0*10 RW 0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/tdata2.s
0,0 → 1,16
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.globl tdata
.section .tdata,"awT",%progbits
.type tdata,%object
.size tdata,1
tdata:
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr349-2.s
0,0 → 1,2
.section ".abcxyz","",%progbits
.long 2
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3f.s
0,0 → 1,2
.section .foo,"",%progbits
.long 5,5,5,5
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh4a.s
0,0 → 1,3
.section .eh_frame,"a",%progbits
.align 8
.zero 8
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage3c.d
0,0 → 1,12
#source: maxpage1.s
#as: --32
#ld: -m elf_i386 -z max-page-size=0x10000000 -T maxpage3.t
#readelf: -lS --wide
#target: x86_64-*-linux*
 
#...
\[[ 0-9]+\] \.data[ \t]+PROGBITS[ \t]+0*10000000[ \t]+[ \t0-9a-f]+WA?.*
#...
LOAD+.*0x10000000
LOAD+.*0x10000000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/beginwarn.c
0,0 → 1,9
static const char _evoke_link_warning_foo []
__attribute__ ((used, section (".gnu.warning.foo")))
= "function foo is deprecated";
 
extern void foo (void);
 
static void (*const init_array []) (void)
__attribute__ ((used, section (".init_array"), aligned (sizeof (void *))))
= { foo };
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr2.t
0,0 → 1,7
SECTIONS
{
.bar -0x7fef0000 : AT ((LOADADDR(.foo) + SIZEOF(.foo) + 4095) & ~(4095))
{ *(.bar) }
. = LOADADDR(.bar) + 0x200000;
}
INSERT BEFORE .data;
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11138-2.c
0,0 → 1,17
#include <stdio.h>
 
extern void foo (void);
 
void
bar (void)
{
printf ("MAIN bar\n");
}
 
int
main (void)
{
bar ();
foo ();
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude3a.d
0,0 → 1,10
#source: exclude3.s
#ld:
#readelf: -S --wide
#target: x86_64-*-* i?86-*-* ia64-*-*
 
#...
[ ]*\[.*\][ ]+NULL.*
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*
[ ]*\[.*\][ ]+.*STRTAB.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/foo.map
0,0 → 1,4
FOO {
global: foo;
local: *;
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/group2.d
0,0 → 1,20
#source: ../../../binutils/testsuite/binutils-all/group.s
#ld: -r
#readelf: -Sg --wide
#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
# xstormy also uses a non-standard script, putting .data before .text.
 
#...
\[[ 0-9]+\] \.group[ \t]+GROUP[ \t]+.*
#...
\[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG.*
#...
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG.*
#...
COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
\[[ 0-9]+\] .data.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/seg.d
0,0 → 1,21
#target: *-*-linux* *-*-gnu* *-*-vxworks
#source: seg.s
#ld: -T seg.t -z max-page-size=0x1000
#readelf: -l --wide
 
#...
Program Headers:
Type Offset VirtAddr.*
# On MIPS, the first segment is for .reginfo.
#...
LOAD .*
LOAD 0x0*001000 0xf*fffff000 0xf*fffff000 0x0*1000 0x0*1000 .*
# FRV adds a PT_GNU_STACK header
#...
Section to Segment mapping:
Segment Sections...
00 .*
# On MIPS, the first segment is for .reginfo.
#...
0. reset boot
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/empty2.d
0,0 → 1,11
#source: empty2.s
#ld:
#readelf: -s
 
#...
[ ]+[0-9]+:[ ]+0+[ ]+0[ ]+FILE[ ]+LOCAL[ ]+DEFAULT[ ]+ABS empty2.s
#...
[ ]+[0-9]+:[ ]+0*12345678[ ]+0[ ]+NOTYPE[ ]+LOCAL[ ]+DEFAULT[ ]+ABS constant
#...
[ ]+[0-9]+:[ ]+[0-9a-f]+[ ]+[0-9]+[ ]+FUNC[ ]+GLOBAL[ ]+DEFAULT[ ]+[1-9] _start
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan4.ld
0,0 → 1,13
/* The .foo section doesn't specify *any* objects, but the object
we're linking has sections named ".foo". Make sure these sections
are linked into the .foo output section anyway. The bug that was
fixed was that a new .foo output section would be created at
address 0. */
 
SECTIONS {
.foo 0x00001000 : {
}
.text 0x00002000 : {
*(.text);
}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/lma.s
0,0 → 1,4
.text
.global _start
_start:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl3main.cc
0,0 → 1,25
#include <stdio.h>
#include "dl3header.h"
 
extern void f (void);
 
int
main (void)
{
try
{
f();
}
catch (A a)
{
if (a.i == 42)
printf ("OK\n");
else
printf ("BAD1\n");
}
catch (...)
{
printf ("BAD2\n");
}
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/stab.d
0,0 → 1,14
#source: start.s
#as: -gstabs
#readelf: -S --wide
#ld:
#notarget: "ia64-*-*" "alpha*"
 
# Disabled on alpha because the entry point may be above 4GB but the stabs
# value on 32 bits.
 
#...
\[[0-9 ][0-9]\] \.stab +PROGBITS +0+ [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ +[1-9]+ +0.*
#...
\[[0-9 ][0-9]\] \.stabstr +STRTAB +0+ [0-9a-f]+ [0-9a-f]+ 00 +0 +0.*
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl4xxx.c
0,0 → 1,13
#include <stdio.h>
 
void
xxx1 (void)
{
printf ("DSO1\n");
}
 
void
xxx2 (void)
{
printf ("DSO2\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/seg.s
0,0 → 1,6
.section boot,"ax"
.4byte 0x76543210
.section reset,"ax"
.4byte 0xfedcba98
.text
.4byte 0x12345678
/trunk/gnu/binutils/ld/testsuite/ld-elf/symbol2w.s
0,0 → 1,6
.section .gnu.warning,"a",%progbits
.global Foo
.type Foo, %object
.size Foo, 20
Foo:
.string "function 'Foo' used"
/trunk/gnu/binutils/ld/testsuite/ld-elf/seg.t
0,0 → 1,16
 
SECTIONS
{
reset - 4 :
{
*(reset)
}
boot - 0x1000 :
{
*(boot)
} = 0xffff
. = + SIZEOF_HEADERS;
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh-frame-hdr.d
0,0 → 1,9
#source: eh-frame-hdr.s
#ld: -e _start --eh-frame-hdr
#objdump: -hw
#target: cfi
#xfail: avr*-*-*
# avr doesn't support shared libraries.
#...
[0-9] .eh_frame_hdr 0*[12][048c] .*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh-group.exp
0,0 → 1,72
# Expect script for .eh_frame entries to a removed section.
# Copyright 2008, 2009 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.
#
 
#
# Written by Jan Kratochvil (jan.kratochvil@redhat.com)
#
# .eh_frame with relocations to a removed (group) section did result to:
# error in tmpdir/eh-group.o(.eh_frame); no .eh_frame_hdr table will be created.
# The purpose of this test is to merge two .o files with -r and then link this
# merged file (containing a discarded R_X86_64_NONE relocation) to the final
# executable trying to create .eh_frame_hdr. It needs a separate .exp file due
# to the requirement of two `ld' runs.
 
# Exclude non-CFI (such as ia64) targets.
 
if {![check_as_cfi]} {
return
}
 
# The test uses ELF .section directive
if ![is_elf_format] {
return
}
 
# alpha-linux-gnu does not support 64-bit relocations:
# relocation truncated to fit: REFLONG against `.gcc_except_table'
# arm-eabi does not support 64-bit relocations:
# bad relocation fixup type (1)
set testname "Guess the target size from eh-group1size.o"
if [ld_assemble $as "$srcdir/$subdir/eh-group1.s" "tmpdir/eh-group1size.o"] {
pass $testname
} else {
fail $testname
}
 
set as_options ""
if [is_elf64 "tmpdir/eh-group1size.o"] {
set as_options "$as_options --defsym ELF64=1"
}
 
set build_tests_ld [list \
[list "Build eh-group1.o" \
"-r" "$as_options" \
{eh-group1.s eh-group2.s} {} "eh-group.o"] \
]
 
run_ld_link_tests $build_tests_ld
 
set testname "Link eh-group.o to eh-group"
if [ld_simple_link $ld "tmpdir/eh-group" "-e _start tmpdir/eh-group.o"] {
pass $testname
} else {
fail $testname
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/empty2.s
0,0 → 1,18
.file "empty2.s"
.equiv constant, 0x12345678
.section .bss
bar:
.text
.type start,"function"
.global start
start:
.type _start,"function"
.global _start
_start:
.type __start,"function"
.global __start
__start:
.type main,"function"
.global main
main:
.long constant
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr3.d
0,0 → 1,4
#source: maxpage1.s
#ld: -Ttext-segment 0x10000 -z max-page-size=0x200000
#target: *-*-linux-gnu *-*-gnu*
#warning: .*address of `text-segment' isn't multiple of maximum page size
/trunk/gnu/binutils/ld/testsuite/ld-elf/depaudit2.rd
0,0 → 1,3
#...
.*Dependency audit library: \[tmpdir/audit.so:tmpdir/audit2.so:tmpdir/audit3.so\].*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/compress.exp
0,0 → 1,59
# Expect script for ELF compressed debug section tests.
# Copyright 2010 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.
#
 
# Exclude non-ELF targets.
 
if ![is_elf_format] {
return
}
 
# The following tests require running the executable generated by ld.
if ![isnative] {
return
}
 
# Check if compiler works
if { [which $CC] == 0 } {
return
}
 
global as
if { ![ld_assemble $as "--compress-debug-sections $srcdir/$subdir/empty.s" tmpdir/empty.o ] } {
unsupported "linker compressed debug sections"
}
 
set build_tests {
{"Build libfoo.so with compressed debug sections"
"-shared" "-fPIC -g -Wa,--compress-debug-sections"
{foo.c} {} "libfoo.so"}
{"Build libbar.so with compressed debug sections"
"-shared" "-fPIC -g -Wa,--compress-debug-sections"
{begin.c end.c} {} "libbar.so"}
}
 
set run_tests {
{"Run normal with libfoo.so with compressed debug sections"
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" "-Wa,--compress-debug-sections"
{main.c} "normal" "normal.out"}
}
 
run_cc_link_tests $build_tests
run_ld_link_exec_tests [] $run_tests
/trunk/gnu/binutils/ld/testsuite/ld-elf/table.s
0,0 → 1,3
.section .gcc_except_table,"a",%progbits
/trunk/gnu/binutils/ld/testsuite/ld-elf/frame.s
0,0 → 1,2
.section .eh_frame,"a",%progbits
.4byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/relocatable.d
0,0 → 1,10
#name: relocatable with script
#source: simple.s
#ld: -r -T relocatable.t
#readelf: -S --wide
#xfail: hppa-*-*
 
#...
\[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t]+0+800000[ \t0-9a-f]+AX.*
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t]+0+900000[ \t0-9a-f]+WA.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9679-1.c
0,0 → 1,5
int
foo (void)
{
return 1;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh-frame-hdr.s
0,0 → 1,6
.text
.global _start
_start:
.cfi_startproc
.skip 16
.cfi_endproc
/trunk/gnu/binutils/ld/testsuite/ld-elf/merge2.d
0,0 → 1,17
#source: merge2.s
#ld: -T merge.ld
#objdump: -s
#xfail: "arc-*-*" "d30v-*-*" "dlx-*-*" "hppa64-*-*"
#xfail: "i960-*-*" "ip2k-*-*" "or32-*-*" "pj-*-*"
 
.*: file format .*elf.*
 
Contents of section .text:
1000 (3010)?0000(1030)? (3210)?0000(1032)? (3110)?0000(1031)? (3410)?0000(1034)? .*
1010 (4010)?0000(1040)? (3810)?0000(1038)? (4810)?0000(1048)? (3c10)?0000(103c)? .*
1020 (5010)?0000(1050)? (5410)?0000(1054)? (5810)?0000(1058)? (5010)?0000(1050)? .*
Contents of section .rodata:
1030 61626300 62000000 (78563412|12345678) 99999999 .*
1040 (78563412|12345678) 00000000 99999999 00000000 .*
1050 (78563412|12345678) 99999999 00000000 .*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl4.c
0,0 → 1,24
#include <stdio.h>
 
int foo1;
int foo2;
 
extern void xxx1 (void);
extern void xxx2 (void);
 
void
bar (int x)
{
if (foo1 == 1)
printf ("bar OK1\n");
else if (foo1 == 0)
printf ("bar OK2\n");
if (foo2 == 1)
printf ("bar OK3\n");
else if (foo2 == 0)
printf ("bar OK4\n");
foo1 = -1;
foo2 = -1;
xxx1 ();
xxx2 ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/relro2.s
0,0 → 1,5
.text
.globl x
.type x, @function
x:
jmp foo@PLT
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage3.t
0,0 → 1,7
SECTIONS
{
.text : {*(.text)}
. = ALIGN(CONSTANT (MAXPAGESIZE));
.data : {*(.data)}
/DISCARD/ : {*(*)}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/init.out
0,0 → 1,3
init array 0
init array 1
init array 2
/trunk/gnu/binutils/ld/testsuite/ld-elf/extract-symbol-1.ld
0,0 → 1,18
ENTRY(_entry)
PHDRS
{
data PT_LOAD AT (0);
}
SECTIONS
{
. = 0x10000;
.foo : { *(.foo) } :data
 
. = 0x20000;
.bar : { *(.bar) } :data
 
/DISCARD/ : { *(*) }
 
_entry = 0x30000;
linker_symbol = 0x40000;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/warn2.d
0,0 → 1,17
#source: start.s
#source: symbol2ref.s
#source: symbol2w.s
#ld: -T group.ld
#warning: ^[^\\n]*\.[obj]+: warning: function 'Foo' used$
#readelf: -s
#notarget: "sparc64-*-solaris2*" "sparcv9-*-solaris2*"
#xfail: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-elf i860-*-* i960-*-*
#xfail: iq*-*-* mn10200-*-* moxie-*-* msp*-*-* mt-*-* or32-*-* pj*-*-*
# if not using elf32.em, you don't get fancy section handling
 
# Check that warnings are generated for the symbols in .gnu.warning
# construct and that the symbol still appears as expected.
 
#...
+[0-9]+: +[0-9a-f]+ +20 +OBJECT +GLOBAL +DEFAULT +[1-9] Foo
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl6cmain.c
0,0 → 1,33
#include <stdio.h>
#include <dlfcn.h>
 
int bar = -20;
 
int
main (void)
{
int ret = 0;
void *handle;
void (*fcn) (void);
 
handle = dlopen("./tmpdir/libdl6c.so", RTLD_GLOBAL|RTLD_LAZY);
if (!handle)
{
printf("dlopen ./tmpdir/libdl6c.so: %s\n", dlerror ());
return 1;
}
 
fcn = (void (*)(void)) dlsym(handle, "foo");
if (!fcn)
{
printf("dlsym foo: %s\n", dlerror ());
ret += 1;
}
else
{
(*fcn) ();
}
 
dlclose (handle);
return ret;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/group1a.s
0,0 → 1,4
.section .text,"axG",%progbits,foo_group,comdat
.weak foo
foo:
.word 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/relocatable.t
0,0 → 1,8
SECTIONS
{
. = 0x800000;
.text : { *(.text) }
. = 0x900000;
.data : { *(.data) }
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/tdata3.s
0,0 → 1,23
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
 
.section .tdata,"awT",%progbits
.type tdata,%object
.size tdata,1
tdata:
.byte 17
 
.section .tbss,"awT",%nobits
.p2align 10
.type tbss, %object
.size tbss, 1024
tbss:
.zero 1024
/trunk/gnu/binutils/ld/testsuite/ld-elf/merge2.s
0,0 → 1,58
.section .rodata.str,"aMS","progbits",1
.LC0:
.asciz "abc"
.LC1:
.asciz "c"
.LC2:
.asciz "bc"
.LC3:
.asciz "b"
 
 
.section .rodata.str2,"aMS","progbits",4
.p2align 2
.LC4:
.long 0x12345678
.long 0
.LC5:
.long 0x12345678
.long 0x99999999
.long 0x12345678
.long 0
.LC6:
.long 0x99999999
.long 0
.LC7:
.long 0x99999999
.long 0x12345678
.long 0
 
 
.section .rodata.m,"aM","progbits",4
.p2align 2
.LC8:
.long 0x12345678
.LC9:
.long 0x99999999
.LC10:
.long 0
.LC11:
.long 0x12345678
 
 
.text
.global _start
_start:
.long .LC0
.LT0:
.long .LC1
.long .LC2
.long .LC3
.long .LC4
.long .LC5
.long .LC6
.long .LC7
.long .LC8
.long .LC9
.long .LC10
.long .LC11
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr3.t
0,0 → 1,16
 
MEMORY
{
rom (rx) : ORIGIN = 0x100, LENGTH = 0x100
ram (rwx) : ORIGIN = 0x200, LENGTH = 0x100
 
}
 
SECTIONS
{
.text : {*(.text .text.*)} >rom
.data : {data_load = LOADADDR (.data);
data_start = ADDR (.data);
*(.data .data.*)} >ram AT>rom
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude3b.d
0,0 → 1,9
#source: exclude3.s
#ld: --shared
#readelf: -S --wide
#target: x86_64-*-* i?86-*-*
 
#...
[ ]*\[.*\][ ]+\.dynamic[ ]+DYNAMIC.*
[ ]*\[.*\][ ]+.*STRTAB.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/wrap.exp
0,0 → 1,57
# Expect script for wrap ELF tests.
# Copyright 2006, 2007 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.
#
 
# Exclude non-ELF targets.
 
if ![is_elf_format] {
return
}
 
# The following tests require running the executable generated by ld.
if ![isnative] {
return
}
 
# Check if compiler works
if { [which $CC] == 0 } {
return
}
 
set build_tests {
{"Build libwrap1a.so"
"-shared" "-fPIC"
{wrap1a.c} {} "libwrap1a.so"}
{"Build libwrap1b.so"
"-shared tmpdir/libwrap1a.so" "-fPIC"
{wrap1b.c} {} "libwrap1b.so"}
}
 
set run_tests {
{"Run with libwrap1a.so and libwrap1b.so"
"--wrap par tmpdir/libwrap1a.so tmpdir/libwrap1b.so" ""
{wrap1.c} "wrap1" "wrap1.out"}
{"Run with libwrap1b.so and libwrap1a.so"
"--wrap par tmpdir/libwrap1b.so tmpdir/libwrap1a.so" ""
{wrap1.c} "wrap1" "wrap1.out"}
}
 
run_cc_link_tests $build_tests
run_ld_link_exec_tests [] $run_tests
/trunk/gnu/binutils/ld/testsuite/ld-elf/init-fini-arrays.d
0,0 → 1,12
#source: init-fini-arrays.s
#ld: -r
#readelf: -S --wide
#xfail: cr16-*-* crx-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
 
#...
\[[ 0-9]+\] \.init_array\.01000[ \t]+PROGBITS[ \t0-9a-f]+WA?.*
#...
\[[ 0-9]+\] \.fini_array\.01000[ \t]+PROGBITS[ \t0-9a-f]+WA?.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl3header.h
0,0 → 1,5
struct A
{
int i;
A (int i): i(i) {}
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh5a.s
0,0 → 1,27
.text
.cfi_startproc simple
.cfi_def_cfa 0, 16
.long 0
.cfi_endproc
 
.cfi_startproc simple
.cfi_personality 3, my_personality_v1
.long 0
.cfi_def_cfa 0, 16
.cfi_endproc
 
.cfi_startproc simple
.cfi_def_cfa 0, 16
.long 0
.cfi_endproc
 
.cfi_startproc simple
.cfi_personality 3, my_personality_v1
.cfi_lsda 12, 0xdeadbeef
.long 0
.cfi_def_cfa 0, 16
.cfi_endproc
 
.globl my_personality_v1
my_personality_v1:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/init.c
0,0 → 1,34
#include <stdio.h>
 
static void
init_0 (void)
{
printf ("init array 0\n");
}
 
static void
init_1 (void)
{
printf ("init array 1\n");
}
 
static void
init_2 (void)
{
printf ("init array 2\n");
}
 
void (*const init_array []) (void)
__attribute__ ((section (".init_array"),
aligned (sizeof (void *)))) =
{
&init_0,
&init_1,
&init_2
};
 
int
main (void)
{
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr4.d
0,0 → 1,8
#source: maxpage1.s
#ld: -z max-page-size=0x10000 -Ttext-segment 0x10000
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu*
 
#...
LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x10000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/init-fini-arrays.s
0,0 → 1,6
.section .init_array.01000,"aw",%progbits
.align 4
.word 0
.section .fini_array.01000,"aw",%progbits
.align 4
.word 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/dynsym1.d
0,0 → 1,8
#source: empty.s
#ld: -shared
#readelf: --dyn-syms
#target: *-*-linux* *-*-gnu*
 
#...
+[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9] _start
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage4.d
0,0 → 1,9
#source: maxpage1.s
#as: --32
#ld: -z max-page-size=0x200000 -T maxpage4.t
#readelf: -l --wide
#target: x86_64-*-linux*
 
#...
LOAD+.*0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan2.d
0,0 → 1,11
#source: orphan2.s
#ld: -r
#readelf: -S --wide
#xfail: xstormy*-*-*
# xstormy uses a non-standard script, resulting is unexpected section order
 
#...
\[[ 0-9]+\] \.text[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
#...
\[[ 0-9]+\] \.modinfo[ \t]+PROGBITS[ \t0-9a-f]+A.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh1.d
0,0 → 1,33
#source: eh1.s
#source: eh1a.s
#ld:
#readelf: -wf
#target: x86_64-*-*
 
Contents of the .eh_frame section:
 
00000000 00000014 00000000 CIE
Version: 1
Augmentation: ""
Code alignment factor: 1
Data alignment factor: -8
Return address column: 16
 
DW_CFA_def_cfa: r7 \(rsp\) ofs 8
DW_CFA_offset: r16 \(rip\) at cfa-8
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
DW_CFA_advance_loc: 0 to 00400078
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r6 \(rbp\) at cfa-16
DW_CFA_advance_loc: 0 to 00400078
DW_CFA_def_cfa_register: r6 \(rbp\)
 
00000038 ZERO terminator
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9679-2.c
0,0 → 1,13
extern int foo (void) __attribute__((weak,__visibility__ ("hidden")));
 
int
foo (void)
{
return 1;
}
 
int
bar (void)
{
return foo ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/wrap1.out
0,0 → 1,3
__wrap_par
__real_par
par
/trunk/gnu/binutils/ld/testsuite/ld-elf/audit.exp
0,0 → 1,65
# Expect script for various ELF tests.
# Copyright 2009 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.
#
 
# Exclude non-ELF targets.
 
if ![is_elf_format] {
return
}
 
# The following tests require running the executable generated by ld.
if ![isnative] {
return
}
 
# Check if compiler works
if { [which $CC] == 0 } {
return
}
 
set build_tests {
{"Run with -paudit.so"
"-Wl,--audit=tmpdir/audit.so" ""
{main.c} {{"readelf" {-d} "audit.rd"}} "audit.out"}
{"Run with -Paudit.so"
"-Wl,-Ptmpdir/audit.so" ""
{main.c} {{"readelf" {-d} "depaudit.rd"}} "depaudit.out"}
{"Run with --depaudit=audit.so"
"-Wl,--depaudit=tmpdir/audit.so" ""
{main.c} {{"readelf" {-d} "depaudit.rd"}} "depaudit2.out"}
{"Run with shared with --audit"
"-shared -Wl,--audit=tmpdir/audit.so" "-fPIC"
{main.c} {} "libusesaudit.so"}
{"Run with shared with --audit"
"-shared -Wl,--audit=tmpdir/audit.so -Wl,--audit=tmpdir/audit2.so \
-Wl,--audit=tmpdir/audit3.so"
"-fPIC"
{main.c} {} "libusesaudit2.so"}
{"Run with -lusesaudit"
"-Ltmpdir/ -lusesaudit" ""
{main.c} {{"readelf" {-d} "depaudit.rd"}} "useslibusesaudit.out"}
{"Run with -lusesaudit -lusesaudit2"
"-Ltmpdir/ -lusesaudit -lusesaudit2" ""
{main.c} {{"readelf" {-d} "depaudit2.rd"}} "useslibusesaudit2.out"}
}
 
run_cc_link_tests $build_tests
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/maxpage4.t
0,0 → 1,9
OUTPUT_FORMAT("elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SECTIONS
{
.text : {*(.text)}
.data : {*(.data)}
/DISCARD/ : {*(*)}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan2.s
0,0 → 1,4
.text
.long 0
.section .modinfo,"a","progbits"
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/dwarf1main.c
0,0 → 1,10
#include "dwarf1.h"
 
struct foo_s foo;
 
int
main (void)
{
doprintf ();
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/tls_common.s
0,0 → 1,11
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.tls_common foo,4,4
/trunk/gnu/binutils/ld/testsuite/ld-elf/discard1.d
0,0 → 1,9
#source: discard1.s
#ld: -r -T discard.ld
#readelf: -r
#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
Relocation section '.rel.*.debug_info' at offset 0x[0-9a-z]+ contains 1 entries:
[ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.*
[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0-9a-f]+[ \t]+bar.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/compress1.s
0,0 → 1,216
/* This testcase is derived from a similar test in GDB.
 
Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
 
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, see <http://www.gnu.org/licenses/>. */
 
/* Dummy function to provide debug information for. */
 
.text
.Lbegin_text1:
.globl func_cu2
.type func_cu2, %function
func_cu2:
.Lbegin_func_cu2:
.int 0
.Lend_func_cu2:
.size func_cu2, .-func_cu2
.Lend_text1:
 
/* Debug information */
 
.section .debug_info
.Lcu1_begin:
/* CU header */
.4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
.Lcu1_start:
.2byte 2 /* DWARF Version */
.4byte .Labbrev1_begin /* Offset into abbrev section */
.byte 4 /* Pointer size */
 
/* CU die */
.uleb128 1 /* Abbrev: DW_TAG_compile_unit */
.4byte .Lline1_begin /* DW_AT_stmt_list */
.4byte .Lend_text1 /* DW_AT_high_pc */
.4byte .Lbegin_text1 /* DW_AT_low_pc */
.ascii "file1.txt\0" /* DW_AT_name */
.ascii "GNU C 3.3.3\0" /* DW_AT_producer */
.byte 1 /* DW_AT_language (C) */
 
/* func_cu2 */
.uleb128 2 /* Abbrev: DW_TAG_subprogram */
.byte 1 /* DW_AT_external */
.byte 1 /* DW_AT_decl_file */
.byte 2 /* DW_AT_decl_line */
.ascii "func_cu2\0" /* DW_AT_name */
.4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
.4byte .Lbegin_func_cu2 /* DW_AT_low_pc */
.4byte .Lend_func_cu2 /* DW_AT_high_pc */
.byte 1 /* DW_AT_frame_base: length */
.byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
 
.Ltype_int:
.uleb128 3 /* Abbrev: DW_TAG_base_type */
.ascii "int\0" /* DW_AT_name */
.byte 4 /* DW_AT_byte_size */
.byte 5 /* DW_AT_encoding */
 
.byte 0 /* End of children of CU */
 
.Lcu1_end:
 
/* Line table */
.section .debug_line
.Lline1_begin:
.4byte .Lline1_end - .Lline1_start /* Initial length */
.Lline1_start:
.2byte 2 /* Version */
.4byte .Lline1_lines - .Lline1_hdr /* header_length */
.Lline1_hdr:
.byte 1 /* Minimum insn length */
.byte 1 /* default_is_stmt */
.byte 1 /* line_base */
.byte 1 /* line_range */
.byte 0x10 /* opcode_base */
 
/* Standard lengths */
.byte 0
.byte 1
.byte 1
.byte 1
.byte 1
.byte 0
.byte 0
.byte 0
.byte 1
.byte 0
.byte 0
.byte 1
.byte 0
.byte 0
.byte 0
 
/* Include directories */
.byte 0
 
/* File names */
.ascii "file1.txt\0"
.uleb128 0
.uleb128 0
.uleb128 0
 
.byte 0
 
.Lline1_lines:
.byte 0 /* DW_LNE_set_address */
.uleb128 5
.byte 2
.4byte .Lbegin_func_cu2
 
.byte 3 /* DW_LNS_advance_line */
.sleb128 3 /* ... to 4 */
 
.byte 1 /* DW_LNS_copy */
 
.byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
 
.byte 0 /* DW_LNE_set_address */
.uleb128 5
.byte 2
.4byte .Lend_func_cu2
 
.byte 0 /* DW_LNE_end_of_sequence */
.uleb128 1
.byte 1
 
.Lline1_end:
 
/* Abbrev table */
.section .debug_abbrev
.Labbrev1_begin:
.uleb128 1 /* Abbrev code */
.uleb128 0x11 /* DW_TAG_compile_unit */
.byte 1 /* has_children */
.uleb128 0x10 /* DW_AT_stmt_list */
.uleb128 0x6 /* DW_FORM_data4 */
.uleb128 0x12 /* DW_AT_high_pc */
.uleb128 0x1 /* DW_FORM_addr */
.uleb128 0x11 /* DW_AT_low_pc */
.uleb128 0x1 /* DW_FORM_addr */
.uleb128 0x3 /* DW_AT_name */
.uleb128 0x8 /* DW_FORM_string */
.uleb128 0x25 /* DW_AT_producer */
.uleb128 0x8 /* DW_FORM_string */
.uleb128 0x13 /* DW_AT_language */
.uleb128 0xb /* DW_FORM_data1 */
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
 
.uleb128 2 /* Abbrev code */
.uleb128 0x2e /* DW_TAG_subprogram */
.byte 0 /* has_children */
.uleb128 0x3f /* DW_AT_external */
.uleb128 0xc /* DW_FORM_flag */
.uleb128 0x3a /* DW_AT_decl_file */
.uleb128 0xb /* DW_FORM_data1 */
.uleb128 0x3b /* DW_AT_decl_line */
.uleb128 0xb /* DW_FORM_data1 */
.uleb128 0x3 /* DW_AT_name */
.uleb128 0x8 /* DW_FORM_string */
.uleb128 0x49 /* DW_AT_type */
.uleb128 0x13 /* DW_FORM_ref4 */
.uleb128 0x11 /* DW_AT_low_pc */
.uleb128 0x1 /* DW_FORM_addr */
.uleb128 0x12 /* DW_AT_high_pc */
.uleb128 0x1 /* DW_FORM_addr */
.uleb128 0x40 /* DW_AT_frame_base */
.uleb128 0xa /* DW_FORM_block1 */
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
 
.uleb128 3 /* Abbrev code */
.uleb128 0x24 /* DW_TAG_base_type */
.byte 0 /* has_children */
.uleb128 0x3 /* DW_AT_name */
.uleb128 0x8 /* DW_FORM_string */
.uleb128 0xb /* DW_AT_byte_size */
.uleb128 0xb /* DW_FORM_data1 */
.uleb128 0x3e /* DW_AT_encoding */
.uleb128 0xb /* DW_FORM_data1 */
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
 
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
 
.section .debug_pubnames,"",%progbits
.4byte 0x19
.2byte 0x2
.4byte .Lcu1_begin
.4byte 0x43
.4byte 0x25
.string "func_cu2"
.4byte 0x0
.section .debug_aranges,"",%progbits
.4byte 0x1c
.2byte 0x2
.4byte .Lcu1_begin
.byte 0x4
.byte 0x0
.2byte 0x0
.2byte 0x0
.4byte .Lbegin_text1
.4byte .Lbegin_text1-.Lend_text1
.4byte 0x0
.4byte 0x0
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh1.s
0,0 → 1,47
.text
.globl _start
.type _start, %function
_start:
.LFB2:
.LCFI0:
.LCFI1:
.LFE2:
.size _start, .-_start
.section .eh_frame,"a",%progbits
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.string ""
.uleb128 0x1
.sleb128 -8
.byte 0x10
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.quad .LFB2
.quad .LFE2-.LFB2
.byte 0x4
.long .LCFI0-.LFB2
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xd
.uleb128 0x6
.byte 0x0
.byte 0x0
.byte 0x0
.byte 0x0
.LEFDE1:
/trunk/gnu/binutils/ld/testsuite/ld-elf/group1b.s
0,0 → 1,6
.section .text,"axG",%progbits,foo_group,comdat
.global foo
.global bar
foo:
.word 0
bar:
/trunk/gnu/binutils/ld/testsuite/ld-elf/discard1.s
0,0 → 1,11
.globl bar
.data
bar:
.long 1
.section .discard,"aw",%progbits
.align 4
there:
.long 2
.section .debug_info,"",%progbits
.long bar
.long there
/trunk/gnu/binutils/ld/testsuite/ld-elf/endprotected.c
0,0 → 1,8
#include <stdio.h>
 
__attribute__ ((visibility ("protected")))
void
foo ()
{
printf ("TEST1\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude3c.d
0,0 → 1,7
#source: exclude3.s
#ld: -r
#readelf: -S --wide
 
#...
[ ]*\[.*\][ ]+\.foo1[ ]+PROGBITS.*[ ]+E[ ]+.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec-to-seg.exp
0,0 → 1,101
# Test the assigment of sections to segments.
#
# Copyright 2008, 2010 Free Software Foundation, Inc.
# Contributed by Red Hat.
#
# 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.
 
set testname "assignment of ELF sections to segments"
 
if {! [is_elf_format] } {
unsupported $testname
return
}
 
if { ! [ld_assemble $as $srcdir/$subdir/sec-to-seg1.s tmpdir/sec-to-seg1.o]
|| ! [ld_assemble $as $srcdir/$subdir/sec-to-seg2.s tmpdir/sec-to-seg2.o]} then {
unresolved $testname
return
}
 
proc sec_to_seg_test { testname scriptname same_seg } {
global srcdir
global subdir
global ld
global exec_output
global READELF
if {! [ld_simple_link $ld tmpdir/sec-to-seg "-T $srcdir/$subdir/$scriptname tmpdir/sec-to-seg1.o tmpdir/sec-to-seg2.o"] } then {
fail $testname
return 0
}
 
send_log "$READELF --program-headers --section-headers tmpdir/sec-to-seg\n"
set exec_output [run_host_cmd "$READELF" "--program-headers --section-headers tmpdir/sec-to-seg"]
 
if { $same_seg == 1 } {
if {! [regexp ".*.sec1 .sec2" $exec_output] } {
fail $testname
return 0
}
} else {
if { [regexp ".*.sec1 .sec2" $exec_output] } {
fail $testname
return 0
}
}
 
pass $testname
return 1
}
 
# Assuming a pagesize of 0x1000 then:
#
# Test Sec1 End Sec 2 Start Expected Result
# ---- -------- ----------- ---------------
# A 00001042 00001043 Both sections on same page: assign to same segment.
# B 00001042 00002044 Sections on adjacent pages: assign to same segment.
# C 00001042 00003044 Sections on disjoint pages: assign to separate segments.
 
# These targets have a pagesize of 1, so they will always end up
# placing the two sections in separate segments in the B test.
if { [istarget avr-*-*]
|| [istarget cr16-*-*]
|| [istarget crx-*-*]
|| [istarget dlx-*-*]
|| [istarget h8300-*-*]
|| [istarget i960-*-*]
|| [istarget ip2k-*-*]
|| [istarget m32r-*-*]
|| [istarget m88k-*-*]
|| [istarget microblaze-*-*]
|| [istarget moxie-*-*]
|| [istarget msp430-*-*]
|| [istarget mt-*-*]
} {
set B_test_same_seg 0
} else {
set B_test_same_seg 1
}
 
sec_to_seg_test "assignment of ELF sections to segments (same page)" "sec-to-seg-script-same-page.t" 1
sec_to_seg_test "assignment of ELF sections to segments (adjacent pages)" "sec-to-seg-script-adjoining-pages.t" $B_test_same_seg
sec_to_seg_test "assignment of ELF sections to segments (disjoint pages)" "sec-to-seg-script-disjoint-pages.t" 0
 
 
# FIXME: Add more tests to check other rules of section to segment assignment.
/trunk/gnu/binutils/ld/testsuite/ld-elf/group4.d
0,0 → 1,20
#source: ../../../binutils/testsuite/binutils-all/group-2.s
#ld: -r
#readelf: -Sg --wide
#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
# xstormy also uses a non-standard script, putting .data before .text.
 
#...
\[[ 0-9]+\] .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]+\] `.group' \[.text.foo\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
\[[ 0-9]+\] .data.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/overlay.d
0,0 → 1,12
# ld: -T overlay.t -u __load_start_text1 -u __load_start_text2 -u __load_stop_text1 -u __load_stop_text2
#readelf: -s
 
#...
[ ]+[0-9]+:[ ]+0*4000[ ]+0[ ]+NOTYPE[ ]+GLOBAL[ ]+DEFAULT[ ]+ABS __load_start_text1
#...
[ ]+[0-9]+:[ ]+0*4010[ ]+0[ ]+NOTYPE[ ]+GLOBAL[ ]+DEFAULT[ ]+ABS __load_start_text2
#...
[ ]+[0-9]+:[ ]+0*4030[ ]+0[ ]+NOTYPE[ ]+GLOBAL[ ]+DEFAULT[ ]+ABS __load_stop_text2
#...
[ ]+[0-9]+:[ ]+0*4010[ ]+0[ ]+NOTYPE[ ]+GLOBAL[ ]+DEFAULT[ ]+ABS __load_stop_text1
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr3a.d
0,0 → 1,9
#source: loadaddr.s
#ld: -T loadaddr3.t -z max-page-size=0x200000
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
LOAD +0x000000 0x0*00000000 0x0*00000000 0x0*0110 0x0*0110 R E 0x.*
LOAD +0x000200 0x0*00000200 0x0*00000110 0x0*0010 0x0*0010 RW 0x.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/unknown.d
0,0 → 1,7
#source: ../../../binutils/testsuite/binutils-all/unknown.s
#ld: -r
#readelf: -S
 
#...
\[[ 0-9]+\] \.foo[ \t]+NOTE[ \t]+.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/overlay.s
0,0 → 1,6
.section .text1,"ax",%progbits
.space 0x10
.section .text2,"ax",%progbits
.space 0x20
.text
.space 0x30
/trunk/gnu/binutils/ld/testsuite/ld-elf/overlay.t
0,0 → 1,10
SECTIONS
{
.text : { *(.text) }
OVERLAY 0x1000 : AT (0x4000)
{
.text1 {*(.text1)}
.text2 {*(.text2)}
}
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh5b.s
0,0 → 1,35
.text
.cfi_startproc simple
.long 0
.cfi_def_cfa 0, 16
.long 0
.cfi_endproc
 
.cfi_startproc simple
.cfi_personality 3, my_personality_v0
.long 0
.cfi_def_cfa 0, 16
.cfi_endproc
 
.cfi_startproc simple
.long 0
.cfi_def_cfa 0, 16
.long 0
.cfi_endproc
 
.cfi_startproc simple
.cfi_personality 3, my_personality_v0
.cfi_lsda 12, 0xdeadbeef
.long 0
.cfi_def_cfa 0, 16
.cfi_endproc
 
.globl main
.globl start
.globl _start
.globl __start
main:
start:
_start:
__start:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr5.d
0,0 → 1,4
#source: maxpage1.s
#ld: -shared -z max-page-size=0x200000 -Ttext-segment 0x10000
#target: *-*-linux-gnu *-*-gnu*
#warning: .*address of `text-segment' isn't multiple of maximum page size
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9676-1.c
0,0 → 1,15
extern int foo (void) __attribute__((section (".gnu.linkonce.t.1"), weak));
 
int
foo (void)
{
return 1;
}
 
extern int foo2 (void);
 
int
bar (void)
{
return foo2 ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3.d
0,0 → 1,21
#source: orphan3a.s
#source: orphan3b.s
#source: orphan3c.s
#source: orphan3d.s
#source: orphan3e.s
#source: orphan3f.s
#ld:
#readelf: -S --wide
#xfail: "arc-*-*" "d30v-*-*" "dlx-*-*" "fr30-*-*" "frv-*-elf"
#xfail: "i860-*-*" "i960-*-*" "iq2000-*-*" "mn10200-*-*" "msp430-*-*" "mt-*-*"
#xfail: "or32-*-*" "pj-*-*"
#xfail: "xstormy16-*-*"
 
#...
\[[ 0-9]+\] \.foo +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+20 +0+ +A +0 +0 +[0-9]+
#...
\[[ 0-9]+\] \.foo +NOBITS +[0-9a-f]+ +[0-9a-f]+ +0+20 +0+ +A +0 +0 +[0-9]+
#...
\[[ 0-9]+\] \.foo +PROGBITS +0+ +[0-9a-f]+ +0+20 +0+ +0 +0 +[0-9]+
\[[ 0-9]+\] [._][^f].*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/compress1a.d
0,0 → 1,10
#source: compress1.s
#as: --compress-debug-sections
#ld: -e func_cu2
#readelf: -S --wide
#notarget: alpha-*
 
#failif
#...
\[[ 0-9]+\] \.zdebug_.*[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ .*
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh2.d
0,0 → 1,33
#source: eh1.s
#source: eh2a.s
#ld:
#readelf: -wf
#target: x86_64-*-*
 
Contents of the .eh_frame section:
 
00000000 00000014 00000000 CIE
Version: 1
Augmentation: ""
Code alignment factor: 1
Data alignment factor: -8
Return address column: 16
 
DW_CFA_def_cfa: r7 \(rsp\) ofs 8
DW_CFA_offset: r16 \(rip\) at cfa-8
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
DW_CFA_advance_loc: 0 to 00400078
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r6 \(rbp\) at cfa-16
DW_CFA_advance_loc: 0 to 00400078
DW_CFA_def_cfa_register: r6 \(rbp\)
 
00000038 ZERO terminator
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/begin.c
0,0 → 1,5
extern void foo (void);
 
static void (*const init_array []) (void)
__attribute__ ((used, section (".init_array"), aligned (sizeof (void *))))
= { foo };
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl6.c
0,0 → 1,14
#include <stdio.h>
 
int bar = 10;
 
void
foo (void)
{
if (bar == 10)
printf ("bar is in DSO.\n");
else if (bar == -20)
printf ("bar is in main.\n");
else
printf ("FAIL\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan.d
0,0 → 1,16
#source: orphan.s
#ld: -T orphan.ld
#readelf: -S --wide
#xfail: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-elf i860-*-* i960-*-*
#xfail: iq*-*-* mn10200-*-* moxie-*-* msp*-*-* mt-*-* or32-*-* pj*-*-*
# if not using elf32.em, you don't get fancy orphan handling
 
#...
\[[ 0-9]+\] \.(text|notbad)[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
#...
\[[ 0-9]+\] \.(text|notbad)[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
\[[ 0-9]+\] \.data[ \t]+PROGBITS[ \t0-9a-f]+WA.*
#...
\[[ 0-9]+\] \.note[ \t]+NOTE[ \t0-9a-f]+A.*
\[[ 0-9]+\] \.note.bar[ \t]+NOTE[ \t0-9a-f]+A.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/weak-dyn-1.ld
0,0 → 1,8
SECTIONS
{
. = 0x800000;
PROVIDE (bar = .);
.data : {
*(.data)
}
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3a.s
0,0 → 1,12
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
 
.section .foo,"a",%nobits
.space 16
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl6amain.c
0,0 → 1,33
#include <stdio.h>
#include <dlfcn.h>
 
int bar = -20;
 
int
main (void)
{
int ret = 0;
void *handle;
void (*fcn) (void);
 
handle = dlopen("./tmpdir/libdl6a.so", RTLD_GLOBAL|RTLD_LAZY);
if (!handle)
{
printf("dlopen ./tmpdir/libdl6a.so: %s\n", dlerror ());
return 1;
}
 
fcn = (void (*)(void)) dlsym(handle, "foo");
if (!fcn)
{
printf("dlsym foo: %s\n", dlerror ());
ret += 1;
}
else
{
(*fcn) ();
}
 
dlclose (handle);
return ret;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/discard2.d
0,0 → 1,9
#source: discard2.s
#ld: -r -T discard.ld
#readelf: -r
#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
Relocation section '.rel.*.debug_info' at offset 0x[0-9a-z]+ contains 1 entries:
[ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.*
[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0-9a-f]+[ \t]+here.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/preinit.out
0,0 → 1,3
preinit array 0
preinit array 1
preinit array 2
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude.exp
0,0 → 1,148
# Expect script for --exclude-libs tests
# Copyright 2004, 2005, 2007 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.
 
# Make sure that ld can hide symbols from libraries when building a shared
# library.
 
# This test can only be run on ELF platforms.
if ![is_elf_format] {
return
}
 
# No shared lib support on this target.
if { [istarget "mcore-*-*"] } {
return
}
 
set as_opt ""
 
# This target requires extra as options when building code for shared
# libraries.
if { [istarget "tic6x-*-*"] } {
set as_opt "-mpic -mpid=near"
}
 
global ar
global as
global ld
global nm
global nm_output
 
set test1 "ld link shared library"
set test2 "ld export symbols from archive"
set test3 "ld link shared library with --exclude-libs"
set test4 "ld exclude symbols from archive - --exclude-libs libexclude"
set test5 "ld exclude symbols from archive - --exclude-libs libexclude.a"
set test6 "ld exclude symbols from archive - --exclude-libs ALL"
set test7 "ld exclude symbols from archive - --exclude-libs foo:libexclude.a"
set test8 "ld exclude symbols from archive - --exclude-libs foo,libexclude.a"
set test9 "ld don't exclude symbols from archive - --exclude-libs foo:bar"
 
if { ![ld_assemble_flags $as $as_opt $srcdir/$subdir/exclude1.s tmpdir/exclude1.o ]
|| ![ld_assemble_flags $as $as_opt $srcdir/$subdir/exclude2.s tmpdir/exclude2.o] } {
unresolved $test1
return
}
 
remote_file host delete "tmpdir/libexclude.a"
set catch_output [run_host_cmd "$ar" "cq tmpdir/libexclude.a tmpdir/exclude2.o"]
if {![string match "" $catch_output]} {
unresolved $test1
return
}
 
# Test that the symbol is normally exported.
 
if { [ld_simple_link $ld tmpdir/exclude.so "--shared tmpdir/exclude1.o -Ltmpdir -lexclude"] } {
pass $test1
} else {
if [string match "*shared not supported*" $link_output] {
unsupported "$test1 - -shared is not supported by this target"
} else {
fail $test1
}
return
}
 
if ![ld_nm $nm "-D" tmpdir/exclude.so] {
unresolved $test2
} elseif { [info exists nm_output(exclude_sym)] } {
pass $test2
} else {
fail $test2
}
 
# Test --exclude-libs libexclude
 
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs libexclude --shared tmpdir/exclude1.o -Ltmpdir -lexclude"] } {
pass $test3
} else {
fail $test3
}
 
if ![ld_nm $nm "-D" tmpdir/exclude.so] {
unresolved $test4
} elseif { ! [info exists nm_output(exclude_sym)] } {
pass $test4
} else {
fail $test4
}
 
# Test alternate spellings of --exclude-libs
 
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
&& [ld_nm $nm "-D" tmpdir/exclude.so]
&& ! [info exists nm_output(exclude_sym)] } {
pass $test5
} else {
fail $test5
}
 
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs ALL --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
&& [ld_nm $nm "-D" tmpdir/exclude.so]
&& ! [info exists nm_output(exclude_sym)] } {
pass $test6
} else {
fail $test6
}
 
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
&& [ld_nm $nm "-D" tmpdir/exclude.so]
&& ! [info exists nm_output(exclude_sym)] } {
pass $test7
} else {
fail $test7
}
 
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo,libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
&& [ld_nm $nm "-D" tmpdir/exclude.so]
&& ! [info exists nm_output(exclude_sym)] } {
pass $test8
} else {
fail $test8
}
 
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:bar --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
&& [ld_nm $nm "-D" tmpdir/exclude.so]
&& [info exists nm_output(exclude_sym)] } {
pass $test9
} else {
fail $test9
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkonce1a.s
0,0 → 1,3
.section .gnu.linkonce.d.dummy,"aw"
bar:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan.s
0,0 → 1,10
.text
.long 0
.data
.long 0
.section .note,"a","note"
.long 0
.section .notbad,"a","progbits"
.long 0
.section .note.bar,"a","note"
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-1.d
0,0 → 1,7
#source: noload-1.s
#ld: -T noload-1.t
#readelf: -S --wide
 
#...
\[[ 0-9]+\] TEST[ \t]+NOBITS[ \t0-9a-f]+WA.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl3.list
0,0 → 1,6
{
extern "C++"
{
typeinfo*;
};
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/discard2.s
0,0 → 1,12
.globl here
.data
here:
.long 1
.globl there
.section .discard,"aw",%progbits
.align 4
there:
.long 2
.section .debug_info,"",%progbits
.long here
.long there
/trunk/gnu/binutils/ld/testsuite/ld-elf/local1.d
0,0 → 1,7
#ld: -shared --version-script local1.map
#readelf: -s --wide
#target: *-*-linux* *-*-gnu*
 
#...
.*: [0-9a-f]* +[0-9a-f]+ +OBJECT +LOCAL +DEFAULT +[0-9] +foo
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/comm1.c
0,0 → 1,17
#include <stdio.h>
#include <stdlib.h>
 
int foo;
void bar (void);
 
int
main ()
{
if (foo != 0)
abort ();
foo = 200;
bar ();
if (foo == 200)
printf ("PASS\n");
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/tbss1.s
0,0 → 1,24
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.globl bss
.section .bss,"aw",%nobits
.p2align 12
.type bss,%object
.size bss,4096
bss:
.zero 4096
.globl tbss
.section .tbss,"awT",%nobits
.p2align 12
.type tbss,%object
.size tbss,4096
tbss:
.zero 4096
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude3d.d
0,0 → 1,9
#source: exclude3.s
#ld: --shared
#readelf: -S --wide
#target: ia64-*-*
 
#...
[ ]*\[.*\][ ]+\.got.*[ ]+PROGBITS.*
[ ]*\[.*\][ ]+.*STRTAB.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/group5.d
0,0 → 1,20
#source: ../../../binutils/testsuite/binutils-all/group-3.s
#ld: -r
#readelf: -Sg --wide
#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
# xstormy also uses a non-standard script, putting .data before .text.
 
#...
\[[ 0-9]+\] .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]+\] `.group' \[foo3\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
\[[ 0-9]+\] .data.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/main.c
0,0 → 1,8
#include <stdio.h>
 
int
main (void)
{
printf ("MAIN\n");
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/dwarf1.c
0,0 → 1,10
#include <stdio.h>
#include "dwarf1.h"
 
struct foo_s foo;
 
void
doprintf (void)
{
printf ("OK\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl3.cc
0,0 → 1,7
#include "dl3header.h"
 
void
f (void)
{
throw (A (42));
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/group8a.d
0,0 → 1,13
#source: group8.s
#ld: -r --gc-sections --entry foo
#readelf: -g --wide
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
#xfail: cr16-*-* crx-*-*
# generic linker targets don't support --gc-sections, nor do a bunch of others
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
 
COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 1 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec-to-seg-script-same-page.t
0,0 → 1,10
SECTIONS
{
. = 0x1000;
.sec1 : { *sec-to-seg1.o(.rodata) }
.sec2 : { *sec-to-seg2.o(.rodata) }
 
.data : { *(.data) } /* For hppa64. */
 
/DISCARD/ : {*(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/dwarf1.h
0,0 → 1,6
struct foo_s
{
int foo;
};
 
extern void doprintf (void);
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl2xxx.c
0,0 → 1,7
#include <stdio.h>
 
void
xxx (void)
{
printf ("DSO\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-1.s
0,0 → 1,2
.section TEST,"aw",%progbits
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/wrap1.c
0,0 → 1,8
extern void par (void);
 
int
main (void)
{
par ();
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-1.t
0,0 → 1,8
SECTIONS
{
TEST (NOLOAD) :
{
*(TEST)
}
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/local1.s
0,0 → 1,6
.globl foo
.protected foo
.type foo,%object
.data
foo:
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/tbss.s
0,0 → 1,15
.file "x.c"
.globl bss
.section .bss,"aw",%nobits
.p2align 12
.type bss,%object
.size bss,4096
bss:
.zero 4096
.globl tbss
.section .tbss,"awT",%nobits
.p2align 12
.type tbss,%object
.size tbss,4096
tbss:
.zero 4096
/trunk/gnu/binutils/ld/testsuite/ld-elf/wrap1a.c
0,0 → 1,6
#include <stdio.h>
 
void par (void)
{
printf ("par\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh1a.s
0,0 → 1,3
.section .eh_frame,"a",%progbits
.align 8
.zero 4
/trunk/gnu/binutils/ld/testsuite/ld-elf/loadaddr3b.d
0,0 → 1,13
#source: loadaddr.s
#ld: -T loadaddr3.t -z max-page-size=0x200000
#objdump: -t
#target: *-*-linux* *-*-gnu*
 
#...
0+0000100 l d .text 0+0000000 .text
0+0000200 l d .data 0+0000000 .data
#...
0+0000110 g \*ABS\* 0+0000000 data_load
#...
0+0000200 g .data 0+0000000 data_start
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/symbol1ref.s
0,0 → 1,3
.data
.dc.a symbol1
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr6.d
0,0 → 1,8
#source: maxpage1.s
#ld: -shared -z max-page-size=0x10000 -Ttext-segment 0x10000
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu*
 
#...
LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f]+ 0x0*[0-9a-f]+ R[ W]E 0x10000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/del.cc
0,0 → 1,29
#include <new>
 
extern "C" void free (void *);
 
void
operator delete (void *ptr, const std::nothrow_t&) throw ()
{
if (ptr)
free (ptr);
}
 
void
operator delete (void *ptr) throw ()
{
if (ptr)
free (ptr);
}
 
void
operator delete[] (void *ptr) throw ()
{
::operator delete (ptr);
}
 
void
operator delete[] (void *ptr, const std::nothrow_t&) throw ()
{
::operator delete (ptr);
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/extract-symbol-1sec.d
0,0 → 1,14
#name: --extract-symbol test 1 (sections)
#source: extract-symbol-1.s
#ld: -Textract-symbol-1.ld
#objcopy_linked_file: --extract-symbol
#objdump: --headers
#xfail: "hppa*-*-*" "rx-*-*"
# FAILS on the RX because the linker has to set LMA == VMA for the Renesas loader.
#...
Sections:
*Idx +Name +Size +VMA +LMA .*
*0 +\.foo +0+ +0+10000 +0+10000 .*
*CONTENTS, ALLOC, LOAD, CODE
*1 +\.bar +0+ +0+20000 +0+10000 .*
*ALLOC, READONLY, CODE
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan-region.d
0,0 → 1,21
#source: orphan-region.s
#ld: -T orphan-region.ld -N
#readelf: -S -l --wide
#xfail: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-elf i860-*-* i960-*-*
#xfail: iq*-*-* mn10200-*-* moxie-*-* msp*-*-* mt-*-* or32-*-* pj*-*-*
#xfail: spu-*-* hppa*64*-*-* frv-*-*
# if not using elf32.em, you don't get fancy orphan handling
# spu twiddles LOAD range, hppa64 adds PHDR, frv-linux adds GNU_STACK
 
#...
\[[ 0-9]+\] \.text[ \t]+PROGBITS[ \t]+0*40000000[ \t]+.*
\[[ 0-9]+\] \.rodata[ \t]+PROGBITS[ \t]+0*400000[0-9a-f]+[ \t]+.*
\[[ 0-9]+\] \.moredata[ \t]+PROGBITS[ \t]+0*400000[0-9a-f]+[ \t]+.*
#...
Program Headers:
Type.*
LOAD[ \t]+0x[0-9a-f]+ 0x0*40000000 0x0*40000000 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x[0-9a-f]+
 
Section to Segment mapping:
Segment Sections...
00 .text .rodata .moredata *
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9676-2.c
0,0 → 1,14
extern int foo (void) __attribute__((section (".gnu.linkonce.t.1"), weak,
__visibility__ ("hidden")));
 
int
foo (void)
{
return 1;
}
 
int
foo2 (void)
{
return 1;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan4.d
0,0 → 1,7
#source: orphan4.s
#ld: -T orphan4.ld
#objdump: -h
 
#...
. \.foo 0+1 0+1000 0+1000 .* 2\*\*0
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/start.s
0,0 → 1,10
.text
.global start /* Used by SH targets. */
start:
.global _start
_start:
.global __start
__start:
.global main /* Used by HPPA targets. */
main:
.dc.a 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkoncerdiff.d
0,0 → 1,6
#source: linkoncerdiff1.s
#source: linkoncerdiff2.s
#ld: -r
#readelf: -r
There are no relocations in this file.
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/compress1b.d
0,0 → 1,9
#source: compress1.s
#as: --compress-debug-sections
#ld: -r
#readelf: -S --wide
 
#failif
#...
\[[ 0-9]+\] \.zdebug_.*[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ .*
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh3.d
0,0 → 1,33
#source: eh3.s
#source: eh3a.s
#ld:
#readelf: -wf
#target: x86_64-*-*
 
Contents of the .eh_frame section:
 
00000000 00000014 00000000 CIE
Version: 1
Augmentation: ""
Code alignment factor: 1
Data alignment factor: -8
Return address column: 16
 
DW_CFA_def_cfa: r7 \(rsp\) ofs 8
DW_CFA_offset: r16 \(rip\) at cfa-8
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
 
00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
DW_CFA_advance_loc: 0 to 00400078
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r6 \(rbp\) at cfa-16
DW_CFA_advance_loc: 0 to 00400078
DW_CFA_def_cfa_register: r6 \(rbp\)
 
00000038 ZERO terminator
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/group3a.d
0,0 → 1,8
#source: group3a.s
#source: group3b.s
#ld: -T group.ld
#readelf: -s
Symbol table '.symtab' contains .* entries:
#...
.*: 0+1000 +0 +OBJECT +GLOBAL +HIDDEN +. foo
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/endhidden.c
0,0 → 1,8
#include <stdio.h>
 
__attribute__ ((visibility ("hidden")))
void
foo ()
{
printf ("TEST1\n");
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/dynbss1.c
0,0 → 1,20
#include <stdio.h>
#include <stdlib.h>
#include "data1.h"
 
int
main (void)
{
if ((((long) (&a1)) & (ALIGNMENT1 - 1)))
abort ();
if ((((long) (&a2)) & (ALIGNMENT2 - 1)))
abort ();
if ((((long) (&a2)) & (ALIGNMENT3 - 1)))
abort ();
if ((((long) (&a3)) & (ALIGNMENT4 - 1)))
abort ();
 
printf ("PASS\n");
 
return(0) ;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan-region.s
0,0 → 1,8
.text
.long 0
.section ".rodata", "a", %progbits
.long 0
.section ".moredata", "a", %progbits
.long 0
.section ".notdata", "", %progbits
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan4.s
0,0 → 1,4
.section ".foo", "ax"
.byte 45
.text
.byte 15
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3b.s
0,0 → 1,2
.section .foo,"a",%progbits
.long 1,1,1,1
/trunk/gnu/binutils/ld/testsuite/ld-elf/nobits-1.d
0,0 → 1,9
#ld: -Tnobits-1.t
#readelf: -l --wide
#xfail: hppa64-*-*
# hppa64 adds PHDR
 
#...
Section to Segment mapping:
Segment Sections...
00 .foo .bar
/trunk/gnu/binutils/ld/testsuite/ld-elf/discard3.d
0,0 → 1,11
#source: discard1.s
#source: discard2.s
#ld: -r -T discard.ld
#readelf: -r
#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
Relocation section '.rel.*.debug_info' at offset 0x[0-9a-z]+ contains 2 entries:
[ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.*
[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0-9a-f]+[ \t]+bar.*
[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0-9a-f]+[ \t]+here.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl6dmain.c
0,0 → 1,33
#include <stdio.h>
#include <dlfcn.h>
 
int bar = -20;
 
int
main (void)
{
int ret = 0;
void *handle;
void (*fcn) (void);
 
handle = dlopen("./tmpdir/libdl6d.so", RTLD_GLOBAL|RTLD_LAZY);
if (!handle)
{
printf("dlopen ./tmpdir/libdl6d.so: %s\n", dlerror ());
return 1;
}
 
fcn = (void (*)(void)) dlsym(handle, "foo");
if (!fcn)
{
printf("dlsym foo: %s\n", dlerror ());
ret += 1;
}
else
{
(*fcn) ();
}
 
dlclose (handle);
return ret;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh3.s
0,0 → 1,48
.text
.globl _start
.type _start, %function
_start:
.LFB2:
.LCFI0:
.LCFI1:
.LFE2:
.size _start, .-_start
.section .eh_frame,"a",%progbits
.align 16
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.string ""
.uleb128 0x1
.sleb128 -8
.byte 0x10
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.quad .LFB2
.quad .LFE2-.LFB2
.byte 0x4
.long .LCFI0-.LFB2
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xd
.uleb128 0x6
.byte 0x0
.byte 0x0
.byte 0x0
.byte 0x0
.LEFDE1:
/trunk/gnu/binutils/ld/testsuite/ld-elf/group3a.s
0,0 → 1,5
.section .data,"awG",%progbits,foo_group,comdat
.globl foo
.type foo,%object
foo:
.word 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9679.rd
0,0 → 1,5
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
#...
+[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9]+ +_?foo
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkonce1b.s
0,0 → 1,17
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.long 0
 
.section .gnu.linkonce.d.dummy,"aw"
.long 0
foo:
.long 0
.section .debug_frame,"",%progbits
.long foo
/trunk/gnu/binutils/ld/testsuite/ld-elf/extract-symbol-1sym.d
0,0 → 1,17
#name: --extract-symbol test 1 (symbols)
#source: extract-symbol-1.s
#ld: -Textract-symbol-1.ld
#objcopy_linked_file: --extract-symbol
#nm: -n
#xfail: "hppa*-*-*"
#...
0*00010010 T B
#...
0*00020123 T C
#...
0*00030000 A _entry
#...
0*00040000 A linker_symbol
#...
0*12345678 A D
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11138-1.map
0,0 → 1,4
VERS_1 {
global: bar; foo;
local: *;
};
/trunk/gnu/binutils/ld/testsuite/ld-elf/group.ld
0,0 → 1,6
SECTIONS
{
. = 0x1000;
.text : { *(.text) *(.rodata.brlt) }
/DISCARD/ : { *(.dropme) *(.reginfo) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-2.d
0,0 → 1,8
#source: noload-1.s
#ld: -T noload-1.t -z max-page-size=0x200000
#readelf: -Sl --wide
#target: *-*-linux* *-*-gnu*
 
#...
+LOAD +0x200000 +0x0+ +0x0+ +0x0+ +0x0+1 +RW +0x200000
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/nobits-1.s
0,0 → 1,6
.globl _entry
.section .foo,"awx",%progbits
_entry:
.byte 0
.section .bar,"ax",%nobits
.byte 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/nobits-1.t
0,0 → 1,13
ENTRY(_entry)
PHDRS
{
data PT_LOAD;
}
SECTIONS
{
. = 0x1000000;
.foo : { *(.foo) } :data
. = 0x2000000;
.bar : { *(.bar) } :data
/DISCARD/ : { *(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/tbss2.s
0,0 → 1,16
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.globl tbss
.section .tbss,"awT",%nobits
.type tbss,%object
.size tbss,1
tbss:
.zero 1
/trunk/gnu/binutils/ld/testsuite/ld-elf/group6.d
0,0 → 1,20
#source: ../../../binutils/testsuite/binutils-all/group-4.s
#ld: -r
#readelf: -Sg --wide
#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
# xstormy also uses a non-standard script, putting .data before .text.
 
#...
\[[ 0-9]+\] .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]+\] `.group' \[foo4\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
\[[ 0-9]+\] .data.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl1main.c
0,0 → 1,33
#include <stdio.h>
#include <dlfcn.h>
 
int bar = -20;
 
int
main (void)
{
int ret = 0;
void *handle;
void (*fcn) (void);
 
handle = dlopen("./tmpdir/libdl1.so", RTLD_GLOBAL|RTLD_LAZY);
if (!handle)
{
printf("dlopen ./tmpdir/libdl1.so: %s\n", dlerror ());
return 1;
}
 
fcn = (void (*)(void)) dlsym(handle, "foo");
if (!fcn)
{
printf("dlsym foo: %s\n", dlerror ());
ret += 1;
}
else
{
(*fcn) ();
}
 
dlclose (handle);
return ret;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/fini.c
0,0 → 1,34
#include <stdio.h>
 
static void
fini_0 (void)
{
printf ("fini array 0\n");
}
 
static void
fini_1 (void)
{
printf ("fini array 1\n");
}
 
static void
fini_2 (void)
{
printf ("fini array 2\n");
}
 
void (*const fini_array []) (void)
__attribute__ ((section (".fini_array"),
aligned (sizeof (void *)))) =
{
&fini_0,
&fini_1,
&fini_2
};
 
int
main (void)
{
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/group8b.d
0,0 → 1,13
#source: group8.s
#ld: -r --gc-sections --entry bar
#readelf: -g --wide
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
#xfail: cr16-*-* crx-*-*
# generic linker targets don't support --gc-sections, nor do a bunch of others
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
 
COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains 1 sections:
\[Index\] Name
\[[ 0-9]+\] .text.bar
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh-group1.s
0,0 → 1,6
.section sect, "axG", %progbits, sectgroup, comdat
.global _start
_start:
.cfi_startproc
.skip 16
.cfi_endproc
/trunk/gnu/binutils/ld/testsuite/ld-elf/flags1.ld
0,0 → 1,12
SECTIONS
{
.text :
{
*(.text)
} =0
.post_text_reserve :
{
. += 0x160;
}
/DISCARD/ : { *(.*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/extract-symbol-1.s
0,0 → 1,15
.globl B
.globl C
 
.section .foo,"awx",%progbits
.4byte 1,2,3,4
B:
.4byte 5,6,7
 
.section .bar,"ax",%nobits
.space 0x123
C:
.space 0x302
 
.globl D
.equ D,0x12345678
/trunk/gnu/binutils/ld/testsuite/ld-elf/wrap1b.c
0,0 → 1,16
#include <stdio.h>
 
extern void par (void);
 
void __real_par (void)
{
printf ("__real_par \n");
par ();
}
 
void
__wrap_par (void)
{
printf ("__wrap_par \n");
__real_par ();
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/textaddr7.d
0,0 → 1,8
#source: maxpage1.s
#ld: -n -z max-page-size=0x200000 -Ttext-segment 0x10000
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu*
 
#...
LOAD .*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/preinit.c
0,0 → 1,34
#include <stdio.h>
 
static void
preinit_0 (void)
{
printf ("preinit array 0\n");
}
 
static void
preinit_1 (void)
{
printf ("preinit array 1\n");
}
 
static void
preinit_2 (void)
{
printf ("preinit array 2\n");
}
 
void (*const preinit_array []) (void)
__attribute__ ((section (".preinit_array"),
aligned (sizeof (void *)))) =
{
&preinit_0,
&preinit_1,
&preinit_2
};
 
int
main (void)
{
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11304.d
0,0 → 1,11
#source: pr11304a.s
#source: pr11304b.s
#ld: -e 0 --section-start .zzz=0x800000
#readelf: -S --wide
 
#failif
#...
\[[ 0-9]+\] \.zzz[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
#...
\[[ 0-9]+\] \.zzz[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/merge.ld
0,0 → 1,7
SECTIONS
{
. = 0x1000;
.text : { *(.text .text.* .gnu.linkonce.t.*) }
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.junk : { *(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr9676-3.c
0,0 → 1,7
extern int foo (void) __attribute__((section (".gnu.linkonce.t.1"), weak));
 
int
foo (void)
{
return 1;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/linkoncerdiff1.s
0,0 → 1,7
.section .gnu.linkonce.t.foo, "a", %progbits
.globl symfoo
symfoo:
 
.section .gnu.linkonce.t.bar, "a", %progbits
.globl symbar
symbar:
/trunk/gnu/binutils/ld/testsuite/ld-elf/compress1c.d
0,0 → 1,10
#source: compress1.s
#as: --compress-debug-sections
#ld: -shared
#readelf: -S --wide
#target: *-*-linux* *-*-gnu*
 
#failif
#...
\[[ 0-9]+\] \.zdebug_.*[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ .*
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh4.d
0,0 → 1,32
#source: eh4.s
#source: eh4a.s
#ld: -shared
#readelf: -wf
#target: x86_64-*-*
 
Contents of the .eh_frame section:
 
00000000 00000014 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: -8
Return address column: 16
Augmentation data: 1b
 
DW_CFA_def_cfa: r7 \(rsp\) ofs 8
DW_CFA_offset: r16 \(rip\) at cfa-8
DW_CFA_nop
DW_CFA_nop
 
00000018 00000014 0000001c FDE cie=00000000 pc=00000400..00000413
DW_CFA_set_loc: 00000404
DW_CFA_def_cfa_offset: 80
 
00000030 00000014 00000034 FDE cie=00000000 pc=00000413..00000426
DW_CFA_set_loc: 00000417
DW_CFA_def_cfa_offset: 80
 
00000048 ZERO terminator
#pass
 
/trunk/gnu/binutils/ld/testsuite/ld-elf/group3b.d
0,0 → 1,11
#source: group3b.s
#source: group3a.s
#ld: -T group.ld
#readelf: -s
#xfail: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
# generic linker targets don't comply with all symbol merging rules
 
Symbol table '.symtab' contains .* entries:
#...
.*: 0+1000 +0 +OBJECT +GLOBAL +HIDDEN +. foo
#...
/trunk/gnu/binutils/ld/testsuite/ld-elf/depaudit.rd
0,0 → 1,3
#...
.*Dependency audit library: \[tmpdir/audit.so\].*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/group9a.d
0,0 → 1,14
#source: group9.s
#ld: -r --gc-sections --entry foo
#readelf: -g --wide
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
#notarget: alpha-*-* hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
#xfail: cr16-*-* crx-*-*
# generic linker targets don't support --gc-sections, nor do a bunch of others
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
 
COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
\[[ 0-9]+\] .data.foo
/trunk/gnu/binutils/ld/testsuite/ld-elf/pr11304a.s
0,0 → 1,4
.section .zzz,"ax",%progbits
.long 0
.text
.long 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/orphan3c.s
0,0 → 1,2
.section .foo,"",%progbits
.long 2,2,2,2
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh2a.s
0,0 → 1,3
.section .eh_frame,"a",%progbits
.align 4
.zero 4
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh4.s
0,0 → 1,92
.text
.align 512
.globl foo
.type foo, @function
foo:
.LFB1:
subq $72, %rsp
.LCFI1:
xorl %eax, %eax
movq %rsp, %rdi
call bar@PLT
addq $72, %rsp
ret
.LFE1:
.size foo, .-foo
.globl bar
.type bar, @function
bar:
.LFB2:
subq $72, %rsp
.LCFI2:
xorl %eax, %eax
movq %rsp, %rdi
call bar@PLT
addq $72, %rsp
ret
.LFE2:
.size bar, .-bar
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1 # Length of Common Information Entry
.LSCIE1:
.long 0x0 # CIE Identifier Tag
.byte 0x1 # CIE Version
.ascii "zR\0" # CIE Augmentation
.uleb128 0x1 # CIE Code Alignment Factor
.sleb128 -8 # CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.uleb128 0x1 # Augmentation size
.byte 0x1b # FDE Encoding (pcrel sdata4)
.byte 0xc # DW_CFA_def_cfa
.uleb128 0x7
.uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1 # FDE Length
.LASFDE1:
.long .LASFDE1-.Lframe1 # FDE CIE offset
.long .LFB1-. # FDE initial location
.long .LFE1-.LFB1 # FDE address range
.uleb128 0x0 # Augmentation size
.byte 0x1 # DW_CFA_set_loc
.long .LCFI1-.
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x50
.align 8
.LEFDE1:
.Lframe2:
.long .LECIE2-.LSCIE2 # Length of Common Information Entry
.LSCIE2:
.long 0x0 # CIE Identifier Tag
.byte 0x1 # CIE Version
.ascii "zR\0" # CIE Augmentation
.uleb128 0x1 # CIE Code Alignment Factor
.sleb128 -8 # CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.uleb128 0x1 # Augmentation size
.byte 0x1b # FDE Encoding (pcrel sdata4)
.byte 0xc # DW_CFA_def_cfa
.uleb128 0x7
.uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.uleb128 0x1
.align 8
.LECIE2:
.LSFDE2:
.long .LEFDE2-.LASFDE2 # FDE Length
.LASFDE2:
.long .LASFDE2-.Lframe2 # FDE CIE offset
.long .LFB2-. # FDE initial location
.long .LFE2-.LFB2 # FDE address range
.uleb128 0x0 # Augmentation size
.byte 0x1 # DW_CFA_set_loc
.long .LCFI2-.
.byte 0xe # DW_CFA_def_cfa_offset
.uleb128 0x50
.align 8
.LEFDE2:
.section .note.GNU-stack,"",@progbits
/trunk/gnu/binutils/ld/testsuite/ld-elf/group3b.s
0,0 → 1,6
.section .data,"awG",%progbits,foo_group,comdat
.hidden foo
.globl foo
.type foo,%object
foo:
.word 0
/trunk/gnu/binutils/ld/testsuite/ld-elf/dynamic1.d
0,0 → 1,10
#ld: -shared -T dynamic1.ld
#readelf: -l --wide
#target: *-*-linux* *-*-gnu*
 
#...
Section to Segment mapping:
Segment Sections...
#...
0[1-9] .dynamic[ ]*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/init-mixed.c
0,0 → 1,126
#include <stdio.h>
#include <stdlib.h>
 
#include "config.h"
 
#ifdef HAVE_INITFINI_ARRAY
static int count;
 
static void
init1005 ()
{
if (count != 0)
abort ();
count = 1005;
}
void (*const init_array1005[]) ()
__attribute__ ((section (".init_array.01005"), aligned (sizeof (void *))))
= { init1005 };
static void
fini1005 ()
{
if (count != 1005)
abort ();
}
void (*const fini_array1005[]) ()
__attribute__ ((section (".fini_array.01005"), aligned (sizeof (void *))))
= { fini1005 };
 
static void
ctor1007a ()
{
if (count != 1005)
abort ();
count = 1006;
}
static void
ctor1007b ()
{
if (count != 1006)
abort ();
count = 1007;
}
void (*const ctors1007[]) ()
__attribute__ ((section (".ctors.64528"), aligned (sizeof (void *))))
= { ctor1007b, ctor1007a };
static void
dtor1007a ()
{
if (count != 1006)
abort ();
count = 1005;
}
static void
dtor1007b ()
{
if (count != 1007)
abort ();
count = 1006;
}
void (*const dtors1007[]) ()
__attribute__ ((section (".dtors.64528"), aligned (sizeof (void *))))
= { dtor1007b, dtor1007a };
 
static void
init65530 ()
{
if (count != 1007)
abort ();
count = 65530;
}
void (*const init_array65530[]) ()
__attribute__ ((section (".init_array.65530"), aligned (sizeof (void *))))
= { init65530 };
static void
fini65530 ()
{
if (count != 65530)
abort ();
count = 1007;
}
void (*const fini_array65530[]) ()
__attribute__ ((section (".fini_array.65530"), aligned (sizeof (void *))))
= { fini65530 };
 
static void
ctor65535a ()
{
if (count != 65530)
abort ();
count = 65535;
}
static void
ctor65535b ()
{
if (count != 65535)
abort ();
count = 65536;
}
void (*const ctors65535[]) ()
__attribute__ ((section (".ctors"), aligned (sizeof (void *))))
= { ctor65535b, ctor65535a };
static void
dtor65535b ()
{
if (count != 65536)
abort ();
count = 65535;
}
static void
dtor65535a ()
{
if (count != 65535)
abort ();
count = 65530;
}
void (*const dtors65535[]) ()
__attribute__ ((section (".dtors"), aligned (sizeof (void *))))
= { dtor65535b, dtor65535a };
#endif
 
int
main ()
{
printf ("OK\n");
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/sec-to-seg-script-disjoint-pages.t
0,0 → 1,11
SECTIONS
{
. = 0x1000;
.sec1 : { *sec-to-seg1.o(.rodata) }
. += CONSTANT(MAXPAGESIZE) * 2;
.sec2 : { *sec-to-seg2.o(.rodata) }
 
.data : { *(.data) } /* For hppa64. */
/DISCARD/ : {*(*) }
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-3.d
0,0 → 1,7
#ld: -T noload-3.t
#objdump: -s -j .foo1
 
#...
Contents of section .foo1:
[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ [0-9a-f]+[ \t]+This is a test.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/tbss3.s
0,0 → 1,17
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
 
.section .tbss,"awT",%nobits
.p2align 10
.type tbss, %object
.size tbss, 1024
tbss:
.zero 1024
/trunk/gnu/binutils/ld/testsuite/ld-elf/unknown2.d
0,0 → 1,8
#source: unknown2.s
#ld: -shared
#readelf: -S
#target: *-*-linux* *-*-gnu*
 
#...
\[[ 0-9]+\] \.note.foo[ \t]+NOTE[ \t]+.*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/foo.c
0,0 → 1,11
#include <stdio.h>
 
void
foo (void)
{
printf ("TEST2\n");
}
 
static void (*const init_array []) (void)
__attribute__ ((used, section (".init_array"), aligned (sizeof (void *))))
= { foo };
/trunk/gnu/binutils/ld/testsuite/ld-elf/group7.d
0,0 → 1,31
#source: ../../../binutils/testsuite/binutils-all/group.s
#source: ../../../binutils/testsuite/binutils-all/group-2.s
#source: ../../../binutils/testsuite/binutils-all/group-3.s
#source: ../../../binutils/testsuite/binutils-all/group-4.s
#ld: -r
#readelf: -g --wide
#xfail: cr16-*-* crx-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
 
#...
COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
\[[ 0-9]+\] .data.foo
#...
COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
\[[ 0-9]+\] .data.bar
#...
COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo3
\[[ 0-9]+\] .data.bar3
#...
COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains 2 sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo4
\[[ 0-9]+\] .data.foo4
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/dynamic1.s
0,0 → 1,2
.section .data1,"aw"
.balign 16
/trunk/gnu/binutils/ld/testsuite/ld-elf/dl4main.c
0,0 → 1,34
#include <stdio.h>
 
extern int foo1;
extern int foo2;
extern void bar (void);
 
void
xxx1 (void)
{
printf ("MAIN1\n");
}
 
void
xxx2 (void)
{
printf ("MAIN2\n");
}
 
int
main (void)
{
foo1 = 1;
foo2 = 1;
bar ();
if (foo1 == -1)
printf ("OK1\n");
else if (foo1 == 1)
printf ("OK2\n");
if (foo2 == -1)
printf ("OK3\n");
else if (foo2 == 1)
printf ("OK4\n");
return 0;
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/eh-group2.s
0,0 → 1,15
.section sect, "axG", %progbits, sectgroup, comdat
.cfi_startproc
# Test intention is that LSDA must be provided by the discarded FDE.
# DW_EH_PE_udata8 = 4
# DW_EH_PE_udata4 = 3
.ifdef ELF64
.cfi_lsda 4, lsda
.else
.cfi_lsda 3, lsda
.endif
.skip 16
.cfi_endproc
 
.section .gcc_except_table, "a", %progbits
lsda:
/trunk/gnu/binutils/ld/testsuite/ld-elf/audit.rd
0,0 → 1,3
#...
.*Audit library: \[tmpdir/audit.so\].*
#pass
/trunk/gnu/binutils/ld/testsuite/ld-elf/exclude1.s
0,0 → 1,4
.globl include_sym
.data
include_sym:
.dc.a exclude_sym
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-3.s
0,0 → 1,6
.section .foo2,"aw",%progbits
.byte 1
.section .foo1,"w",%progbits
.string "This is a test."
.section .foo,"aw",%progbits
.space 16
/trunk/gnu/binutils/ld/testsuite/ld-elf/new.cc
0,0 → 1,47
#include <new>
 
using std::bad_alloc;
 
extern "C" void *malloc (std::size_t);
extern "C" void abort (void);
 
void *
operator new (std::size_t sz, const std::nothrow_t&) throw()
{
void *p;
 
/* malloc (0) is unpredictable; avoid it. */
if (sz == 0)
sz = 1;
p = (void *) malloc (sz);
return p;
}
 
void *
operator new (std::size_t sz) throw (std::bad_alloc)
{
void *p;
 
/* malloc (0) is unpredictable; avoid it. */
if (sz == 0)
sz = 1;
p = (void *) malloc (sz);
while (p == 0)
{
::abort();
}
 
return p;
}
 
void*
operator new[] (std::size_t sz) throw (std::bad_alloc)
{
return ::operator new(sz);
}
 
void *
operator new[] (std::size_t sz, const std::nothrow_t& nothrow) throw()
{
return ::operator new(sz, nothrow);
}
/trunk/gnu/binutils/ld/testsuite/ld-elf/noload-3.t
0,0 → 1,7
SECTIONS
{
.foo2 : { *(.foo2) }
.foo1 : { *(.foo1) }
.foo (NOLOAD) : { *(.foo) }
/DISCARD/ : { *(*) }
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.