From 83ad0046cfa785068be98b08efadcad6854c1a12 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 29 Dec 2006 17:56:32 +0000 Subject: bfd/ 2006-12-29 H.J. Lu * elflink.c (elf_link_add_object_symbols): Remember the symbol size only if it is defined. ld/testsuite/ 2006-12-29 H.J. Lu * ld-elf/wrap.exp: New file. * ld-elf/wrap1.c: Likewise. * ld-elf/wrap1.out: Likewise. * ld-elf/wrap1a.c: Likewise. * ld-elf/wrap1b.c: Likewise. --- ld/testsuite/ChangeLog | 8 +++++++ ld/testsuite/ld-elf/wrap.exp | 54 +++++++++++++++++++++++++++++++++++++++++++ ld/testsuite/ld-elf/wrap1.c | 8 +++++++ ld/testsuite/ld-elf/wrap1.out | 3 +++ ld/testsuite/ld-elf/wrap1a.c | 6 +++++ ld/testsuite/ld-elf/wrap1b.c | 16 +++++++++++++ 6 files changed, 95 insertions(+) create mode 100644 ld/testsuite/ld-elf/wrap.exp create mode 100644 ld/testsuite/ld-elf/wrap1.c create mode 100644 ld/testsuite/ld-elf/wrap1.out create mode 100644 ld/testsuite/ld-elf/wrap1a.c create mode 100644 ld/testsuite/ld-elf/wrap1b.c (limited to 'ld') diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 9a9daf8..2ff0c39 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2006-12-29 H.J. Lu + + * ld-elf/wrap.exp: New file. + * ld-elf/wrap1.c: Likewise. + * ld-elf/wrap1.out: Likewise. + * ld-elf/wrap1a.c: Likewise. + * ld-elf/wrap1b.c: Likewise. + 2006-12-18 Pedro Alves * ld-pe/direct.exp: New file. diff --git a/ld/testsuite/ld-elf/wrap.exp b/ld/testsuite/ld-elf/wrap.exp new file mode 100644 index 0000000..5fd57ea --- /dev/null +++ b/ld/testsuite/ld-elf/wrap.exp @@ -0,0 +1,54 @@ +# Expect script for wrap ELF tests. +# Copyright 2006 Free Software Foundation, Inc. +# +# This file 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 2 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 diff --git a/ld/testsuite/ld-elf/wrap1.c b/ld/testsuite/ld-elf/wrap1.c new file mode 100644 index 0000000..1ff250e --- /dev/null +++ b/ld/testsuite/ld-elf/wrap1.c @@ -0,0 +1,8 @@ +extern void par (void); + +int +main (void) +{ + par (); + return 0; +} diff --git a/ld/testsuite/ld-elf/wrap1.out b/ld/testsuite/ld-elf/wrap1.out new file mode 100644 index 0000000..7c1938f --- /dev/null +++ b/ld/testsuite/ld-elf/wrap1.out @@ -0,0 +1,3 @@ +__wrap_par +__real_par +par diff --git a/ld/testsuite/ld-elf/wrap1a.c b/ld/testsuite/ld-elf/wrap1a.c new file mode 100644 index 0000000..75c94e0 --- /dev/null +++ b/ld/testsuite/ld-elf/wrap1a.c @@ -0,0 +1,6 @@ +#include + +void par (void) +{ + printf ("par\n"); +} diff --git a/ld/testsuite/ld-elf/wrap1b.c b/ld/testsuite/ld-elf/wrap1b.c new file mode 100644 index 0000000..abd39aa --- /dev/null +++ b/ld/testsuite/ld-elf/wrap1b.c @@ -0,0 +1,16 @@ +#include + +extern void par (void); + +void __real_par (void) +{ + printf ("__real_par \n"); + par (); +} + +void +__wrap_par (void) +{ + printf ("__wrap_par \n"); + __real_par (); +} -- cgit v1.1