mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-12 06:26:17 +00:00
* ld.scripts: New directory.
* ld.scripts/defined.exp, ld.scripts/defined.s: New files. * ld.scripts/defined.t: New file. * lib/ld.exp (default_ld_simple_link): New function. (default_ld_assemble, default_ld_nm): New functions. * config/default.exp: Rename from unix-ld.exp. (ld_simple_link, ld_assemble, ld_nm): New functions.
This commit is contained in:
parent
8352254c2e
commit
9de5523bb6
@ -28,6 +28,7 @@ config
|
||||
lib
|
||||
ld.bootstrap
|
||||
ld.cdtest
|
||||
ld.scripts
|
||||
|
||||
Things-to-lose:
|
||||
|
||||
|
@ -1,5 +1,13 @@
|
||||
Tue Sep 27 14:59:51 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
|
||||
|
||||
* ld.scripts: New directory.
|
||||
* ld.scripts/defined.exp, ld.scripts/defined.s: New files.
|
||||
* ld.scripts/defined.t: New file.
|
||||
* lib/ld.exp (default_ld_simple_link): New function.
|
||||
(default_ld_assemble, default_ld_nm): New functions.
|
||||
* config/default.exp: Rename from unix-ld.exp.
|
||||
(ld_simple_link, ld_assemble, ld_nm): New functions.
|
||||
|
||||
* config/unix-ld.exp: Set ld using findfile.
|
||||
* lib/ld.exp (default_ld_relocate): Return a value. Change format
|
||||
of log messages.
|
||||
|
@ -23,7 +23,7 @@ Do-first:
|
||||
|
||||
Things-to-keep:
|
||||
|
||||
unix-ld.exp
|
||||
default.exp
|
||||
|
||||
Things-to-lose:
|
||||
|
||||
|
@ -92,6 +92,14 @@ proc ld_link { ld target objects } {
|
||||
default_ld_link $ld $target $objects
|
||||
}
|
||||
|
||||
#
|
||||
# ld_simple_link
|
||||
# link a program using ld, without including any libraries
|
||||
#
|
||||
proc ld_simple_link { ld target objects } {
|
||||
default_ld_simple_link $ld $target $objects
|
||||
}
|
||||
|
||||
#
|
||||
# ld_compile
|
||||
# compile an object using $cc
|
||||
@ -100,6 +108,22 @@ proc ld_compile { cc source object } {
|
||||
default_ld_compile $cc $source $object
|
||||
}
|
||||
|
||||
#
|
||||
# ld_assemble
|
||||
# assemble a file
|
||||
#
|
||||
proc ld_assemble { as source object } {
|
||||
default_ld_assemble $as $source $object
|
||||
}
|
||||
|
||||
#
|
||||
# ld_nm
|
||||
# run nm on a file
|
||||
#
|
||||
proc ld_nm { nm object } {
|
||||
default_ld_nm $nm $object
|
||||
}
|
||||
|
||||
#
|
||||
# ld_exec
|
||||
# execute ithe target
|
38
ld/testsuite/ld.scripts/.Sanitize
Normal file
38
ld/testsuite/ld.scripts/.Sanitize
Normal file
@ -0,0 +1,38 @@
|
||||
# .Sanitize for ld dejagnu testsuites
|
||||
|
||||
# Each directory to survive it's way into a release will need a file
|
||||
# like this one called "./.Sanitize". All keyword lines must exist,
|
||||
# and must exist in the order specified by this file. Each directory
|
||||
# in the tree will be processed, top down, in the following order..
|
||||
|
||||
# Hash started lines like this one are comments and will be deleted
|
||||
# before anything else is done. Blank lines will also be squashed
|
||||
# out.
|
||||
|
||||
# The lines between the "Do-first:" line and the "Things-to-keep:"
|
||||
# line are executed as a /bin/sh shell script before anything else is
|
||||
# done in this directory.
|
||||
|
||||
Do-first:
|
||||
|
||||
# All files listed between the "Things-to-keep:" line and the
|
||||
# "Do-last:" line will be kept. All other files will be removed.
|
||||
# Directories listed in this section will have their own Sanitize
|
||||
# called. Directories not listed will be removed in their entirety
|
||||
# with rm -rf.
|
||||
|
||||
Things-to-keep:
|
||||
|
||||
defined.exp
|
||||
defined.s
|
||||
defined.t
|
||||
|
||||
Things-to-lose:
|
||||
|
||||
# The lines between the "Do-last:" line and the end of the file
|
||||
# are executed as a /bin/sh shell script after everything else is
|
||||
# done.
|
||||
|
||||
Do-last:
|
||||
|
||||
#eof
|
34
ld/testsuite/ld.scripts/defined.exp
Normal file
34
ld/testsuite/ld.scripts/defined.exp
Normal file
@ -0,0 +1,34 @@
|
||||
# Test DEFINED in a linker script.
|
||||
# By Ian Lance Taylor, Cygnus Support.
|
||||
|
||||
if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
|
||||
|
||||
set as [findfile $base_dir/../gas/as.new $base_dir/../gas/as.new [transform as]]
|
||||
set nm [findfile $base_dir/../binutils/nm.new $base_dir/../binutils/nm.new [transform nm]]
|
||||
|
||||
if ![ld_assemble $as $srcdir$subdir/defined.s tmpdir/def.o] { return }
|
||||
|
||||
set prms_id 5699
|
||||
|
||||
if ![ld_simple_link $ld tmpdir/def "-T $srcdir$subdir/defined.t tmpdir/def.o"] {
|
||||
fail DEFINED
|
||||
} else {
|
||||
if [ld_nm $nm tmpdir/def] {
|
||||
if {![info exists nm_output(value1)] \
|
||||
|| ![info exists nm_output(value2)]} {
|
||||
perror "bad output from $nm"
|
||||
} else {
|
||||
if {$nm_output(value1) != 1} {
|
||||
fail "DEFINED (value1 == $nm_output(value1))"
|
||||
} else {
|
||||
if {$nm_output(value2) != 2} {
|
||||
fail "DEFINED (value2 == $nm_output(value2))"
|
||||
} else {
|
||||
pass DEFINED
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set prms_id 0
|
2
ld/testsuite/ld.scripts/defined.s
Normal file
2
ld/testsuite/ld.scripts/defined.s
Normal file
@ -0,0 +1,2 @@
|
||||
.globl defined
|
||||
defined = 1
|
5
ld/testsuite/ld.scripts/defined.t
Normal file
5
ld/testsuite/ld.scripts/defined.t
Normal file
@ -0,0 +1,5 @@
|
||||
SECTIONS {
|
||||
.text : { *(.text) }
|
||||
}
|
||||
value1 = DEFINED (defined) ? 1 : 2;
|
||||
value2 = DEFINED (undefined) ? 1 : 2;
|
@ -74,6 +74,30 @@ proc default_ld_link { ld target objects } {
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# default_ld_simple_link
|
||||
# link a program using ld, without including any libraries
|
||||
#
|
||||
proc default_ld_simple_link { ld target objects } {
|
||||
|
||||
if { [file exists $ld] == 0 } then {
|
||||
perror "$ld does not exist"
|
||||
return 0
|
||||
}
|
||||
|
||||
send_log "$ld -o $target $objects\n"
|
||||
verbose "$ld -o $target $objects"
|
||||
|
||||
catch "exec $ld -o $target $objects" exec_output
|
||||
if [string match "" $exec_output] then {
|
||||
return 1
|
||||
} else {
|
||||
send_log "$exec_output\n"
|
||||
verbose "$exec_output"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# default_ld_compile
|
||||
# compile an object using cc
|
||||
@ -102,6 +126,72 @@ proc default_ld_compile { cc source object } {
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# default_ld_assemble
|
||||
# assemble a file
|
||||
#
|
||||
proc default_ld_assemble { as source object } {
|
||||
global ASFLAGS
|
||||
|
||||
if {[which $as] == 0} then {
|
||||
perror "$as does not exist"
|
||||
return 0
|
||||
}
|
||||
|
||||
if ![info exists ASFLAGS] { set ASFLAGS "" }
|
||||
|
||||
send_log "$as $ASFLAGS -o $object $source\n"
|
||||
verbose "$as $ASFLAGS -o $object $source"
|
||||
|
||||
catch "exec $as $ASFLAGS -o $object $source" exec_output
|
||||
if [string match "" $exec_output] then {
|
||||
return 1
|
||||
} else {
|
||||
send_log "$exec_output\n"
|
||||
verbose "$exec_output"
|
||||
perror "$source: assembly failed"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# default_ld_nm
|
||||
# run nm on a file, putting the result in the array nm_output
|
||||
#
|
||||
proc default_ld_nm { nm object } {
|
||||
global NMFLAGS
|
||||
global nm_output
|
||||
|
||||
if {[which $nm] == 0} then {
|
||||
perror "$nm does not exist"
|
||||
return 0
|
||||
}
|
||||
|
||||
if ![info exists NMFLAGS] { set NMFLAGS "" }
|
||||
|
||||
send_log "$nm $NMFLAGS $object >tmpdir/nm.out\n"
|
||||
verbose "$nm $NMFLAGS $object >tmpdir/nm.out"
|
||||
|
||||
catch "exec $nm $NMFLAGS $object >tmpdir/nm.out" exec_output
|
||||
if [string match "" $exec_output] then {
|
||||
set file [open tmpdir/nm.out r]
|
||||
while { [gets $file line] != -1 } {
|
||||
verbose "$line" 2
|
||||
if [regexp "^(\[0-9a-fA-F\]+) \[a-zA-Z0-9\] (.+)$" $line whole value name] {
|
||||
verbose "Setting nm_output($name) to 0x$value" 2
|
||||
set nm_output($name) 0x$value
|
||||
}
|
||||
}
|
||||
close $file
|
||||
return 1
|
||||
} else {
|
||||
send_log "$exec_output\n"
|
||||
verbose $exec_output
|
||||
perror "$object: nm failed"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# simple_diff
|
||||
# compares two files line-by-line
|
||||
|
Loading…
Reference in New Issue
Block a user