aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-elf/shared.exp
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2006-09-07 17:16:34 +0000
committerH.J. Lu <hjl.tools@gmail.com>2006-09-07 17:16:34 +0000
commit55255daec3c2b3f212acfdfe9cefe9fd2899253f (patch)
tree1c54880b4a75b647aa760b69aa0c746024b269c3 /ld/testsuite/ld-elf/shared.exp
parent7c94efc52259df93dbe9aa3e4dcb1334bd460aef (diff)
downloadgdb-55255daec3c2b3f212acfdfe9cefe9fd2899253f.zip
gdb-55255daec3c2b3f212acfdfe9cefe9fd2899253f.tar.gz
gdb-55255daec3c2b3f212acfdfe9cefe9fd2899253f.tar.bz2
bfd/
2006-09-07 H.J. Lu <hongjiu.lu@intel.com> * elf-bfd.h (elf_link_hash_entry): Add a dynamic field. (bfd_elf_link_mark_dynamic_symbol): New. (SYMBOLIC_BIND): New. * elf32-i386.c (elf_i386_check_relocs): Replace info->symbolic with SYMBOLIC_BIND (info, h). (elf_i386_relocate_section): Likewise. * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. (elf64_x86_64_relocate_section): Likewise. * elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise. * elflink.c (bfd_elf_link_mark_dynamic_symbol): New. (bfd_elf_record_link_assignment): Call bfd_elf_link_mark_dynamic_symbol on new entry. (_bfd_elf_merge_symbol): Likewise. (_bfd_elf_export_symbol): Return if the symbol isn't exported. (_bfd_elf_fix_symbol_flags): Replace info->symbolic with SYMBOLIC_BIND (info, h). (_bfd_elf_dynamic_symbol_p): Likewise. (_bfd_elf_symbol_refs_local_p): Likewise. (bfd_elf_size_dynamic_sections): Updated. include/ 2006-09-07 H.J. Lu <hongjiu.lu@intel.com> * bfdlink.h (bfd_elf_dynamic_list): New. (bfd_link_info): Add a dynamic field. ld/ 2006-09-07 H.J. Lu <hongjiu.lu@intel.com> * Makefile.am (CXX): Set to g++. (CXX_FOR_TARGET): Likewise. * Makefile.in: Regenerated. * NEWS: Mention --dynamic-list. * ld.texinfo: Document --dynamic-list. * ldgram.y: Support dynamic list. * ldlang.c (lang_process): Call lang_finalize_version_expr_head on link_info.dynamic if needed. (lang_append_dynamic_list): New. (lang_append_dynamic_list_cpp_typeinfo): New. * ldlang.h (lang_append_dynamic_list): Likewise. * ldlang.h (lang_append_dynamic_list_cpp_typeinfo): Likewise. * ldlex.h (input_enum): Add input_dynamic_list. * ldlex.l: Handle it. * ldmain.c (main): Initialize link_info.dynamic. * lexsup.c (option_values): Add OPTION_DYNAMIC_LIST and OPTION_DYNAMIC_LIST_CPP_TYPEINFO. (ld_options): Add entries for OPTION_DYNAMIC_LIST and OPTION_DYNAMIC_LIST_CPP_TYPEINFO. (parse_args): Handle OPTION_DYNAMIC_LIST and OPTION_DYNAMIC_LIST_CPP_TYPEINFO. ld/testsuite/ 2006-09-07 H.J. Lu <hongjiu.lu@intel.com> * ld-elf/dl1.c: New file. * ld-elf/dl1.list: Likewise. * ld-elf/dl1.out: Likewise. * ld-elf/dl1main.c: Likewise. * ld-elf/dl2.c: Likewise. * ld-elf/dl2.list: Likewise. * ld-elf/dl2a.out: Likewise. * ld-elf/dl2b.out: Likewise. * ld-elf/dl2main.c: Likewise. * ld-elf/dl2xxx.c: Likewise. * ld-elf/dl2xxx.list: Likewise. * ld-elf/dl3.cc: Likewise. * ld-elf/dl3.list: Likewise. * ld-elf/dl3a.out: Likewise. * ld-elf/dl3b.out: Likewise. * ld-elf/dl3header.h: Likewise. * ld-elf/dl3main.cc: Likewise. * ld-elf/shared.exp: Updated. * lib/ld-lib.exp (run_ld_link_exec_tests): Take an optional argument for source language. Use CC/CXX for link, depending on source language. (run_cc_link_tests): Likewise.
Diffstat (limited to 'ld/testsuite/ld-elf/shared.exp')
-rw-r--r--ld/testsuite/ld-elf/shared.exp52
1 files changed, 51 insertions, 1 deletions
diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
index 9222358..3090551 100644
--- a/ld/testsuite/ld-elf/shared.exp
+++ b/ld/testsuite/ld-elf/shared.exp
@@ -38,7 +38,7 @@ set build_tests {
{foo.c} {} "libfoo.so"}
{"Build versioned libfoo.so"
"-shared -Wl,--version-script=foo.map" "-fPIC"
- {foo.c} {} "libfoov.so" "-fPIC"}
+ {foo.c} {} "libfoov.so"}
{"Build libbar.so"
"-shared" "-fPIC"
{begin.c end.c} {} "libbar.so"}
@@ -66,6 +66,15 @@ set build_tests {
{"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 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"}
}
set run_tests {
@@ -105,8 +114,49 @@ set run_tests {
{"Run hidden libbar.so with versioned libfoo.so"
"tmpdir/libbarhfoov.so tmpdir/libfoov.so" ""
{main.c} "hidden" "hidden.out"}
+ {"Run with dlopen on libdl1.so"
+ "--dynamic-list=dl1.list -ldl" ""
+ {dl1main.c} "dl1" "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_cc_link_tests $build_tests
# NetBSD ELF systems do not currently support the .*_array sections.
run_ld_link_exec_tests [list "*-*-netbsdelf*"] $run_tests
+
+# Check if 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++"}
+}
+
+set run_cxx_tests {
+ {"Run with libdl3a.so"
+ "tmpdir/libdl3a.so" ""
+ {dl3main.cc} "dl3a" "dl3a.out" "" "c++"}
+ {"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_cc_link_tests $build_cxx_tests
+run_ld_link_exec_tests [] $run_cxx_tests