Handle DT_GNU_FLAGS_1 in readelf

* readelf.c (get_dynamic_type): Handle DT_GNU_FLAGS_1.
	(process_dynamic_section): Likewise.
This commit is contained in:
Vivek Das Mohapatra
2020-12-14 17:25:53 +00:00
committed by Alan Modra
parent c3805e4cef
commit a5da3dee21
2 changed files with 28 additions and 0 deletions

View File

@ -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> 2020-12-11 Cary Coutant <ccoutant@gmail.com>
* readelf.c (get_machine_name): Update list of e_machine values. * readelf.c (get_machine_name): Update list of e_machine values.

View File

@ -2232,6 +2232,7 @@ get_dynamic_type (Filedata * filedata, unsigned long type)
case DT_GNU_LIBLIST: return "GNU_LIBLIST"; case DT_GNU_LIBLIST: return "GNU_LIBLIST";
case DT_GNU_LIBLISTSZ: return "GNU_LIBLISTSZ"; case DT_GNU_LIBLISTSZ: return "GNU_LIBLISTSZ";
case DT_GNU_HASH: return "GNU_HASH"; case DT_GNU_HASH: return "GNU_HASH";
case DT_GNU_FLAGS_1: return "GNU_FLAGS_1";
default: default:
if ((type >= DT_LOPROC) && (type <= DT_HIPROC)) 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; 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: default:
if ((entry->d_tag >= DT_VERSYM) && (entry->d_tag <= DT_VERNEEDNUM)) if ((entry->d_tag >= DT_VERSYM) && (entry->d_tag <= DT_VERNEEDNUM))
filedata->version_info[DT_VERSIONTAGIDX (entry->d_tag)] filedata->version_info[DT_VERSIONTAGIDX (entry->d_tag)]