diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2003-05-20 14:35:01 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2003-05-20 14:35:01 +0000 |
commit | 22d5e339189d245f554b4f3c93f17441177fddcd (patch) | |
tree | d067924e009250533d0ddd12ccdd4e4643dc250b /ld/testsuite/ld-elfvsb | |
parent | 39b8215104530f77b176829f831b7d9790eb9a6a (diff) | |
download | ppe42-binutils-22d5e339189d245f554b4f3c93f17441177fddcd.tar.gz ppe42-binutils-22d5e339189d245f554b4f3c93f17441177fddcd.zip |
bfd/
2003-05-20 Jakub Jelinek <jakub@redhat.com>
* elflink.h (elf_link_output_extsym): Only issue error about !=
STV_DEFAULT symbols if they are bfd_link_hash_undefined.
2003-05-20 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (_bfd_elf_merge_symbol): Check ELF_LINK_DYNAMIC_DEF
when removing the old definition for symbols with non-default
visibility.
ld/testsuite/
2003-05-20 Jakub Jelinek <jakub@redhat.com>
* ld-elfvsb/common.c: New file.
* ld-elfvsb/elfvsb.exp: Add common.
2003-05-20 H.J. Lu <hongjiu.lu@intel.com>
* ld-elfvsb/sh3.c: New file.
* ld-elfvsb/test.c: Likewise.
* ld-elfvsb/elfvsb.exp: Add new weak hidden symbol tests.
Diffstat (limited to 'ld/testsuite/ld-elfvsb')
-rw-r--r-- | ld/testsuite/ld-elfvsb/common.c | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvsb/elfvsb.exp | 33 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvsb/sh3.c | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvsb/test.c | 26 |
4 files changed, 80 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elfvsb/common.c b/ld/testsuite/ld-elfvsb/common.c new file mode 100644 index 0000000000..7d05eb7f8f --- /dev/null +++ b/ld/testsuite/ld-elfvsb/common.c @@ -0,0 +1,14 @@ +int foo; +asm (".hidden foo"); + +int +_start (void) +{ + return foo; +} + +int +__start (void) +{ + return _start (); +} diff --git a/ld/testsuite/ld-elfvsb/elfvsb.exp b/ld/testsuite/ld-elfvsb/elfvsb.exp index 66546dc895..d30858a76b 100644 --- a/ld/testsuite/ld-elfvsb/elfvsb.exp +++ b/ld/testsuite/ld-elfvsb/elfvsb.exp @@ -412,6 +412,39 @@ visibility_run protected_undef_def visibility_run protected_weak visibility_run normal +if { ![ld_compile "$CC -g $CFLAGS" $srcdir/$subdir/common.c tmpdir/common.o] } { + unresolved "common hidden symbol" +} else { + if ![ld_simple_link $ld tmpdir/common "tmpdir/common.o"] { + fail "common hidden symbol" + } else { + pass "common hidden symbol" + } +} + +if { ![ld_compile "$CC -g $CFLAGS" $srcdir/$subdir/test.c tmpdir/test.o] } { + unresolved "weak hidden symbol" +} else { + if { ![ld_compile "$CC -g $CFLAGS $picflag" $srcdir/$subdir/sh3.c tmpdir/sh3.o] } { + unresolved "weak hidden symbol" + } else { + if ![ld_simple_link $ld tmpdir/sh3.so "-shared tmpdir/sh3.o"] { + fail "weak hidden symbol" + } else { + if ![ld_simple_link $ld tmpdir/weak "tmpdir/test.o tmpdir/sh3.o"] { + fail "weak hidden symbol DSO last" + } else { + pass "weak hidden symbol DSO last" + } + if ![ld_simple_link $ld tmpdir/weak "tmpdir/sh3.so tmpdir/test.o"] { + fail "weak hidden symbol DSO first" + } else { + pass "weak hidden symbol DSO first" + } + } + } +} + if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } { # Remove the temporary directory. catch "exec rm -rf $tmpdir" exec_status diff --git a/ld/testsuite/ld-elfvsb/sh3.c b/ld/testsuite/ld-elfvsb/sh3.c new file mode 100644 index 0000000000..a6d5dc8863 --- /dev/null +++ b/ld/testsuite/ld-elfvsb/sh3.c @@ -0,0 +1,7 @@ +int main_hidden_data = 1; + +int +main_hidden_func () +{ + return 1; +} diff --git a/ld/testsuite/ld-elfvsb/test.c b/ld/testsuite/ld-elfvsb/test.c new file mode 100644 index 0000000000..ca23d38b1e --- /dev/null +++ b/ld/testsuite/ld-elfvsb/test.c @@ -0,0 +1,26 @@ +#pragma weak main_hidden_data +extern int main_hidden_data; +asm (".hidden main_hidden_data"); + +#pragma weak main_hidden_func +extern int main_hidden_func (); +asm (".hidden main_hidden_func"); + +int +_start (void) +{ + int ret = 0; + + if (&main_hidden_data != 0) + ret = 1; + if (main_hidden_func != 0) + ret = 1; + + return ret; +} + +int +__start (void) +{ + return _start (); +} |