diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2018-03-20 03:51:26 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-03-20 03:51:48 -0700 |
commit | 416c34d683f2a17aefe19afb466af4316c7c603b (patch) | |
tree | 9691a2e890bc0a280025b14bb06678c1ee72e47c /ld/testsuite/ld-plugin | |
parent | 9d6aac5354566288d7bc734213e5ed0c3cb3c4ca (diff) | |
download | gdb-416c34d683f2a17aefe19afb466af4316c7c603b.zip gdb-416c34d683f2a17aefe19afb466af4316c7c603b.tar.gz gdb-416c34d683f2a17aefe19afb466af4316c7c603b.tar.bz2 |
Set non_ir_ref_dynamic if a symbol is made dynamic
If a symbol is made dynamic by --dynamic-list, it has non-IR reference.
bfd/
PR ld/22983
* elflink.c (bfd_elf_link_mark_dynamic_symbol): Set
non_ir_ref_dynamic if a symbol is made dynamic by --dynamic-list.
ld/
PR ld/22983
* testsuite/ld-plugin/lto.exp: Run PR ld/22983 test.
* testsuite/ld-plugin/pr22983.d: New file.
* testsuite/ld-plugin/pr22983.t: Likewise.
* testsuite/ld-plugin/pr22983a.c: Likewise.
* testsuite/ld-plugin/pr22983b.c: Likewise.
Diffstat (limited to 'ld/testsuite/ld-plugin')
-rw-r--r-- | ld/testsuite/ld-plugin/lto.exp | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr22983.d | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr22983.t | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr22983a.c | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/pr22983b.c | 10 |
5 files changed, 49 insertions, 0 deletions
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp index 7300f48..19aec3f 100644 --- a/ld/testsuite/ld-plugin/lto.exp +++ b/ld/testsuite/ld-plugin/lto.exp @@ -573,6 +573,16 @@ run_ld_link_exec_tests $lto_run_tests if { [is_elf_format] } { run_ld_link_exec_tests $lto_run_elf_tests + run_cc_link_tests [list \ + [list \ + "Build pr22983" \ + "-Wl,--dynamic-list,pr22983.t" \ + "-flto" \ + {pr22983a.c pr22983b.c} \ + {{readelf {--dyn-syms --wide} pr22983.d}} \ + "pr22983" \ + ] \ + ] } if { [is_elf_format] && [check_lto_shared_available] } { diff --git a/ld/testsuite/ld-plugin/pr22983.d b/ld/testsuite/ld-plugin/pr22983.d new file mode 100644 index 0000000..af1d710 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr22983.d @@ -0,0 +1,9 @@ +Symbol table '\.dynsym' contains [0-9]+ entries: + +Num: +Value +Size Type +Bind +Vis +Ndx Name +#... + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +var_attr_used_enabled + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +var_attr_used_disabled +#... + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ +func_attr_used_enabled + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ +func_attr_used_disabled +#... diff --git a/ld/testsuite/ld-plugin/pr22983.t b/ld/testsuite/ld-plugin/pr22983.t new file mode 100644 index 0000000..ca31f10 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr22983.t @@ -0,0 +1,6 @@ +{ +var_attr_used_disabled; +var_attr_used_enabled; +func_attr_used_disabled; +func_attr_used_enabled; +}; diff --git a/ld/testsuite/ld-plugin/pr22983a.c b/ld/testsuite/ld-plugin/pr22983a.c new file mode 100644 index 0000000..283f263 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr22983a.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +int func_attr_used_disabled(int val); +int func_attr_used_enabled(int val); +extern int var_attr_used_enabled; +extern int var_attr_used_disabled; + +int main(int argc, const char **argv){ + printf("%d\n", var_attr_used_disabled); + printf("%d\n", var_attr_used_enabled); + printf("%d\n", func_attr_used_disabled(1)); + printf("%d\n", func_attr_used_enabled(1)); + return 0; +} diff --git a/ld/testsuite/ld-plugin/pr22983b.c b/ld/testsuite/ld-plugin/pr22983b.c new file mode 100644 index 0000000..1b66ed8 --- /dev/null +++ b/ld/testsuite/ld-plugin/pr22983b.c @@ -0,0 +1,10 @@ +int func_attr_used_disabled(int val){ + return val + 1; +} +__attribute__((used)) +int func_attr_used_enabled(int val){ + return val + 1; +} +__attribute__((used)) +int var_attr_used_enabled = 0b0101010101; +int var_attr_used_disabled = 0b0101010101; |