Print this page
10366 ld(1) should support GNU-style linker sets
10581 ld(1) should know kernel modules are a thing

@@ -1089,11 +1089,11 @@
  * If the specified object has a dynamic section, and that section
  * contains a DT_FLAGS_1 entry, then return the value of that entry.
  * Otherwise, return 0.
  */
 GElf_Xword
-_gelf_getdyndtflags_1(Elf *elf)
+_gelf_getdynval(Elf *elf, GElf_Sxword tag)
 {
         Elf_Scn *scn = NULL;
         Elf_Data *data;
         GElf_Shdr shdr;
         GElf_Dyn dyn;

@@ -1106,14 +1106,20 @@
                         continue;
                 if (data = elf_getdata(scn, NULL)) {
                         n = shdr.sh_size / shdr.sh_entsize;
                         for (i = 0; i < n; i++) {
                                 (void) gelf_getdyn(data, i, &dyn);
-                                if (dyn.d_tag == DT_FLAGS_1) {
+                                if (dyn.d_tag == tag) {
                                         return (dyn.d_un.d_val);
                                 }
                         }
                 }
                 break;
         }
         return (0);
 }
+
+GElf_Xword
+_gelf_getdyndtflags_1(Elf *elf)
+{
+        return (_gelf_getdynval(elf, DT_FLAGS_1));
+}