aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorVivek Das Mohapatra <vivek@collabora.com>2020-12-14 17:25:53 +0000
committerAlan Modra <amodra@gmail.com>2020-12-15 18:45:09 +1030
commita5da3dee21c1c2f52c1e9f5c0e5ed82fce5bb429 (patch)
tree8bbfb8c504334ae66bc93a8330ec41ad505444e2 /binutils
parentc3805e4cef747655e15f620afe6279a96d8c3fae (diff)
downloadbinutils-a5da3dee21c1c2f52c1e9f5c0e5ed82fce5bb429.zip
binutils-a5da3dee21c1c2f52c1e9f5c0e5ed82fce5bb429.tar.gz
binutils-a5da3dee21c1c2f52c1e9f5c0e5ed82fce5bb429.tar.bz2
Handle DT_GNU_FLAGS_1 in readelf
* readelf.c (get_dynamic_type): Handle DT_GNU_FLAGS_1. (process_dynamic_section): Likewise.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/readelf.c23
2 files changed, 28 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6f0ed5e..885b470 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2020-12-15 Vivek Das Mohapatra <vivek@collabora.com>
+
+ * readelf.c (get_dynamic_type): Handle DT_GNU_FLAGS_1.
+ (process_dynamic_section): Likewise.
+
2020-12-11 Cary Coutant <ccoutant@gmail.com>
* readelf.c (get_machine_name): Update list of e_machine values.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index ed252f9..22354ba 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -2232,6 +2232,7 @@ get_dynamic_type (Filedata * filedata, unsigned long type)
case DT_GNU_LIBLIST: return "GNU_LIBLIST";
case DT_GNU_LIBLISTSZ: return "GNU_LIBLISTSZ";
case DT_GNU_HASH: return "GNU_HASH";
+ case DT_GNU_FLAGS_1: return "GNU_FLAGS_1";
default:
if ((type >= DT_LOPROC) && (type <= DT_HIPROC))
@@ -11082,6 +11083,28 @@ the .dynstr section doesn't match the DT_STRTAB and DT_STRSZ tags\n"));
}
break;
+ case DT_GNU_FLAGS_1:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+
+ if (val & DF_GNU_1_UNIQUE)
+ {
+ printf (" UNIQUE");
+ val ^= DF_GNU_1_UNIQUE;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
default:
if ((entry->d_tag >= DT_VERSYM) && (entry->d_tag <= DT_VERNEEDNUM))
filedata->version_info[DT_VERSIONTAGIDX (entry->d_tag)]