diff options
| author | Xing GUO <higuoxing@gmail.com> | 2019-03-06 01:28:40 +0000 |
|---|---|---|
| committer | Xing GUO <higuoxing@gmail.com> | 2019-03-06 01:28:40 +0000 |
| commit | dd440675cf7c98bbc7b061a1cc8e4365021414e3 (patch) | |
| tree | acaf9bf047fa36df21d738e33c725fd2291e3d71 /llvm/test/tools/obj2yaml/dynamic-section.test | |
| parent | dbdfd43b573fb6550b24ae9ea597a0cfe823a297 (diff) | |
| download | bcm5719-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.test | 4 |
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 |

