summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/obj2yaml/dynamic-section.test
diff options
context:
space:
mode:
authorXing GUO <higuoxing@gmail.com>2019-03-06 01:28:40 +0000
committerXing GUO <higuoxing@gmail.com>2019-03-06 01:28:40 +0000
commitdd440675cf7c98bbc7b061a1cc8e4365021414e3 (patch)
treeacaf9bf047fa36df21d738e33c725fd2291e3d71 /llvm/test/tools/obj2yaml/dynamic-section.test
parentdbdfd43b573fb6550b24ae9ea597a0cfe823a297 (diff)
downloadbcm5719-llvm-dd440675cf7c98bbc7b061a1cc8e4365021414e3.tar.gz
bcm5719-llvm-dd440675cf7c98bbc7b061a1cc8e4365021414e3.zip
[BinaryFormat] Add DT_USED tag into dynamic section.
Summary: This tag is documented in https://docs.oracle.com/cd/E19253-01/817-1984/chapter6-42444/index.html Though I could not find some docs that describe it in detail, I found some code snippets. 1. ``` /* * Look up the string in the string table and get its offset. If * this succeeds, then it is possible that there is a DT_NEEDED * dynamic entry that references it. */ have_string = elfedit_sec_findstr(argstate->str.sec, strpad_elt.dn_dyn.d_un.d_val, arg, &str_offset) != 0; if (have_string) { dyn = argstate->dynamic.data; for (ndx = 0; ndx < numdyn; dyn++, ndx++) { if (((dyn->d_tag == DT_NEEDED) || (dyn->d_tag == DT_USED)) && (dyn->d_un.d_val == str_offset)) goto done; } } ``` https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/cmd/sgs/elfedit/modules/common/syminfo.c#L512 2. ``` case DT_USED: case DT_INIT_ARRAY: case DT_FINI_ARRAY: if (do_dynamic) { if (entry->d_tag == DT_USED && VALID_DYNAMIC_NAME (entry->d_un.d_val)) { char *name = GET_DYNAMIC_NAME (entry->d_un.d_val); if (*name) { printf (_("Not needed object: [%s]\n"), name); break; } } print_vma (entry->d_un.d_val, PREFIX_HEX); putchar ('\n'); } break; ``` http://web.mit.edu/freebsd/head/contrib/binutils/binutils/readelf.c 3. ``` #define DT_USED 0x7ffffffe /* ignored - same as needed */ ``` https://github.com/switchbrew/switch-tools/blob/master/src/elf_common.h Reviewers: jhenderson, grimar Reviewed By: jhenderson, grimar Subscribers: emaste, krytarowski, fedor.sergeev, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58762 llvm-svn: 355468
Diffstat (limited to 'llvm/test/tools/obj2yaml/dynamic-section.test')
-rw-r--r--llvm/test/tools/obj2yaml/dynamic-section.test4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/test/tools/obj2yaml/dynamic-section.test b/llvm/test/tools/obj2yaml/dynamic-section.test
index d8fb7e9928c..28066dd16ad 100644
--- a/llvm/test/tools/obj2yaml/dynamic-section.test
+++ b/llvm/test/tools/obj2yaml/dynamic-section.test
@@ -122,6 +122,8 @@
# CHECK-NEXT: Value: 0x0000000000000035
# CHECK-NEXT: - Tag: DT_VERNEEDNUM
# CHECK-NEXT: Value: 0x0000000000000036
+# CHECK-NEXT: - Tag: DT_USED
+# CHECK-NEXT: Value: 0x0000000000000001
!ELF
FileHeader:
@@ -246,3 +248,5 @@ Sections:
Value: 0x0000000000000035
- Tag: DT_VERNEEDNUM
Value: 0x0000000000000036
+ - Tag: DT_USED
+ Value: 0x0000000000000001
OpenPOWER on IntegriCloud