Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 503838
Collapse All | Expand All

(-)a/elf/get-dynamic-info.h (-3 / +13 lines)
Lines 66-73 elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp) Link Here
66
	info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
66
	info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
67
	     + DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn;
67
	     + DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn;
68
      else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)
68
      else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)
69
	info[DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
69
	{
70
	     + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;
70
	  /* Use local 'tag_ix' to avoid gcc picking large offset:
71
	       DT_ADDRTAGIDX (x) = 0x6ffffeff - x
72
	     which leads gcc to use R_IA64_REL64LSB relocation.
73
	     We cannot allow it as 'elf_get_dynamic_info' is called
74
	     before relocations are processed by 'ld.so'.
75
	     https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60465#c32.
76
	   */
77
	  d_tag_utype tag_ix =
78
	      DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
79
	    + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM;
80
	  info[tag_ix] = dyn;
81
	}
71
      ++dyn;
82
      ++dyn;
72
    }
83
    }
73
84
74
- 

Return to bug 503838