ELF>=@@ @8 @ @@@@@88@8@@@ hh$ hhhp p hhTT@T@DDPtdHH4 4 Qtd/lib64/ld-linux-x86-64.so.2GNUGNU9ש.$#(ugDU R {$Uf2t |qX@|pTŹ@D8ĉCEW&ݣkgUa{G} E)i@ WF |b  ~ % 4    ~D  rO t M  " }k  . E3 e   3  | #M`4+ 0^ p G  w [   : T 4 N  !  h < T e ,w   L TVPn w vG HGY   hW H-(BLP;@$ hG 2@'3@Q6@ hoh i;@ hh Ph !h h h xi  h !he hhI@h `hwftfXtf~T tfZ7h%M(S;h% (S;0h%(S;h%(S;`h%,(S;h%p(S;h%'S;h%'S;h% (S;h%,(S;ՍS;@h ֍S;h6S;h6S;h6S;h 7S;6@x7S;@h7S;Ph08S;`h89S;%P:(S;:S;%M(S;:S;%-(S;;S;% (S;0;S;%(S;=S;%(S;>S;%,(S;?S;%p(S;@S;%'S;AS;%@p(S;BS;%'S;BS;% (S; CS;%4(S;CS;%,(S;xDS;%0 (S;HS;@h8IS;0hIS;hXJS;hPT;%P:(S;PT;%(S;QT;% (S;0XS;8XS;@XS;`XS;xXS;XS;hpXS;`hxXS;XS;XS;PhXS;hXS;@XS;hHXS;hPXS;`XS;XS;6@XS;XS;hXS; hXS;%M(S;0XS;%@p(S;S;'S;S;'S;S; 'S;S; 'S;S; 'S;S;6@ii 2 ti < ui H hhhhOhhPhhhhhhh h@h`hhhhh h(h0h8h@h HhPh Xh `h hh phxhhhhhhhhhhhhhhhh h!h"h#h$h% h&(h'0h(8h)@h*Hh+Ph,Xh-`h.hh/ph0xh1h2h3h4h5h6h7h8h9h:h;h<hh=h>h?h@hAhBhChD hE(hF0hG8hH@hIHhJPhKXhL`hMhhNphPxhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`hahbhchdhe hf(hg0hh8hi@hjHhkPhlXhm`hnhhophpxhqhrhshthuhvhwhxhyhzh{h|h}h~hhhhhhh h(h0h8h@hHhPhXh`hhhphxhhhhhhhhhhhhhhhhhhhhh h(hH : vH5گ(%ܯ(@%گ(h%ү(h%ʯ(h%¯(h%(h%(h%(h%(hp%(h`%(h P%(h @%(h 0%z(h %r(h %j(h%b(h%Z(h%R(h%J(h%B(h%:(h%2(h%*(h%"(hp%(h`%(hP% (h@%(h0%(h %(h%(h%(h%ڮ(h %Ү(h!%ʮ(h"%®(h#%(h$%(h%%(h&%(h'p%(h(`%(h)P%(h*@%(h+0%z(h, %r(h-%j(h.%b(h/%Z(h0%R(h1%J(h2%B(h3%:(h4%2(h5%*(h6%"(h7p%(h8`%(h9P% (h:@%(h;0%(h< %(h=%(h>%(h?%ڭ(h@%ҭ(hA%ʭ(hB%­(hC%(hD%(hE%(hF%(hGp%(hH`%(hIP%(hJ@%(hK0%z(hL %r(hM%j(hN%b(hO%Z(hP%R(hQ%J(hR%B(hS%:(hT%2(hU%*(hV%"(hWp%(hX`%(hYP% (hZ@%(h[0%(h\ %(h]%(h^%(h_%ڬ(h`%Ҭ(ha%ʬ(hb%¬(hc%(hd%(he%(hf%(hgp%(hh`%(hiP%(hj@%(hk0%z(hl %r(hm%j(hn%b(ho%Z(hp%R(hq%J(hr%B(hs%:(ht%2(hu%*(hv%"(hwp%(hx`%(hyP% (hz@%(h{0%(h| %(h}%(h~%(h%ګ(h%ҫ(h%ʫ(h%«(h%(h%(h%(h%(hp%(h`%(hP%(h@%(h0%z(h %r(h%j(h%b(h%Z(h%R(h%J(h%B(h%:(h%2(h%*(h%"(hp%(h`%(hP% (h@%(h0%(h %(h%(h%(h%ڪ(h%Ҫ(h%ʪ(h%ª(h%(h%(h1I^HHPTIPBH`BH0vAHH (HtHÐUHSH=(uKhH(HhHHH9s$fDHH](hHO(H9r;(H[fff.H=(UHtHthÐH\$Hl$Hľ(Hue(v'HHl$H\$`B1Hzf.HHHl$HŠhH\$MB1HIfH-a(1PBHH1qfDSH~4HcxB1H CHߺC[1HcmB1H CfU1HBSHHH=(|H9w+ H=(1BHQH9sH=u(HC[]1.fffff.H\$Hl$HHՋy(HBHDuH\$Hl$HHH=(C1H=(HH=ݶ(H\$CHl$1Hfffff.AWAVAUATUSHD (EwH$0Hl$pH$((E1D$PHD$8IHD$HID$dHD$HHT$H|$HfD+L|$0I|H9H|$8'"HD$8'HH='HFHT$8HH|$8HHD$8HT$0HH|HI"L)LHHHH,H]HT$0HLHHHHRHTIHHHD$0"L;d$tLHCD(HEHIHT$0H,H|$8HI~H|$HH9!M=F(A!McG-BAtc(=zAw HDB(C7=.wHBD9T$P1D|$PC-B|$D7HcD$DD5(DBHD$XA)ЉT$TEHH@HHTH$HT(H$HD(H$D$D=ZD((EHcT$THL4HT$XH)ID@BL)IH$InAMcC- BIFH$HEH$HEЍ.WG- BHL|$0"D`BEA^DD$dE|$duG=X(t$PiĬB5(HLMcHG-BAtAA.wMcfC6Bt7L9C- B֬BHH<=Ƽ(D+t@C6`B~H(H5(AD$dHUH(HUH(HUH=&(BC1IcH=(H BH=(C1{fA=(tt$PiB^ (t-HHBHH B'I9uL;d$tLHD[]A\A]A^A_fDH=A(DǫB1*$ŠBHcf;BD`B5*(1( (E1(H=(B1lH=(BC1CH=l(Di/H=X(C1fHL$8H=4(B1fDH=(B1lHL tH|$XL$D1BD?`BH=ï(D\$TEHD$XEHl$hD@BL)E1H@L|H݋\$TH=q(ABD1)IcH=O(L BAIH=0(1CD9HHl$h DH=(BC1HD$XH=߮(H$D@BDH=(C1~HcT$TD (HHH)L4L)EIHLB̸((|$dT$dH(Hq(EHEHw(HEHt(HE1A9f.H=(ګB1EADD$DV8}HuHUIHyD-r(A#Mc#B1JhD-I(AD->(ZT -((DLm1BLH1uH(4B H}Hu H}Hu H}Hu H} H}Hu{ H}Hui H}HuW H}Hu H}Hu oH}Hu ]H}Hu KH} gTH$HuHU&HTH$lHuHU^)TH$MHuHU| TH$.HUHu?HMWSH$ HuHUSH$HuHU SH$Hu7QH$HuH}4;H$1)QH$Hu>QH$dHu=QH$IHu?zQH$.Hu@_QH$HuyDQH$HuZQH$HuQH$HUHuRH$HUHu$`RH$HUHu%ARH$eHu&QH$JHu{PHuH¿.QH$HuPH$Hu4PH$HUHuAQH$HUHuBQH$HuH}7H$HuIOH$uHuKOH$ZHEH$IHDŽ$8HEH$'HDŽ$HEH$HDŽ$HEH$HDŽ$DŽ$uDŽ$vDŽ$wDŽ$, { & rLMLEHMHpH@E~($B< 3f+ HMHUHuH}趖H}H.(1ɾBZhH$  HuH}j U D HMHHLMLEHU蓔 u@k HUE=86HLH}j93 ,Q(B(3($((((HEH$HDŽ$HEH$HXH$|HEH$kHDŽ$ZHDŽ$IHDŽ$8HEH$'HDŽ$QBHDŽ$HU@HPHUHH$H}yZDHuH}Δ4@fD|MHuH}LMLE؋U\HEH$HExB86LxA BE1AIAt)I6L uD4AH$[BLkBLQtd4H$H|$1H|$HxBLmL{u H}BL_u H}BLC&HEHH$"H|$HHEH$11UH$H}1UH$H}1xUH$Hu1`UH$HuH}FUH$H(Hu11cH$iH(Hu1cH$EH}Ha(1HucH$"H}H>(HuhcH$H(H$HEH (HEHMHHHuH@HHH$HEHѕ(Hŕ(H$HEH(HEH$HEH(jH(1ɾB1bH$HH}Hd(1ɾBbH$$HD(1ɾB1nbH$-Օ(fDHu11 ^HuH}1]HUHuH}]Hu1YH$H}HuuYH$iD-<(A#McC1JhD-(AD-($-(H}YR?D-ؔ(A#McB1~JhD-(AD-(HDŽ$HEH$DH=(BC1DD$(6H=_(iD"H=K(C1 DD$(BA@QE0IMA;1(BLH1[B1LH1[1/H$Ptd/H$DŽ$DŽ$f.HtEHGG HG@H~(HWG,G<HHWt H d(H;u!u H=([H.(@fHtHt@HH֍(~HH΍(H([ÐHOfD?H'f.fHC^HW(CHHA(lfff.HSHNH(HH (HH8t55(H=(@7H0H~=(H~ tHHH Ќ(HC H(HCH~(H(Hؕ((([H(Hff.SHH`(1Ht HZ(HH9tqHttHE(HH8t P(H =(HHJ >(J HC H,(HCHɋ(H (H#( (([fDHы(HLl$H\$IHl$Ld$H(((  B{(H(H@hnC h1Ht H d(H LH h<(z(Hſ@A%A|$HhHHA HxHCL HCHD(HCD(HCDc C$C(C,HC8C<HCH\$Hl$Ld$Ll$ H(!1PC$Rv(fH\$Hl$H(HHw1H\$Hl$ H(|7u|7uٿ@Ht$#HHt$HtSHHH$HuH]H]E$HEu E(E,E8E<\H$lCH$Ht$H$f.ATUDeSHMcHLHtq~MHHt  H HH9uHcLHD((Ht@$H[]A\ÿwCHD$#HD$@$H[]A\ÿ@CHD$HD$vDSHgH߉[|(*|(FF||(EEh|(DDT|(,,@|(**,|(CC|(JJ|(##{(""v{(!!b{(N{(--:{(++&{(PPx{(LLd{(77P{(VV<{(NN({(MM{(OO{(99z(88rz(==^z(::Jz(..6z())"z())tz(<<`z(llLz(;;8z(``$z(BBz(AAy(>>y(@@ny(??Zy(&&Fy(%%2y($$y( py(KK\y(Hy(4y(rr y(II y(11x(00~x(;;jx(::Vx(((Bx()).x({{x(}}lx(==Xx(<<Dx(%%0x(//x(--x(++w(**zw(??fw(!!Rw(~~>w(||*w(&&|w(,,hw(>>Tw(@w(,w(w(  w(  v(  vv(  bv(Nv(:v(&v(xv(dv(Pv(  uHuHȡ럀 /n( (n(o(n(o(n(L=|m(ML賡HD$HH`(HHD$0蚡Ld$@HD$8AH n(L褣HtOIItFH|$0HLƟuAt n(8uMDLd$@{fDLd$@HT$8HD$HH|BD Jn(IH`(Ll(܃CHLH$1}H=~l(聠L=rl(DBMrf41qCzH1)D$,H!l(R( R(Gl(8l({H=4_(jk([ 7l(O%+l(C l(7%l(+H=^(11若HJH;m(?k(3k(XQ(k(H^(H7l(H^(H,l(Hp^(=HHT$~HIHT$+IGHD$0:tAu"qC1H1-(H^(D$0)HcȉD$HHL$ ,T$H5](HIǃHcРHL$ H$ADH|$0NHD$8H$8@H|$81HLqKH=](H7#H=^(61j(O(|j( Yj(s%Mj(g Aj([ 5j(OEj(@H=\(11蠣j(%?i(k(j(j( i(%i(L=_c(H=\(S.L=Lc(h(Ha\(H"i(L=c(H=G\(.L= c(g(謦=h(t h(=h(Lh(=x,=h(t uh(=jh(Zh( ,=Mh(t Ah(=6h(&h(=h(h(h(}i(ji(oi(`i(sIi(d6i(U/i(FH=Z(H_11蝡?i("H=Z(H~11YH"i(H=fg(H蘛H=Z(I艛I|迟D h(IH}Z(L&g(܃CHLH$1H=g(L=f( g(pL=)Z(MLC %CL>&h('L=Y(CLSf(=g( f(%f(g(e(vf(L(1ޟ gf(tf(sH_(H=%Y(H_(*d(芣H_(:0.e(!f(HX(NCHu HHX(MtLRH=X(֝IH5X(/C H5qX(4CH5[X(:CH5EX(@Cvd(gd(XL=X(^CL@ e(-H=W(EH=W()jc(Ad(H=W(,H=Pd(H1H?HHH8urHcHL<HcHHT$輝H 5W(HT$Hc(H J8X 4d(H=ye(CHhe(3HV(8uHc(Ht : Hkc(9V(% c(d(d(d(d(H=V(11VL c(H^V(Hc(H=KV(H$1H(H$8eL=V(1˂CLH1 ;HU(Hb((H=U(7$Hd(4Bc(c(c(H=U(11?Hb(ƒ Јb(H5kU(HT$P|yD$h%=@eH=9U(1Ҿ KhT$, 78D$,JHc1M<ľCҘH1L a( L$, @D$,H=T(! a(=a(8G(~ =a(a(=a(G(Z =a(pa(sH=,T(1`b(b(G9a(8`() a(H=S(J 1`(`(H=S(L=S(C LCL譗CL蘗CL胗{1`oC LH1-Xa(Ak_( `(@+H=R(H=5U(r^(V(?V(HU(H=R(_(H&Au,HxR(oC1HD$0BHt$0H1cD H?R(H_(s^(d^(Uw^(F%_(:H{`(C1E1迕HHƿ1荐C1蜕H1mHD$0C@HT$0HHHT$8HC19E1DC C1 HHLCMtbHhCtIC1ʏL1۔CH¿1觏L1踔HøAADHHHCpHHCtHHCtC C1HLP(H^(&](q%K](e\(V\(GV(8]()\(T\( E\(5]( \( \(L=O(C L\(\(H=_O(111H=HO(~[(oADH5QP( $uHt$81ΒCH¿1蚍AHD$0@A#C1蒒Hƿ1^fDH5O( 褕u1#CNH1H\(1;C'HHƿ1谏HHHt"Hf1HcCˌHHuH諎C1誌Hk\(RC1貑HHƿ1而H=N($C1cH$\(oC1kHHƿ19H=N(=C1mC1+HƺoC11DEAfIغCC1NjD$,HIDt$,I$CAŸEHtDH1觐cCH¿1sH1脐H茍El[ALHHCCLHH`CHtƋCtE1C4BAEHEʅIغCC1ΊD$,C1诊1CL}>(X(X(nCLtCLޏSY(Y( CL諏9X(HY(1xqCH191HqCH1<.X(sX(1C赎H11C蕎H1X(X(1qCWH1}1nC7Ht$0H1X18oCLH15`CLS<(/W(-W(010pC迍H11ppC蟍LH1H=I(HJV(1ÃCdH11pCDLH1gCL腍;(eV([V(bpC1H1HI(H=H(/HU(# HH(HU(H@HA1Ҿc1pCxLH1H:tBDH21f:t 1fDG:FuG:FuG:FuHH:uHH<*uffffff.HH@AWAVAUATIUHSHHt$HyS(Lx MtbLE1f.Hs8DHt!MDv tHHH=T(AԅtD3u A@LDH[ HuME ƒ=MLE1fDIw8AHt M^ tHHH=wT(Aԅt3] uA@MDM MuDMHD$ME1HL[]A\A]A^A_fD@@0E1Mw@Iw8AHt M^ tHHH=S(Aԅt 3] MDM Mu@M"E1@Iw8AHt M^ tHHH=OS(Aԅt 3] @MDM MuDME1@Iw8AHt M^ tHHH=R(AԅtE 1ÁtA@tuMM MusMtVE1Iw8AHt M^ tHHH=R(Aԅt 3] @MDM MuE1 H|$!HD$L(E1ME1IO8AHtQ 1€ MDM Muff.HH &P(HHt1H9@1Ƀzvr$CfDHu3Hr~t)Hv>.u u~uHHHHuHH1HuHtHR8HtHtB t"HfDHH1HdDfffff.B@Hu'GT@t HG@iHfDHG@iHHff.HHSHZ0H9Y0r[fHHHJ0H9H0rvf.R9P|Ðfffff.UHSHHN(HtHH[0HuH[]UHSHHF(HtHH[(HuH[]uH=%5(F(f.F(t@HH(Ht@HPH@0HP(H@HuHM(HtH@ HuHO(HHtDHP8H@8HP@H@HuDO(tJ HB`HtH 8O(H9tDfx xB u%=tHz8tAfffff.u H=E(uH=E(5M(D M(EuH=uE(5L(DH=y3(t'[F(fD(SHt1C|H1HX>(HAHXHXH%>([ff.UHoH2HT$bHT$uBh+ChH[ff.Hl$Ld$HLt$H\$ILl$HH(IbtH$Hl$Ld$Ll$Lt$ H(ÐI^hbENIH@H@H(Eu:Mt ED$Eu+IFhHtHXH@HuL+fDHHHHtA|$HHxHHHHuL+HfDHH(H=hvHPH@H(HG(HúCWCfffff.ff.HH=(H=0hs!H(HHH=(H(HúCWCHUSHH^HHt0HR]HDtfDHUHuEH[]AUIATUHSH ]HxBaLH\Hx.aUIH؄t$H@hUHHuAULt*IfhAUHIuCHCH1CLCLA:$u)t%HL1HHt,J:HtH[L[H[]A\A]lH\$Hl$HLd$Hl'(HC;Et1H$Hl$Ld$HfHC HtտC HtĿC HtC HtH= (t+HuH#AH (HuH8 A9mH (a OBDW E@t2@?tR@*tL@[uD@?t;*t6[t1HuM MIqHtWAHHt@*t;@?t5@[t/1D*t?t[t HuHv*tH[]A\A]A^A_|uM MxAHL"MHRMD fE11EIztXA?A?tLA*A*t@A[A[u$2@@?@*@[H4 @uE1D?1E1EtLA??tAA**t6A[[u)f@?t@*t@[tIB4/@uAH@HII9IFH9MMLJ: \HEOA?EA*:A[/H%HA(pH@@%AA,(^H@@ @1AuT@*t[tIAt:?uMt0HHt5L[āH@@`@HcփH\HHX HHKu+*t[tHt?uHt HcփH\HHHuOH@@P@4H@@P@'H@@@fHH' fH?'HPHfDAUATIUSHHH'H I(AU@Me8AU@ ;::AMAI]AU@H1ҿC1IEAE@AMAAE@f(IE0IE(IE  AE@f'߃ AE@(࿃ AE@h(AMA AE@Hq(L(IE0Hc(HL[]A\A]DHNI@Hv#WC|AE@AMAD$C{HCHË=(AMAI]I] AMAAE@fDAMAI]AMAI]AE@fDAMAI]I]AE@AMAsAMAI]I]AE@AMAKAMAI]f.fDH\$Hl$HLd$Ll$HLt$H(HhAIMtHHt t}HHtx t_0HHHhHHD@ Lh Hh(M+u(EL`LpMe8H$Hl$Ld$Ll$Lt$ H(ÐL9h uH9O yfDfffff.H\$Hl$HHHH; (HHH. (9NH=i(HCtH\$Hl$HHDH\$Hl$HÐH\$Hl$HHHHtWCHHmHEH\$Hl$HAWQB AVAUATUHSHHH HHL5e(ME1MMuTfDMd$MtDMM<$HLLu1CKHH1Md$MuMvMuMt_HHLHEIEHEImH[]A\A]A^A_1C?KH1eL5 (M1C1KHHH1E11x@M<$HLIKMDfffff.AUAATU1SHHHtHP@HT$HPHt2HtHxptVEtHIVL8IHR0HPLh`ǀIFf.HhPf.HXpf.MtLH (H (H (H([]A\A]A^A_UHHSHHHH=g (HXHwHAH`AH@AA@H9 (HxHtHhPHXpH[]Hx`uHP(HJ@H9H@uHRHHPHfAUH1ɾQBATUSHH(Hh0LHTCHxGHEHHلu5<_tHt6htHHuHBHx/GIع CIHHǾ1~GH@Q1HL脞HlHBHx FIعCHIHǾ1*GH=HIſ@LHƿ+mL1HHHH[]A\A]AfDAWIAVAUMATIUHSHHHHLD$(u'@/WCQHHthIHÃ{w܋C$ŸCfHU8HD$(H{H+B(HCHHE8HC@D (HHcHT$(HU8HB8HHuf.HD$(HH[]A\A]A^A_@HU8HD$(hH{H+B(HT$(HC0HE8HC(̶C-CxWCHE8L{HC HE8H} (I$MLpt:IHL$<@iLHG-T$<I$LpIHD$(HuPHB@fA~ M|ANhLM8A;Ih3AHIHFTA!A)5HI+Q( o(IVXIV8HHHI+Q(HIQ8*DH{0HS0$LD$(MLH$HD$(fHD$(Hu8HT$0HD$0Lc (L' ( (AD$fH{X}H{XHT$(h軴D (E= (t"Lc0C1ALH1HC8HIHQ (HRRIhLD$(,H{XMHMdHHI!M9= (uH{Xt?= (t6C1Ls0LD$ $ALD$ LHL1L)<Ls8Mf0Mf(MHC8H$HC8H@XHKPH{HS$MHމ$Ls8IhIF( (HD$(sxHS8H|0HB8HHHH!H+B(HHB8Lc@MH{`H)C1bHS8HB0Ls8LIhF>AF  IF8HT$( S(HHHT$(H{hHtHT$(hkHS@HHC8@ %=$HD$(HB(HCHHH;C@Hs8F HV8 'Hꋌ$HV0HP(fHC8HsH1HHH0 KHSH{;$LD$(HS0MLH<$H=(HD$(fDHCHU8HD$(H+B(HCfHM8IV(H+Q(IVXID$8.zH;-S(IHT$0LD$(L9t7 'HE8L)HLHHHHuHE8H LD$0LD$(ED$8CH(H@(H(HD$(@AER <'9B‰‰HU8HL$(HB8͸ƸDI~8WCfMPH(HH9WC@#pHSHt H:Lc0PC1(H5/(H=((HH (HHHIL%(HH!HFHIHH!H(I!H9H(H'HtHPH@0HP(H@HuHH'HtH@ HuH'HHtDHP8H@8HP@H@HuHuH56(I9H'HHH(H1fLG(I9rL9v DGhD9ABHHu@HH9=(HcH!H'H5(HtHJHB0HJ(HRHuHH'H#HR HuH q(H5J(HAHHHH!HK(H!HIH1IIHH9H\''HtDHPH@0HP(H@HuH'HtH@ HuH9'HHtDHP8H@8HP@H@HuH#HP8H@8HP@H@HuHH5N'H7'H('H5)'@H)I)H'_H'1+USHDk'E-''H\$ f.{'H'HtfDHPH@0HP(H@HuH8'HtH@ HuH'HHtDHP8H@8HP@H@Hu1HD$ DL$ E'LuH[]HE'Ht!HPH@0HP(H@HuH'HtH@ HuH)'HHtDHP8H@8HP@H@Hu1H[]@!'XfH='11''RHc'HtfDHPH@0HP(H@HuH 'HHtH@ HuHA'HHtDHP8H@8HP@H@HuHtaL 'DExBHq8Ht9H~@uF" uH~HtQH9wtTHdžHdžHI Hu'Hf.H 'uI9uHHt$P tHHuHdžHdžuHyhtLHFN Ht#HHxt*HGAGfHIu@IуH~USHHGv H[]Hw(HHH}H 'H'HH)HH'HH95'IHcHHcH!H5'HH'H)I)L94HHEHHEH 'HHHUH[]H i'h*HJ'H K'SfD i'U@Hm11WHC(HAWAVAUAATUSHHHo8.H31C/H;+D`AfAA~HC`HtH 'H9EL%' 'HHH1L3C貳HC@H9t>Ht9A#fD胧AuLk@?C1-LH1kHC`HtH=s'H9t2H[]A\A]A^A_11oE1='y`H='Hھ@' 'HNd%L;%'vL%'H[]A\A]A^A_fD 'HLcXL`(HLMtIFIvH<'HH&'HLcH)L9LL-'L9 'HHcHHcH!H 'HH'H)H)H9HIH'Ht1H0H@уHItuIv@L<,I~t1E1I|AH?DI;FrL;-G'v L;-V'r;Lh*H3'jh'H'H'L-'L-'c /'f.S11HHh(Ht'Sttt xtfD'P[ffff.HH11ҿh'Ht@HfD WCHD$IJHD$@HS1HHhx'Ht[ÐC1*HH1[!H'SHt[ÐHY'H;'uH 'Hu fH[(HtG{uCAtHӾH{ Htھ#tHC H@HHt[f.Hq'[USHHG t t"H[]HGH'H[]fDH='t WC菱H[='HH'nH'HHt'H0'*H=H'H'5 'HGpH="'HGHH'52'H='>,虜5s't 'uH'BTBTH'BTBT Y'c'u$ɉBTyBTH[]f ɉBTxBTH[]f.1xC(HH1D1PC(HH1躮D@6+H}1҃= '9P tlH Ht;Q t+Hƿ @*H'Ht!H0H5'5H1H5'#1C(H1&fDH5'@1C'H1P;!t*(C1'HH1ȭH)'H-u'1ZCt'HH1藭DH\$Hl$HLd$Ll$HLt$H8GAt'ADH\$Hl$Ld$ Ll$(Lt$0H8;H} M  H} HT$b#U HAuA [A *H!H} $H}HE HE@D-'D%';''E@k'E@'''E@G',D%+'Q'AD-x''@HPH} GLIt1tdHG@iMAAmfDHD 'Eu D'EtHC19H} H'HuH[HH;C"I~I'H;I:ȼu&G:uG:uG:t:fMcLLb uC,t<.uC|,auC|,uDA Lu L1ۀ}@AxhLLe C1~$LHH1E1蛪H'VCH޿@ioHC@iHt/H} H"HHtsHfuzDC1#HH1E1DH] C1#HH1DeAAEAD EAmfDLu L@Le 1Cs#LH1薩Le 1uCL#LH1oLe 1C*#LH1MLd$I4$Ht 1IcC(I4$Hu翨C15C WC誩f.USHHH-'Ht!H}Ht H"t#Hm0HuH'1ɾHHŐEA<t HH[]1HHD@AWIAVIAUIATUSHHoHtpHHHIHE'Hu;fDH[(Ht,HLHtHLLL蜺H[(HuH[]A\A]A^A_@H'Ht@HLLL_H[(HuH[]A\A]A^A_Et/HHt&C uH{HufH[]fH@HuH[]H='HquH[]ÐUHSHHDEulHtgH;='u'\@u H{HHHt@H9't7Ct?vՃ tԃDuH=W'HHHuH[]fHP@Hfffff.AUATUSHHHXID{C$`C@CAH'HC8t'C@f%f=uH{ tcAHHL-3'H$Ld$u _'H<$tTL9-'WLk@C1LH15H^'H $HPH HT$HPf.HHthHH='H1'Lh0IH{H'H@0I9uDHCH'HHuDH[]A\A]DH{HtBt11C.H1Tbffffff.AWMAVAUMATIUHSӺHt$@fHxXIHW'1DI~AAAFxCLjx1ҹ  tp9rAV|CLjx!1ҹf. t(9rAM~`H[]A\A]LA^A_D0@0@HhX&SE11ɺHHLg'H5X'$H=\'tZH)'H޿=HPH6'HH,''kH5'Ht H¿AlH'H[ÐH޿?jHԼ'f.AWIAVAUATAULSLHHHH|$ Ht$(L$tH|$0HD$0H|$8G0'HD$ @ H|$(1E1E11HD$$L-' 'Iąt I;E1ID$MHt$ LLDL111QBtHt }5MGID$8HHSHHHH9tEH;Bt?HHHpHHqHHNHJHPHHHHBJHAHH|$0HCt{HC HqHHT$8H HL$0HH'Ht$0HHH91HS HS(IEIEHJHH(H HHH tHA(HH I}HC(HHL[]A\A]A^A_f1yRHVH+l$(H} rHH'1CHH@@ELD$(@1H|=EthH1HPH菠Uf.HT$(HDhu<_HEuHH+|$(H IH'1HCH@@ALD$(@1LL$I<9HD$ HhHNQH!hEH¿=/PH跟ExgZHgLL$1HLOH聟 @L-y'A@L9=a'IW8HtzH9HHS0@HHHpHOH'HqH+HNH@HHHHHHAH&@IO(Ht7xHQ8HtHUHI(HufDHY'HHSuHPHT$8fH1'HDH5'HrDH='HMDLI lHT$8HL{(H HL$0HzH@H@H@H'HHl$( {fDSHHEukHuDH[DHtH811D$HL$&HL$11HH9HD$tHtHP@E1H9S@AHD[@AHD[f@h6fDH1A6@P;@h=A@hHa'hHM'11HH@H޻'Hۻ'iH'H'iH'H߳'@h蒥1*CH'H@8h 0AhH?'RtHf1C/HH1Qy1CH15y AVAUATUHSDgHAvH0C1H=@'DH¾1[]A\A]A^WC'zEB$C_HWYBSBC[]A\A]A^HE1wH='tHD'E>C1wHm'Ht HH%HHuD[]A\A]A^H;='Ho8Hw01CnwHHE(HJ'H{0AbDA'kA~HU8Hu(1CwLe0L9e(tC1LH1vH{hHtphh djHkH3HH=HmHuE1@AjAuHCxHx?.4L`LmEE1AHu8phLc5'EH'H-w'HtHh(1HCvEtH-':C1uH{PHOHTHG Ht @U AaCHo|C1:HH1uH{F[]A\A]A^giiDSEyHsHC1luDKEB1CSuLk MfDEEEIEHtHH0iC1uIEL`Mt fDI4$1cCtMd$MuyC1tIuHC1tA}]I}t1ICtMmM]D1CtWhH[0Hf.HHHHu[]A\A]A^H1C[]A\A]A^11tH ' CHkH]Ht/HDMH='1CHHu[]A\A]A^H5' 1*f.guHC(Hk0HtHh(C-JC WCt1օfDHguHC@HkHHtHh(H{AHCHLCHH(1sHs(H&C1sH{0jCf '[II,,H-Ю']A\A]A^HOKC[]A\A]A^H='1THw1WCrH5 'Ht cC1rQCBC1lr@PfuHC LkHtLh(HS1LC7rLc(I,$Ht1IfDA $H='1CIHueHC ެ'HIDH˭'>H='1jC^H[HtDHH%HHu[]A\A]A^H=~'wC1DcC1lq4C1Tq.C1'ܢ' 0iT0i(H-'HE1DHE@uH=;'HIjLAtHAt:HELLxAžC1KDHL1AeeHcm9H@PEH¿=N8HևEOHU=HrH"8H誇H}9DHFH] HfH='t^EHECHp1 dHEHxAAWA~HsHC1cH{HhtO m'tcH{b8HKHSI}LHHP198DHnHmH!H[]A\A]A^A_|fDHs_7DH4fVE13C1H1AcDHSHK,C1HbAE1A~AAa'9HE H@HHtu?HIaHE}LpIHE H@HH- 'H@HE H1 DHDkHuMcJ<IHE HtLfHHHHu^ALLI$HE 1t(SLItHHHHH9H uHcHILHHmH>H[]A\A]A^A_HE}LpIH`'H@1XCHLHLH1aH?_Hu @H8_t0CHt HHP@:BuB[]A\A]'A^E1H8h@u)t$C\5IM9rMLLICD5H='LQH11`CH1[1CH1[218CH1[1CwH1[P1H޿sC1[]A\A]A^u[DSHH=Ş'Ht@H~Ht [1C[H1$[@@(8=;@HH_'tH=O'D18CH1Zff.SHH= 'Ht@HHt [1CO[H1tZ@@(=;@HH'tH='D18CH1Zff.H\$Hl$HLd$Ll$H(HHIMG@ueI@ht|HHC1Y 'u H='tLLHHuH\$Hl$Ld$Ll$ H(HHHt11HtI@huHHC1FY@'u H='tDHH\$Hl$Ld$Ll$ H(qfH\$Hl$HLd$Ll$ILt$H(=z'ILHL$8HT$01LοCXO'xP@'Hu-1CPLHL1pXXfDH[(CPvs8CJCXw[H[0C1HHL1XHuzC1XH$Hl$Ld$Ll$Lt$ H(wLk(IhtnMH[1pCMHL1HLWHtHC1Wr1C?H1eW[L5'H\$Hl$HLd$Ll$ILt$L|$H85.'HME΅H='H11H%Ht0H\$Hl$Ld$Ll$ Lt$(L|$0H8H='HHu"1 CaH1VL=a'MLHua;'2'HwtEHCu pC1IHLHL1VfLӒ'HHǒ''t+EC1U'@ECbCSfDvCuE`CuCD1HHL19UD@ECuѺ0CD@((;@HH̑'t H='1CH1TfH\$Hl$LLd$Ll$ILt$HHD'IHMEuCt1HtUC14MILHH޿C1ITH\$ Hl$(Ld$0Ll$8Lt$@HHfDHMt@HjtfHHHlA$Ld$Ll$HD$<$u1CLHH޿C1S^1C_HH1SwD1C7LHƿC1USH\$Hl$HLd$Ll$HLt$L|$HHD IEt-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.HItLHKHLHIHIOtM9Lt$sHMuMt?MfDM7Mt,IHtHHtHxHst_IL9|$wLH\$Hl$ Ld$(Ll$0Lt$8L|$@HHf1CHH1R1DL{C1INIMLHC1Qp@1CHH1QDH\$Hl$HLd$Ll$Lt$H8D5{'IMEu\De'Eu(H\$Hl$Ld$ Ll$(Lt$0H8D1MLHfDSEuCLk(LvC1LL$LH1PLL$sffffff.H\$Hl$HLd$H('HM̋D$0t`PwvtCQ1HCIHLH1iPHۺCt1#HH1FPH\$Hl$Ld$ H(DtQvuNtCRQ1CHLH1OHۺ"Ct@L;D$8ws=1 ClHLH1OHۺXC.@1C/HHL1OOHC1CHLH1OHۺCCLD$,PLD$fH\$Hl$HLd$Ll$HLt$L|$IHIdH%(HD$h1HHEHHk HCHChjH='I}811ALdHIt xE1='!HHbHpHU=C1MMHHxH}IE|AfAAA~MtLDC1LMTIuHC1L5r'u |'tH޿C1OHT$hdH3%(H\$xH$L$L$L$L$HĨ@$CfD+@E131CdHH1h1HCLH'HHuCKH}xAIE(H@LM@IE(L9Mu((LQC1KH\$Hl$HLd$Ll$ILt$L|$HXdH%(HD$1'AHMM΅D׏'EuBHT$dH3%(H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXfDH='HHC@EHI__CTOR_L@IST_f@ _LI|$8AHCHIED$EuAD$I\$(MLHL)@1CHH1JDE$HD$MI__DTOR_L@IST_f@ _LHA$t)1C8H1^JfHSH1CH1Jff.AWAVAUATUSHX|$1ϳHIL+d$(18CH-T'觷I4ׂCHH=t'LHILH?IHII)1Mi@BM)M}H-'1CEH=t'IHIhH1BSHe'1CHH1(=H|$L*H1>FCHH9u'1C覶LH1<HMe'1C|HH1<f.HH=e'tH='Ht豱v'uHfH=d'HH\$Hl$HLd$Ll$Lt$H8dH%(HD$1GdwBHD$dH3%(H\$Hl$Ld$ Ll$(Lt$0H8 t{ uHo H#'H9tGC<E uH=~'Hõ@HSHPHSHPHS(HHP(HS(HP HHo@HH;=~'tGC}<H=~'H^HHlHCHHEH{HEHE SHE HS8HPH{(AEHE HS(HPfLg(I$H;=~'tGC4;H=}'L轴HHEHC0HExHE(H}'Lk HB@ I9$tGCq;C-p`CGC:@H_HH@@f{ Hk`H.}'H9tGC:E u%=H=|'HdzC!I@H@(C@ HC8ID$HCXID$DD{'t?H,s'HufH@(HHH HtHAx C-`CGCw9$CEHC H{'H9HU H@`HBHS HE HRXHPGH{'Hu(LH@P`HE%fDH{'Hu(LH@P0HEfDHE(D(HE@HI{'Hu(LH@PHHE1C腱H1751CeH17tfDHX H9k`@GC8$8CLH3H[Hz'ILHAHyHzz'ILHH׫HXz'IHU HB趰fDAW11AVAUATUSHh)A?=z'3Hz'HHT$@t$LHD$8RHIHT$8Ht$8D$\HR(HT$0HHIE11E1HD$ @H߉T$LD$T$LD$H:WC:WC:WC:VHL$ALLHL$EAHEHILD$Hl$ IDEHŋEx't rHD$E1E1H|$  y'G,.A9s A9vHL$LH; qy'gI$QCHH޿[C*Ht$8H6HHt$(赫ÍSHHT$HT$Ht$(HI莭u9t+CAThuvI\;.HT$@HB@L2Hv3Ht$(QCHt$(iCAEH|$@HT$\LHFH|$@HHD$LHHLL$#H=w'E1LߧHLHD$IHD$H@0HX(@AD$ C ID$(HC(C$AT$$HC8H[`HCxǃ ЈC$ID$0HC0ID$XHCXAD$hChI$HHHt$ ID$8I$HUHT$0HH)HC8HD$0IT$8HC(HC0HDHH&H)PxuHH HpHY`HH HqX@ u'HE tE1uDE1u'tDH|$ H@8HD$G,.f.HT$8l$LHRHT$8t HH5u'Ht$@HT$@@iHBHHh[]A\A]A^A_HD$AE1fmfIC1wH111cC1UHt$(H11t1===)=7k=-m'0HS:.u zuH=k'E1@iA;HCPJ =l' =l' Hx @H@(H=-k'H;G0H\$Hl$HLd$Ll$ H([Hs>.k1 H{D @l'E:HH{HruHl'EHE0Hl'HE({CHCHSk'Hk'Hk'Hk'Hk'D=I=?X=@H[ *Bk']H{11HI :;=z H@8HhHk'Hj'hHj'Hj'D-j'EH j'Hj'HvHD1HHHj'j'Hj'H+B(Hj'Hxj'H{1THd H@RH_j'HsH=h'1A赙HH Lc1CDLH1g%fH{i'~t1CH1%i'PvH=i'huxi'H{+Di'^i'E =Ji'8C]1sH\$HHl$Ld$Ll$ 1H($H=g'11A芘HH@@=<=Z5=&h'H=h'hh'J Hh'h'Hh'HCHh'HHhujHHWH{HȝuHCCHh'Hh'H8h'Hh'@=K=yqH[C HCHHg'g'Hg'hHg'Hg'f=ia=@==1H;-3g'H)g'?5g'1H{11HH@8f'Hf'Hf'Hf'Df'EH{bpHSH=oe'E11A@iH @;- \' HUf'H~f'\f'HMf'S*f'E1҃tH=d'@iHGHcf'Hf'hHe'He' e'H{11{H9Hx`HSe'He'He'hH@(Hpe'H{1OH\H@ ae'HNe'hH;e'H,e'BD%e'E(H e'He'hHH(H d'He'HvHD1HHHd'Hd'Hd'hH@(Hd'HHd'Hd'Hd'hH@(Hd'HHzd'H~d'Hsd'hH@(HXd'HHNd'dHh;+zH-'d'= -t +qL-d'=%===$c'?d'H=c'h c'ttt H5c'HHc'HvHD51HHŃHjc'n9HUH#pc'HЃ=>c'H?c'Tgc'H5pc'Hac'Hzc'H-{c'HXc'^;<D>1H;-b'Hb'Hb'b'Hb'hHb'Hb'H{Hl$H\$Ld$Ll$ H({l1=A=BH;-Ob'dH-Bb'X=!= b'HH-b',+-H+-a'H-a'|t7= H1H=a'H1-a'H -a'1H;-a'Ha'1H;-a'Hya'1H1H;-^a'HTa'jH;-Ha']H 6a'H =a'C,1H;-a'H`'H-`'H-`'H `'HHD)1HHHu`'a'`'tutt 4HHh`'=`'H`'H`'HJHHDHH!H~`'H+'`'H `'=Q`'.A`' _'HH-_' H _'H=_'CH!-_'C1ݔHHH=_'hC@H_'H-_'HX(Hi_'H9 H=hC1{HHHH\$Hl$1Ld$Ll$ H(H[HC1>HHhH[C1HHHHP(Hh(HJ`HGHRXHP0^'H^'H ^'H^'H^'=r^'H[C1藓HHHu^'Hf^'HYH-7^'HHH?HAHHH?HH ^'"@=]']'H]'hH]'H]'H@8H@0H@8H=^\'HX8m1҉HHr=g]'H[C1茒HHH[1ClHH1LH94HH/]'H)HH!HH\'H/]'H\'ff.H\'H\'H\'hjf.H\$Hl$Ld$HHIHtF \'uQHt2=e\'t)AD$0C1?'臑HH1HcH$Hl$Ld$H@H1\'H@(H\'H\'DH\$Hl$HHHHt;5['uHHt'=['t0C1HH1HHl$H\$Hf.H['HHctHffffff.H\$Hl$HLd$HHHtam=W['tkH=<['HtrHH蜑['HшP HH H HHHl$H$Ld$HHt=Z't10CHH1 f.L`II|$H Z'L@L 19HWЃ vWɃH@42uHA0Z9I1HWЃ vH8='<$HHt$D$D$*DZ'Eu.D5H$HHT$HPHT$HPH8fDH=Y'4H8ffffff.H8F<$HHt$D$D$D Y'Eu14H$HHT$HPHT$HPH8fH=AY'H8ffffff.H8B<$HHT$Ht$HL$ D$D$#D Y'Eu?(=4H$HHT$HPHT$HPHT$HPHT$ HP H8DH=X'H8H8F<$HHt$HT$D$D$DX'Eu4 3H$HHT$HPHT$HPHT$HPH8H=)X'H8HH6X'H57X'H X'HQP'H@HAP'H@H1P'H@H!P'H@HP'H@ HP'H@(HO'H@@HO'H@0HO'H@`HO'HHtfDHO'H@hHtfDfDHO'H@HHqO'H@pHtfDfDHQO'H@xHtfDfDH1O'HHtfDHO'HHtfDHN'HHtfDHN'HHtfDHN'HHtfDHN'H@8fffff.HqN'HHtfDHQN'HHtH@ATIUSHb:'Ht]1`hfDHt&HKPUCL1LHH]HuÅt[]A\f.C1菊[]LH¾A\1附fUHS`hHH=9'u?fDICH1\HCHHHHP1=H;uH[]ATUS?gHH-Y9'HtT'50T'HGpH5OS'H=P';H5DS'H=P'H鄈@Q'tDH=R'@i_ffffff.Q'tDVff.1ITfHH=}H'Ht[Q' tO'u:HO'tHt$1蚈HD$8tH=1H'HCBHt HHJ'H@XHSC1茇H=D'H¹C1葁ulu[D1COH1 H6'Htͻ`hHPPH1CHHu[D1HCH11xCφH1蠁OH=Q'C1鸀H=P'IC1阀AWAVE1AUATIUHSHHL$,L|$pdH%(H$1>@@te@%u !@%t"@HHJ;@u@%u@HCH%{H,B';ID$HPIT$ ID$HPIT$ID$HPIT$=ID$HPIT$ID$HPIT$D=G'H=H'HκHL$O}HIHL$HCH1gxL{;ID$HPIT$LID$HPIT$^ID$HPIT$ID$HPIT$mID$HPIT$HID$HPIT$ID$HPIT$A$ID$HPIT$ID$HHIL$A$/wBID$A$HCH1Hvw;H ;'[C7ID$HPIT$뼺jCH19wkHM@'Ht!H=9@'HtH%@'Ht I9m1C|HL$HHH1LH=?'L-?'HtyyH|$`H?'Ht }H?'H=?'HtGyH|$X}HL$`H?'D$0Q1CC|LH1fIHNA@#CHHHCD-<*'mC1{HHD1u;ID$HPIT$H PF'HNCu;^CH1oHL$`Ht$HHT$ HL${HT$ HL$eHt$HHHL${D$0HL$"9+{}HHT$0HJAHL$8LD$@1H)H$LL$H)z)r)j)b)Z)R)J)BH$H$D$0HD$HD$ HD$HHHT$0HݿAHt$(HL$8H)H$LD$@LL$H)z)r)j)b)Z)R)J)BH=D't:H$HH=wD'H1$HD$HD$ D$0HD$oHHHT$0HAHt$(HL$8HH)H$LD$@LL$H)z)r)j)b)Z)R)J)BH$H=6'H$D$0HD$HD$ HD$Hfffff.H\$Hl$HLd$HH҉ItPC1xLHljH1 C1xH1h{1HCxHH1fffff.H\$Hl$HHC1\xHHH\$Hl$1Hoffffff.HHT$0H2AHt$(HL$8HH)H$LD$@LL$H1)z)r)j)b)Z)R)J)BH$H=5'H$D$0HD$HD$ HD$)HÐH\$Hl$HHuHt3P H\$Hl$B'HPH@ HB'H&'HDt-B'H\$Hl$HC1wHHH\$Hl$1H$@UHSHBxH%xH-V&'H@Ht@hHuH*&'HHH&'H[]DU1Ҿ8C11SH7HHƿHsuD$1%=@@HsHĘ[]USHH=0?'tvsHHtiH st->'9| HcH:/t?1HrH[]@>'9uH=>'H޽t@1H[]ffff.Hl$Ld$HH\$HAu ?'uHvHHD`H$'H$'H}=t2Hv1HHCCH$Hl$Ld$HfDH=Q='Hu11CHCH\$Hl$ CHHUp='HÅt-HCCt _C1tHH1KHHl$H\$HfAVAUE1ATUHSH7'HL5#'IHu7'HD}?'HL%+ HHtpH{1HL1IHLIpMtHc#'HHL蹪[H- ?'L-6']A\A]!'A^H!#'H1m10CesHH1fD{HI{H=='vCCHIItFHt2L5"'LH"'PhnL5"'H06'LoH=t='vCC=HIItH*uLnovCAvCyH='='EHHIItHJLoL5!'H5' @MIdfD1fH\$Hl$HLd$Ll$HLt$L|$HHHv8m5:'HC t1HCt C1qHH1dHC HS@t;HjLc MtLjuMLuMLuL%5'Q,tLD$jLjD$*=uL-\5'fAWIAVIAUIATUHSH(F@ukVH~?/nHqt=H}?/91E@ ЈE@H([]A\A]A^A_HjHE8/H|8'HL%$Yf.HMH{LMML1H$HHHHT$HT$uyHiHHtQE@t 5't uHUH{1L1XHHHL"u*E@H(1[]A\A]A^A_HUSfH~HH=a4'11HHHH]@Hl$H\$HLd$HH tH$Hl$Ld$HG@tXH.'Hu(H;H%u&H[HH;C{CHtˀe@DHH4yH]HmHHykCtbC1jHHHH$Hl$Ld$1HE@tHL%!3'MtfHD$H5B''L)HH9tCH5 ''ALNcH''M,M99f.I,$H=,'11AHu]Hx HMCH17]H}`Lu DxMu@M6MtEAFtA1H޿ AfA1~IV1;CHE1M6MuHm Hu NHmHtEEuA1H޿ AeA1~HU1;CHE1KHmHuEtCIM9H[]A\A]A^A_H@(Hx`tHH@T@HE Hu fHHtHPBT@uC1aHH¾1[H[]A\A]A^A_Hu8Ce@UHSHHHtICHsH=*'9`HHCt HEHEHH[]HCHCfDAUATUSH $'Dq$'E@AJ=f$'L ?$'H$'H$'1LI)HHHH48HC HHufHHHJ(HuHHH>H^HHƸH[]A\A]Ãt 1H-#'H#'L%#'HH=#'H#'#'#'LH=p#'#'_=v#'H#'H#'Nd%E1IH7#'DH,HtfB#'LH^1#'IHE Ht7DHHHKHHHKHHHKHHHK H(HHH HuHmHuAD9-"'vH5"'H="'Q[H="'\H"'HHL9t HHBH5"'H "'DHHH<H "'1``hHx"'{[HHq"'cHl"'H5 "'H=N"']5"' "'H!'L%/"'H 8"'H9"'5"'H5!'H!'!'H5&"'IE1IDH,Htmf.!'LH/]!'IHE Ht7DHHHPHSHPHSHPHSHP HS HH(HuHmHuAD9-:!'FH!'jHi!'Hj!'`h\!'ffffff.AUATIUHSHH5 '1ɺL`hYHIMe MuD@M$$Mt7I9\$uAD$H@hE!uWAD$H[]A\A]@`hYHIIE I\$I$Me AD$AD$@AD$H[]A\A]D(A`htYt"'AD$H[]A\A]1hC=\H1c1C \H1F1C\H1&,SHHHt3H{]HtH^'H@H@ H[H߾(HT$NXHHHT$u1ϐ$'t=%' C@DHE5%'D W%'>D5e$'f%f=t R$'D!@t^DuT=.$'%=t`Dt-Eu#fftGKE oEHEfDfD$'8bDo@i$'DtY$'*EtH\$Hl$HLd$HG@ڃ Dڨt Lg AD$T@u4t H} GT@u1H$Hl$Ld$HÐT1EYLH1SH8E1YHH¾1S1pEYHH¾1S1EuYHH¾1S10ERYHH¾1`S1xE/YHH¾1=S1E YHH¾1S1EXHH¾1R1(EXHH¾1RpE1XHH¾1R1EXHH¾1R1E]XHH¾1kR1`E:XHH¾1HR1EXHH¾1%R1EWHH¾1R1PEWHH¾1Q1EWHH¾1Q1ؕEWHH¾1Q1(EhWHH¾1vQ1`EEWHH¾1SQ1E"WHH¾10Q1EVHH¾1 Q18EVHH¾1P1xEVHH¾1P1ЗEVHH¾1P1EsVHH¾1P`E1PVHH¾1^PE1-VHH¾1;P E1 VHH¾1P`E1UHH¾1OE1UHH¾[1OAVAUIATUSHHH/HHRLIRI+f.5'@HTHtHHHt?LHLPuBD%t 5'@8uHtH[]A\A]A^DK|&VVD ^'LHHŹ܃CH1L,$VH;QH+H$VHffffff.SH~=~^r1@H[f.z~Muˀ |'thuH=9't7DPuH5'hBxH5'hUD '?%'''H'EEHރ'$:S:S:S:@_'fH=Q'HtOH<'H 'HeCHUDH'OE HLYE HcE HlE HyE HE HEH:C:C:C:ywH 'H ']DH ' ''2fJEH`'H ]'H H' fD z'DH= '@E@EHpRHQ'H 'vE1PHH1NH '9H ''H '@H r'EHNCBHSEHP[EHPWEHoP^EHZP;EHEP_EH0P-EHPŝEHPÝEHOa˝EHJڝEHJHt$H{1RHT$H':u HPHXH@ '0EH1H%'H%'H 'H 'f 'U 'G%'9 '+'@' 'Ht$H{10QHT$H':u HPHsH[ 'EHL%d' V'G'Ȁ࿈;'ffffff.H\$HHl$Ld$Ll$H(LcH;IuIHcNPN,(HHu HAEz:P:AEHI<$%PH<(I$E@@ue@u@1Ht t  f HtH\$Hl$Ld$Ll$ H(DE?H@tfDHfH@pDHHW@AWAVAUIATE1USHH8HHBxAE{HE1@ |'%=D$!D 'EhH=hvIAhfDI>Ht(111HIFtDEu AVI0IhuH&HAE fDH@ HHH8HtA! uHp0LHuH@(Hc&HH&EN''% = S Ah uwI@HI'E1HLHH$PIH8L[]A\A]A^A_H@ DxH޿XE1 pE11tЃt'A4EuEL#Ah?@Ah-AhEEELuA@hAhhLEfD11L/HIIv8Ht5DV EHH=t'HCtIF8@ 3C tw1LHIuwefDC EEAA (@H3 E L5&MI~LHl2H'HU1fI8H11LD$v.LD$I@HIp3@HLD$HLD$H'}@ELJA}at,D$AE8EAph&DD$AE HL%'xaE1MD$$S1LDL$MLD$LE1AEIH\$(AEK1a!E@HcH| 9l$$MttIMttSHJ8HtI LEҐt HLEHJ Ht5IHʋxHZ0LHaHJ8HtNjI LH\$(LD$DIMMt=LI@?LDLD$H\$(MA AHtHMtLHuLfH\$Ld$1Ll$Hl$ILt$L|$HHB@IHu-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.LrH~sCLIhCLH]CI|/HGMEHHM&EH1L$$GHH tpH{ HkF?tJHC @T@t@C@<t4ENH{?H{ HHfDH`B1fAUATUSHHH'x80AH'HH-'Huf.HHHExuHHHtӀ?tYFI5O'LE1$DHtAMtA<$uEtIIuDL濰hHD$(HD$(H 'L : 'HL( 'H Q 'H52 'H='HD$HD$8HD$@iHD$H, 'H$E[H= 'HtH\$8HtH)AHHC8HJ'HuH[(HC@uH{ NE=HHtL`8I|$EH{ 1MHHI=CD%H 'E1E11HK L@iP(trLJ@HE`HtHH@HU8H9rH)HH@H[(M HE8HNۺH= '@i=u ELHH[]A\A]Ðu4Ez@Hs ȚE;DEH=a '@iEUBE0BH]SH@{v[ËC$EfDHS:t=DC H= '@iWCulHsEu\HS1:JuB:?t<뵐H[f.H{gH{^H[ ]DH{GH[Ffffff.t HU@iS HH=1 ': H= 'HGxt tdH[]Ð 'uH=_ 'HH@iBteH 'HHH9t~.u1[EAHH1[]#H9rHc0E@H@hpff.ATU1SH= 'IH8HuH='|=Bl%HcAH5'IH@LR=I,@UHHt.: 'uUH5t'HH@H=HEL[]A\fff.AWIAVAUATUSHHt$ H|$ CX;I1M@HI;HLmHt#HM>HtHH< t< t< t< t< tIIHֿyEuJ  <=u-@t)< ft#< t< t< @t< tHBHJ<=uI9t$:/tz/HB7HL9uMLM)IH,IOIwHQI|H975l'@4IIWH<LL=MoIMoB(L>BH:L>HĈ[]A\A]A^A_HJI@< tT< tPrI@ t@tIA,$@ uA$u@6IL$< uHLL$Ht$ HHD$ILLL$;LD$LL$H $HT$K<H;LD$LD$HL$011Lx?uJH|$0t81@l$/HHHD$8LH4HsH;\$0rHl$/H|$0 =H|$H|$8@L1IIM)HHL)I>=IGI1I5HIwh>IOIHQE1wLIHM)af.H\$Ld$ILl$Hl$H8H'HoAH@HH06H1Ht2H4tCT@tH'HPH9St&Hn91H\$Hl$ Ld$(Ll$0H8EHt$H= HD$Hthp BHd&b&D-V&EuHD$HtAEf.HH^HpLHufDhH8uGH{V4Dw'IEuG BH&bH=&thfDH޿E191E9HHL1DH޿`EfDHL/MA<$HLLt$HD$"6HHD$lH|$IM)I|=;:L9HHtLL7J|+B+/LC9H|$DH\$!uUHu5}t/Le5'L7HHuL5I,s1H([]A\A]A^A_H([]A\A]A^A_@AWAVAUATUSHhH'{8tHh[]A\A]A^A_fDHA'HH'H : u%J: uJ: xIfEH;Hֿ@E$@@8CHuOHJ@Rq6htHHt6huր:HHE1;H=L'3H<'-'!'%= ' H=U'@i4HIH@H}Ht 3I9Lt1fH{Ht 3uH{Hu6yHH9uH@ BH:&H&bH&HtHx =3EHC 3&HD$PHCHD$XHCHD$@Hu&Ht H@H|$@HD$H8Lt$E1IIfH=y&Ht$PD<H=U&Ht$PD H=@&E4Ht$PDHH=&@i2HHu#jf.L1HHLH{SIID$H9CuHt$PDLtLLLt$1HmH#H-W&HfDӞEH.HtHx8vHx`hHHuJ:  +@EHi4HIL@hH&Ln5H_&L`Il$8IDžh BHI$Ip BDH9HmH*D&I^;H=&t*H=&Ht$0DHD$0H\$8"I~0H&Ht}LhHHthCuH{P0I|4MNLCHHŹ EH14H|$@DHl$HnuzH/ffDAA*LpE1HSHsLLt$fDH=p&8BE2Ht$PDH(LLt$H=&1Ҿ E1HD$HD$ HD$H|$HHSH.H|$HtdH|$H.H-&&CЛEH.H&HHEݞEHH(P(1H@hHHT.H=&1ҾE1?H|$HH/LkLc1EA1LHL1@- E1?9f.H\$Hl$HLd$Ll$HH=j&t(H$H$L$L$HĸH Ht-uH{ H/H&H9$Hj&/HhH/Hu&EH.HIkH{ Z.HHL%&IUHI\$H)H+0IT$HH޿E#fDHD$H;&]HTHV&Hs E1H{)Hlf.AT5(&USHuH HtGT@u[]A\-HItwH&HuDHHtHkLH/t/H`.HuӾ&EHn-HtHPHLH)w*u&tHC Hx(Itffffff.H\$Hl$HLd$HH3&HtHx +HkHH{ HH=&t +urHkHM&HL`L.tMC@t"/H,HtHxL~.t%H{ 1,HtH&HHrY.uH~&H$Hl$Ld$Hff.@HhuxtGH@GHÍGHúeEG4Ed@AWAVAUATUSHHxdH%(H$h1HGH(HT$HHp LbIL$`HhLImHHIl$XMt$8HT$HL}HCIHuLHCHuE GNUHT$H:gP:XP:IP::L$LbHT$xBHHLP sLL-lDIuIt$X1HMt$8.1dH$hdH3%(6Hx[]A\A]A^A_@EHEHnCHLp1@D<:IAH@htAVINhtI7Ht$HL$IHD$pHD$HL$9T$ST$ HT$Ht$H{Lt$ LcmHT$BHHLP u 1fDLLHLH)I9@I$HsI|$8HT$+HT$HI$HCK11+EB-eLLljD$%L$Ilj#E91E1)H1<-K@E4E觰)@E4E莰fffff.H 8E&& &HÐ&t=x&pEhEHE5z&E 7&E5E&f%f=t 2&'F!@t^FFuT=&%=t`Ft-XFu#fftGFFHEfDfDa&Fo@I&fFt9&FtH\$Hl$HLd$HG@ڃ Dڨt Lg AD$T@u4t H} GT@u1H$Hl$Ld$HÐi"1E'LH1SH8E1'HH¾1!1pEx'HH¾1!1EU'HH¾1c!10E2'HH¾1@!1xE'HH¾1!1E&HH¾1 1E&HH¾1 1(E&HH¾1 pE1&HH¾1 1E`&HH¾1n 1E=&HH¾1K 1`E&HH¾1( 1E%HH¾1 1E%HH¾11PE%HH¾11E%HH¾11ؕEk%HH¾1y1(EH%HH¾1V1`E%%HH¾131E%HH¾11E$HH¾118E$HH¾11xE$HH¾11ЗEv$HH¾11ES$HH¾1a`E10$HH¾1>E1 $HH¾1 E1#HH¾1`E1#HH¾1E1#HH¾[1AVAUIATUSHHH/HHz LIo I+f.5&@H}"HtHHHt?LHLuBD%t 5l&@8uHtH[]A\A]A^DK|&6$D >&LHHŹ܃CH1L,$y$H;H+H$Hffffff.SH~=~^r1@H[f.z~Muˀ \&thuH=&TDPuH5&hBxH5&hUD &?%&'&H&EEHރ&$:S:S:S:@?&fH=1&HtH&H&HeCHUDH&OE HLYE HcE HlE HyE HE HEH:C:wC:hC:YwH &H &]DH &&&2fJEH`&H =&H (& fD Z&DH&@E@EHP H1&H &vE1HH1ؤNH &9H y&'H g&@H R&EHNCBHSEHy[EHdWEHO^EH:;EH%_EH-EHŝEHÝEHa˝EHڝEHHt$H{1HT$H&:u HPHXH &0EH1H%&H%&H &H &f&U &G%&9 &+&@& &Ht$H{1HT$H&:u HPHsH;&EHL%D& 6&'&Ȁ࿈&ffffff.H\$HHl$Ld$Ll$H(LcH;IuIHc.N,(HHu HAEz:P:AEHI<$H<(I$`G@@ue@u@1Ht t  f HtH\$Hl$Ld$Ll$ H(DAaG?H@tfDHfH@pDHHW@AWAVAUIATE1USHH8HHBxAE{HE1@ |&%=D$!D &E`hH=hvIAhfDI>Ht(11gHIFtDEu AVI0I`huH4&HAE fDH@ HHH8HtA! uHp0LHuH@(H&H&E&&% = S A0h uwI@HI'E1HLHH$IH8L[]A\A]A^A_H@ DxH޿XE1pE11tЃt'A4EuEL#Aph?@Ah-A@hEEELuAhAhhLEfD11LtHIIv8Ht5DV EHH=T&HdtIF8@ 3C tw1LHIuwefDC EEAA (@H3 E L5$&MI~LHLH&HU1fI8H11LD$VLD$I@HIp3@HLD$ފHLD$Hi&}@ELJA}at,D$AE8EAh&DD$AE HL%&xaE1MD$$S1LDL$MLD$LE1AEIH\$(AEK1a!E@HcH| 9l$$MttIMttSHJ8HtI LEҐt HLEHJ Ht5IHʋxHZ0LHaHJ8HtNjI LH\$(LD$DIMMt=LI@?LDLD$H\$(MA AHtHMtLHuLfH\$Ld$1Ll$Hl$ILt$L|$HHB@IHu-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.LrH~SLIHLH=I|/HpMEHHM&EH1L$$HHtpH{ Hk& tJHC @T@t@C@<tG.H{ H{ HfDH@1fAUATUSHHH&x8P*B苢H&HH-&Huf.HHHExuHHHtӀ?t9I5/&LE1HtAMtA<$uEtIIuDL濐hHD$(HD$(H&L &HL&H 1&H5&H=&HD$HD$8HD$@iHD$H &H$[H=&HtH\$8HtH HHC8H*&HuH[(HC@uH{ NE HHtL`8I|$H{ 1MHHIr CD%H&E1E11HK L@iP(trL*HE`HtHH@HU8H9rH)HH@H[(M HE8HN軈H=&@i u E,HH[]A\A]ÐuGaz@Hs ȚE;DEH=A&@iUBEH]SH@{v[ËC$ GfDHS:gtt=DC H=&@i7ulHsEU\HS1:*tuB:tt<뵐H[f.H{gH{^H[ ]DH{GH[Ffffff.t HU@iS HH=&}H=&HGxt tdH[]Ð&uH=?&HH@iteH&HHH9t~.u1[EHH1[]H9rHc0Eޔ@H@hpff.ATU1SH  &IH8HuH=&\ Bl%HcH5&IHL2 I,@UHHt.:`&uUH5T&HHhH HEL[]A\fff.AWIAVAUATUSHHt$ H|$ C8 I1MHI;HLml HL)MdL9u=|+ t6HHHN$(HÉLL43D)= HuI9 HB Ht#H- HtHH< t< t< t< t< tIIHֿyEuJ  <=u-@t)< ft#< t< t< @t< tHBHJ<=uI9t$:/tz/HB7HL9uMLM)IH,IOIwHQI|H975L&@4IIWH<LL MoIMoB(L BHzL HĈ[]A\A]A^A_HJI@< tT< tPrI@ t@tIA,$@ uA$u@6IL$< uH/MA<$HLLt$HD$HHD$lH|$IM)I|=L9HHtLLJ|+B+/L#H|$DH\$!uUHU}t/Le5&LHHuLlI,s1H([]A\A]A^A_H([]A\A]A^A_@AWAVAUATUSHhHs&{8tHh[]A\A]A^A_fDH!&HHi&H : nju%J: cjuJ: XjIfEH;Hֿ@E$@@8CHuOHJ@Rq6htHHt6huր:HHE1H=,&H& &&%=& H=5&@icHIH@H}Ht I9Lt1fH{Ht ruH{HuyHH9uH`=BH&H&B}H{&HtHx EHC &HD$PHCHD$XHCHD$@H5&Ht H@H|$@HD$H8Lt$E1IIfH=Y&Ht$PD<H=5&Ht$PD H= &EHt$PDHH=&@iHHu#jf.LHHLH{SIID$H9CuHt$PDLtLLLt$HmH#H-7&HfDӞEHHtHx8vHx`hHHuJ: g +@EHIHIL@hH&LNH?&L`Il$8IDžh >BHI$Ip BDH9HmH*Dj&I^;H=N&t*H=E&Ht$0DHD$0H\$8"I~aH&Ht}LhHHthCuH{0I|fMNLCHHŹ EH1H|$@DHl$HnuzHffDAA*LpE1HSHsLLt$ˆfDH=P&8BEHt$PDH(LLt$H=&1Ҿ E1HD$HD$ HD$eH|$HHSHH|$HtdH|$HH-&&CЛEHH&HHEݞEHH(P(H@hHH4H=&1ҾE1eH|$HH/LkLc1E!LHL1@- E19f.H\$Hl$HLd$Ll$HH=*&t(H$H$L$L$HĸH HtuH{ HHC&H9$H*&/HhHHu&EHHIkH{ :HHL%&IUHI\$H)Hp0IT$HH޿EfDHD$H;&]HTH&Hs E1H{Hlf.AT5&USHuH HtGT@u[]A\cHItwH&HuDHHtHkLHqt/H@HuӾ&EHNHtHPHLH)WuI&tHC HxItffffff.H\$Hl$HLd$HH&HtHx HkHH{ HH=&t durHkH &HL`LtMC@t"/HHtHxL^t%H{ HtH&HHr9uH>&H$Hl$Ld$Hff.@HhuxtGH@GHÍGHúGGGD@AWAVAUATUSHHxdH%(H$h1HGH(HT$HHp LbIL$`HhLImHHIl$XMt$8HT$HL}HCIHuLHCHuE GNUHT$H:G_P:8_P:)_P:_L$L/HT$xBHHLP sLL :DIuIt$X1HMt$81dH$hdH3%(6Hx[]A\A]A^A_@EHEHnCHLp1@D<:IAH@htAVINhtI7Ht$HL$IHD$pHD$HL$9T$ST$ HT$Ht$H{Lt$ LC;HT$BHHLP u 1fDLLQHLHI9@I$HsI|$8HT$HT$HI$HCK11+E"eLLljD$iL$IljE91E1H1}<-KGG~GGn~fffff.H G&& &HÐs&t!5[&GGHEf. Z&Gt& GҺ( GHDfH\$Ld$1Ll$Hl$ILt$H8B@IHu"H\$Hl$Ld$ Ll$(Lt$0H8@H~H{ILHI|.HLKMEHHŹ? GH1L$$HH.tHkj@H1WfDBFfDSHt[@Hw:CuHCxt[M G5}HCH@ [f.Hվ&t HfDH=&@itH mf.E{Hlffff.H G}K&E&HÐC&t=(&x G3GHE5*&(GG &dG5&f%f=t &PG!@t^GuT=&%=t`Gt-PHu#fftG@LHjHHEfDfD&Go@&Gt&.HtH\$Hl$HLd$HG@ڃ Dڨt Lg AD$T@u4t H} GT@u1H$Hl$Ld$HÐ1EoLH1ySH8E1KHH¾1Y1pE(HH¾161EHH¾110EHH¾11xEHH¾11EHH¾11EyHH¾11(EVHH¾1dpE13HH¾1A1EHH¾11EHH¾11`EHH¾11EHH¾11EHH¾11PEaHH¾1o1E>HH¾1L1ؕEHH¾1)1(EHH¾11`EHH¾11EHH¾11EHH¾118ElHH¾1z1xEIHH¾1W1ЗE&HH¾141EHH¾1`E1HH¾1E1HH¾1 E1HH¾1`E1wHH¾1E1THH¾[1aAVAUIATUSHHH/HH*LII+f.5Y&@H-HtHHHt?LHLQuBD%t 5&@8uHtH[]A\A]A^DK|&D &LHHŹ܃CH1L,$)H;1H+HHffffff.SH~=~^r1@H[f.z~Muˀ &thuH=ɩ&DPuH5&piBxH5&hiUD &?%s&'\&H2&EEHރ?&$:jS:[S:LS:=@&fH=&Ht_H̵&H&HeCHUDHi&OE HLYE HcE HlE HyE HE HEH:6]C:']C:]C: ]wH _&H _&]DH H&&&2fJEH`U&H &H ش& fD  &DHͦ&@E@EHH&H x&vE1eHH1pNH ;&9H )&'H &@H &EHNCBHSEH)[EHWEH^EH;EH_EH-EHŝEHÝEHa˝EHڝEHmHt$H{1HT$Hi&:u HPHXHФ&0EH1H%&H%&H k&H h&f&U &G%&9 t&+f&@Z& H&Ht$H{1HT$H|&:u HPHsH&EHL%& &װ&Ȁ࿈˰&ffffff.H\$HHl$Ld$Ll$H(LcH;IuIHcN,(HHu HAEz:P:AEHI<$H<(I$H@@ue@u@1Ht t  f HtH\$Hl$Ld$Ll$ H(D5H?H@tfDHfH@pDHHW@AWAVAUIATE1USHH8HHBxAE{HE1@ |1&%=D$!D j&EhH= hvIA hfDI>Ht(11HIFtDEu AVI0IhuH$&HAE fDH@ HHH8HtA! uHp0LHuH@(H&Hx&E&8&% = S Aph uwI@HI'E1HLHH$lIH8L[]A\A]A^A_H@ DxH޿XE1jpE11tЃt'A4EuEL#Ah?@A@h-AhEEELuAhAPh hLEfD11L$HIIv8Ht5DV EHH=&HtIF8@ 3C tw1LqHIuwefDC EEAA (@H3 E L5&MI~LHH&HU1fI8H11LD$LD$I@HIp3@HLD$VHLD$H&}@ELJA}at,D$AE8EAh&DD$AE HL%&xaE1MD$$S1LDL$MLD$LE1AEIH\$(AEK1a!E@HcH| 9l$$MttIMttSHJ8HtI LEҐt HLEHJ Ht5IHʋxHZ0LHaHJ8HtNjI LH\$(LD$DIMMt=LI@?LDLD$H\$(MA AHtHMtLHuLfH\$Ld$1Ll$Hl$ILt$L|$HHB@IHu-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.LrH~LILHI|/H MEHHM&EH1L$$gHHmtpH{ HktJHC @T@t@C@<tHfH{UH{ HyfDH1fAUATUSHHHw&x8^B;nH&HH-t&Huf.HHHExuHHHtӀ?tI5ߨ&LE1HtAMtA<$uEtIIuDLpiHD$(HD$(HI&L &HLx&H &H5¦&H=&HD$HD$8HD$@iHD$H&H$[H=|&HtH\$8HtHHHC8Hڝ&HuH[(HC@uH{ NEHHtL`8I|$H{ 1MHHI"CD%H&E1E11HK L@iP(trLHE`HtHH@HU8H9rH)HH@H[(M HE8HNkTH=\&@iu EbHH[]A\A]Ð[Hdz@Hs ȚEb;DEbH=&@ioUBEH]SH@{v[ËC$@HfDHS:@t=DC H=&@iulHsEb\HS1:?uB:?t<뵐H[f.H{gH{^H[ ]DH{GH[Ffffff.t HU@iS HH=&D-H=&HGxt tdH[]Ð9&uH=&HH@iAteH^&HHH9t~.u1[EHH1[]`H9rHc0E`@H@hpff.H\$Ld$ILl$Hl$H8H&HoAH@HH0HH1Ht2HAtCT@tHx&HPH9St&H1H\$Hl$ Ld$(Ll$0H8EHt$H HD$HthiBHԟ&ҟ&RD-Ɵ&EuHD$HtAEf.HH^HpLHufDhHuGH{D'&IEuGhBH7&RH=*&thfDH޿E1^1EHHL1_`DH޿`E^fDHLI<$HtwuHHC@iHOH޿CJ^DAWAVAUATUSHXHs&{8tHX[]A\A]A^A_fDH!&HHi&H : n<u%J: c<uJ: X<AfEH3Hֿ@E$@@8CHuOHJ@Rq6htHHt6huր:HHE1]H=,&H& &&%= & H=5&@icHHD$HfH{Ht Hl$H9t0H}Ht ruH}HsHmH9uHݿPjBH-ɛ&Hf&AOHZ&HtHx THEHD$@HEHD$HHEHD$0&H&Ht H@H|$0HD$8gE1H\$L|$HL%T&A?/MA<$HD$@LL|$(HD$ _HDl$MInfDIM)K<>yI9HHtLL#J|3B3/Lt$H|$ H\$((H}fLe5)&LHHuLI,pH-A&HӞEHHtHx8vHx`hHHuJ: 9 +@EHQHIy@hH&LVHG&L`Il$8IDžh kBHI$Ip BDAA*H\$pE1HSHsYHHH9RHHyDl$HD$HxkH&HtL`Lt$@HHlD{EuH{2I<iMNLCHHŹ EH1H|$0DHl$8u)HH|$@DUH\$L ЛEHjHכ&HHEݞEHH(P(HtS@hHLeHm1E2LHH1YR-@ E1/XIf.H\$Hl$HLd$Ll$HH=&t(H$H$L$L$HĸH HtuH{ HH3&H9$H &/HhHHu&EHHIkH{ JHHL%&IUHI\$H)H0IT$HH޿EWfDHD$H;&]HTH&Hs E1VH{Hlf.ATؖ&USHuH HtGT@u[]A\sHItwH&HuDHHtHkLHt/HPHuӾ&EH^HtHPHLH)gu9&tHC HxItffffff.H\$Hl$HLd$HH&HtHx HkHH{ HH=&t turHkH&HL`LtMC@t"/HHtHxLnt%H{ !HtH&HHrIuH.&H$Hl$Ld$Hff.@HhuxtGH@GHÍGHúHOHTU@AWAVAUATUSHHxdH%(H$h1HGH(HT$HHp LbIL$`HhLImHHIl$XMt$8HT$HL}HCIHuLHCHuE GNUHT$H:W2P:H2P:92P:*2L$L HT$xBHHLP sLL DIuIt$X1HMt$81dH$hdH3%(6Hx[]A\A]A^A_@EHEHnCHLp1@D<:IAH@htAVINhtI7Ht$HL$IHD$pHD$HL$9T$ST$ HT$Ht$H{Lt$ LSHT$BHHLP u 1fDLL$HLHI9@I$HsI|$8HT$HT$HI$HCK11+E2eLLljD$yL$IljE91E1H1 Q<-KHHQHH~Qfffff.H 3HR&&%&HÐ#EgGGܺG vT2GGGffffff.HWVWVW V fDAWHAVAUATUSHT$HHL$HLD$HYi HT$HT$\$l$ċT$QAHAHH9vA@H;|$L$3L$D DT$pDl$DpD|$!3L$C"xjB.Vh DHG>p $Dt$D@DXDP \$DνDx$DD$DT$1!3\$D|$ԍ1!1AA1AD!1AxA E|$|D1D!1A*ƇGDD1D!D1G(F0D1!D1G3FAA1AD!1A ؘiADA 1ED!1ADDD1D!AD1E1x(A!F/[E1ED@,AADD$G0\AA1EE!A1A1ED@0A EE!A"kA1DDP4DDT$AqEE1AA!E1E1DDP8A!G*CyE1EDxEA1A!A1ED|$A EB9!EE1A!B7E1DDAE1E!E- E1DAA1E!A1ED|$AAG>ZEEA1A!A1ED|$A EB9EE1A!E1DD|$DB;AE1E!GogE1DAA1E!GL*A1EDt$AAEA1EA!B B9A1Dt$A EE1F<9L$A qDED1D1ˋL$DE "amDD1G 81A͉AD1E7D꾤AD1ADA 1ED1AϋL$AE KDD1G`KD1 DD1E>pD1A\AE1A1EDl$A AG/~(AA1B!'E1G,/EAEA1ߍ+0E1F<9DD1AED1 \$EDDD11ADt$ G59AE1GA1EAAA1AE1G%D")EDt$AEB1|EG*CA1E1DDt$DB3eVEF#E1AA1ADED|$ AA A1EDt$AAE DA1EAB 9AAEE E1GY[eDD$EDl$AED D1DE+ D ىD1ADE:}AAD D1׍3]AˋL$AED DD1GHtH}HL]H\$(Hl$0Ld$8Ll$@Lt$HL|$PHX@ILHI?LMEAHJM)L9J<9HL$LFLO<>L虿DuI@HL$wML)SLHHHDt$HHD$YHL$HD$L?H4H=DD$G,(A?Dmf.H\$Lt$HHl$Ld$ILl$H(DgGDA9ĉGvGA7A8E)HkEH5LJ|%Od%贾CIt$HBD#CS HBD%LHHl$H$Ld$Ll$Lt$ H(?AxE)vf.Hl$Ld$ILl$H\$HIHHdH%(H$1HLLHHH$dH3%(u(H$H$L$L$H訾AWIAVAUAATIUSHL$PHdH%(H$1LD1fDH|LLH)ھ蘽HHwTHuL?uHuYLL1҉H$dH3%(uGH[]A\A]A^A_DHtLHffDLHHJ製#EgGGܺG vT2GGGGHʉ  ʉOʉ  ʉPOʉ  ʉPO ʉ ΁  ʉP Oʉ  ʉPfff.AWHAVAUATUSH0HT$H\$HHl$HHL$H[HT$DmD}\$]Du Dl$]H9vEH;|$؉T$HT$HT$Dt$HD$fDt$HD$1Hl$4  THH@uˋT$\$H@t$|$Dl$Dd$DyZHD$E>yZADD$D1#\$DD$D1Dt$AىD1D!D1G7yZF!yZAډ1AD!DA1B.yZAD|$D1ωD!A1ύ<>DD1!D1ΉEyZAA,$DD1!D1E*yZl$ Aɉ1AD!AD1B;yZADD|$1AD!A1ByZ DDD1D!AD1E+yZDD1!ىD1AˋL$AD1E yZD!D1At$Aɉ1E2yZD!D1AA B;yZD|$$41D1D!AA1AˋL$DӍyZDD1!D1ٍ |$ AAE;yZD1!D1G9yZD|$AE1D1D13T$!1EAAE1EA1D3|$ DE1DyZ1D3t$D!AA1D3t$$A42D>AyZD1AD!AAyZ1DɍDD1D!D1ىލ A1D3l$A<1D3$$DD3d$D1ɉA1!AD1GyZE1AA G nD1A1AAED\$11A1D3\$E1AGnA42EADD$E1D3T$ E1D3D$AAn1D1AA1DL$DL$E1AA1D3L$$E1AA9n|$11<8AnL$11ȉD$3l$L$D1D1 n11|$|$3|$L$D1 D17nt$13t$t$3t$D$D$D1D1ƉD$n\$3\$1\$L$L$؋\$ 3\$D$D11 nL$3L$3L$L$ȋL$$3L$D$D$D1ىD$D$1L$nL$3L$3L$L$L$D$ L$1D1D1D13T$1L$L$D$L$L$nD$L$L$3L$3L$D$L$D$L$L$L$L$L$$D1E1D11nL$L$3L$3L$D$L$L$nL$L$L$L$3L$3L$L$L$D$L$L$L$A1D3|$L$3L$E13L$A1D3t$E1E1AA1A1AnA1E1AAAD$L$L$AnL$L$L$L$3L$3L$D$L$L$AnL$L$L$L$3L$3L$L$L$L$L$L$L$3L$E1ˋD$3L$E1D\$DT$A1AnD$1D$ĉL$L$D1t$ċD$L$L$L$L$L$L$D\$D3\$D3\$nD$1D$D1l$D$L$AˋL$A L$L$L$L$DT$D3T$D3T$DnL$GD\$L$DL$D$1D$D1d$AD$L$ED\$L$D3\$DnD3\$L$GEAEDL$AA11DD$1T$D11L$L$1L$D1D$DܼDًD$A EE D#D$1ʼnL$DD!Al$D$A ȋL$DD$1Ǎ ܼDD ՉL$DD!D!FܼA l$D|$͋L$A9DED E!D!D AA3t$3\$D$E!D11D1L$3L$1Ét$FܼD ƋD$D!މ\$FܼD AA42A1D$DAA!1D$Aۉ L$D!FܼD AAA!!D A AAD1ЉD$D$A1D$D$A1D$D1L$D$(ܼD$FLAD1 A!D$D$!1D$D$D 1D$A,)L$AE1D$A!D8ܼD$ !1‹D$D A<8AA1DT$2ܼD$D\$D !DT$!DL$ ։l$A40AA1E1D3t$A1A!D3t$AD3l$D3d$AܼD3l$ D3l$!AD3d$D AܼD|$\AD) !! AܼA  AA!!D TE1D3\$AD3\$A<ܼD3T$D3L$D/ω E1!A! A3ܼA<8 AA!!A1D E1D3L$t5AAܼE1AD+ !! A ܼ AAA!!D DD$D3D$D3D$L E1AAܼ*ډ !! l$3l$‰T$ D1A!D1A!D =ܼ׋T$|$3|$T$D1D17ܼT$t$ !! t$3t$‰T$T$D1D1ܼ\$\$D|$ A!!D D|$\$AF<;\$D|$A\$\$3\$D11 bʋL$13L$F<9L$3L$D|$D|$D11AD|$bʋT$D13T$D|$AD$F<:T$3T$D|$D|$D$D11F:bD|$D|$A1D3|$D$D|$D|$D|$AD|$D|$D$D|$D3|$D$E1A1AAbD|$D|$D3|$D3|$ANjD$D|$D|$D1AD|$D11D$D|$D|$AD|$D|$F8bʋD$D|$D|$D3|$D3|$D$D|$D$D|$D|$AD|$D|$D|$E1E1E1A1A1A1A1E1AA1AbD|$D|$D3|$D3|$ANjD$AD|$D$D|$D3d$A1ƋD$AADt$EbʋD$Dt$Dt$E1D3t$Dt$AƋD$Dt$Dt$A1ŋD$AADl$EbʋD$Dl$EE1D3l$Dl$ADl$Dl$AAE1Dl$E1D3l$G$HŃ/vHD$HPHT$H8HuH}TIH$$LHD$HD$ HD$fDHD$$L0Mt:L˗HHLI躙$L/vHD$HPHT$L0MuHEtHHHPL[]A\A]A^ÿ讛HH$$IHD$HD$ HD$AUIATUSHXHH$Ht$(HT$0HL$8LD$@HD$HD$ LL$H$HD$1HD$$H8Ht&Ζ$HÃ/vHD$HPHT$H8HuH{IH$$LHD$HD$ HD$fDHD$$L(Mt:L[HHLHJ$H/vHD$HPHT$L(MuHXL[]A\A]ÿNHH$$IHD$HD$ HD$AUIATUSHXL%A&HH$Ht$(HT$0HL$8LD$@HD$HD$ LL$H$I$HD$u!Yf.HD$$L(Mt:LcHHLHR$H/vHD$HPHT$L(MuI$HX[]A\A]Ð[H1HHT$H$HD$HD$HĘHi@BHÐUHSHHt2H?HtH[H{HHuHH[]@H[]fHl$Ld$I}H\$HcHHcʒHHLH9+HHl$H$Ld$Hffffff.AWHI1AVAUATUSHHf҅t&H/u/҃uyHcH1HHIt_HE1E1tfDH/t[uHH)H~A)JDMcJ|JDtpMtE/HL[]A\A]A^A_DH;/tA)JDMcHJ|fHJDE1/DHHE1fUHH]LeHLmLuIL}HĀIdH%(HE1Hu71H}dH3<%(HH]LeLmLuL}fHtHtM>L9IƋM4MLܒIMtHuLLI͑MmHuHHIEă;EEEu<1E1@AHD9e~I<I4tD;eHuLHItP}E9}EN}~81E1@AHD9efI<It蘔tEK1LqLiLaL褐IĐH==oHIċMHLxLILFϐIDMD$LMHH)HT$HHU}MH}MI)LEL谔A|$/MLEt|HEB8/BD8H}LMLEH}AMLEA<$LIIA$t<:uL9mH}.G/GHUB:1E1U1~11EHHUI<HEH;]uEUD)D9eRU~*IcDITH:HU臏HUEH9]}HcHHEH }~+L1H1H}UHMȐUHMH9UH}1HHUD9eHHD ~Df..@/H9UD9eIcITH2H}AHUVHUHD9ez讑LuiD1fUSHH-I&Ht#fD]x HcTyHmHuH[]@H9&SHH8t'HH&B(HcȃBH\1[fDHH@nH¸HtHjH&BHHYH&1륐fffff.Hl$Ld$H-s7&L%l7&Ll$Lt$L|$H\$H8L)AIHISHt1@LLDAHH9rH\$Hl$Ld$Ll$ Lt$(L|$0H8ÐUHSHH6&HthDHHHuH[ÐH蟓H%P:%s: file format not recognized; treating as linker script Reducing stack by rule %d (line %lu): %P%F: unrecognised keyword in MRI style script '%s' %X%P:%S: unknown phdr type `%s' (try integer literal) %X%P:%S: PHDRS syntax error at `%s' %P%F:%S: %s in %s %P%F:%S: %s token %s (nterm %s (Stack now %dDeletingStarting parse Stack size increased to %lu Entering state %d Reading a token: Now at end of input. Next token isShifting $%d = MRI style script-?fill valueoriginlength*default*PT_GNU_EH_FRAMEPT_GNU_STACKFILEHDRPHDRSFLAGSVERSION scriptgloballocalextern-> $$ =syntax errorError: discardingError: poppingmemory exhaustedCleanup: discarding lookaheadCleanup: poppingPT_NULLPT_LOADPT_DYNAMICPT_INTERPPT_NOTEPT_SHLIBPT_PHDRPT_TLS$end$undefinedINTLNAME'='OREQANDEQRSHIFTEQLSHIFTEQDIVEQMULTEQMINUSEQPLUSEQ'?'':'ORORANDAND'|''^''&''<''>'GERSHIFTLSHIFT'+''-''*''/''%'UNARY'('ALIGN_KBLOCKBINDSQUADLONGSHORTBYTESECTIONSINSERT_KAFTERBEFOREDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDSORT_BY_NAMESORT_BY_ALIGNMENT'{''}'SIZEOF_HEADERSOUTPUT_FORMATFORCE_COMMON_ALLOCATIONOUTPUT_ARCHINHIBIT_COMMON_ALLOCATIONSEGMENT_STARTINCLUDEMEMORYREGION_ALIASNOLOADDSECTCOPYINFOOVERLAYDEFINEDTARGET_KSEARCH_DIRMAPENTRYNEXTSIZEOFALIGNOFLOADADDRMAX_KMIN_KSTARTUPHLLSYSLIBNOFLOATNOCROSSREFSORIGINFILLLENGTHCREATE_OBJECT_SYMBOLSINPUTGROUPOUTPUTCONSTRUCTORSALIGNMODSUBALIGNPROVIDEPROVIDE_HIDDENAS_NEEDEDCHIPABSOLUTENEWLINEENDWORDORDERNAMEWORDASSERT_KPUBLICDEFSYMENDBASETRUNCATERELINPUT_SCRIPTINPUT_MRI_SCRIPTINPUT_DEFSYMCASEEXTERNVERS_TAGVERS_IDENTIFIERGLOBALLOCALVERSIONKINPUT_VERSION_SCRIPTKEEPONLY_IF_ROONLY_IF_RWSPECIALEXCLUDE_FILECONSTANTINPUT_DYNAMIC_LIST','';'')''['']''!''~'$acceptfilenamedefsym_expr$@1mri_script_file$@2mri_script_linesmri_script_command$@3ordernamelistmri_load_name_listmri_abs_name_listcasesymlistextern_name_list$@4extern_name_list_body$@5ifile_listifile_p1$@6$@7input_list@8@9@10sec_or_group_p1statement_anywhere$@11wildcard_namewildcard_specexclude_name_listfile_NAME_listinput_section_spec_no_keepinput_section_spec$@12statement$@13$@14statement_liststatement_list_optfill_expfill_optassign_opassignmentopt_commamemory_spec_list_optmemory_spec_listmemory_spec$@15$@16origin_speclength_specattributes_optattributes_listattributes_stringstartuphigh_level_libraryhigh_level_library_NAME_listlow_level_librarylow_level_library_NAME_listfloating_point_supportnocrossref_listmustbe_exp$@17memspec_at_optopt_atopt_alignopt_subalignsect_constraint$@18$@19$@20$@21$@22$@23$@24$@25$@26$@27$@28$@29$@30atypeopt_exp_with_typeopt_exp_without_typeopt_nocrossrefsmemspec_optphdr_optoverlay_section$@31$@32$@33phdrsphdr_listphdr$@34$@35phdr_typephdr_qualifiersphdr_valdynamic_list_file$@36dynamic_list_nodesdynamic_list_nodedynamic_list_tagversion_script_file$@37$@38vers_nodesvers_nodeverdepvers_tagvers_defns@39@40opt_semicolonI@I@I@J@aC@aC@aC@aC@J@DJ@aC@aC@TJ@fJ@xJ@J@J@J@J@J@J@J@K@aC@aC@K@%K@9K@MK@[K@aC@aC@iK@|K@K@aC@K@K@aC@K@K@K@K@K@aC@aC@L@L@L@(L@6L@EL@UL@aC@aC@aC@aC@aC@aC@aC@aC@aC@aC@aC@aC@eL@uL@L@L@L@L@L@L@aC@L@M@ M@M@-M@7M@aC@EM@UM@hM@zM@M@M@M@M@M@M@ N@N@:N@IN@gN@aC@aC@aC@aC@vN@aC@N@N@N@N@N@N@O@7O@_O@O@O@O@O@'P@OP@uP@P@P@P@0Q@FQ@aC@^Q@mQ@aC@|Q@aC@Q@Q@aC@Q@Q@Q@Q@R@R@aC@aC@aC@aC@%R@6R@GR@XR@iR@zR@R@R@R@R@R@R@R@ S@S@)S@aC@aC@9S@VS@S@S@aC@aC@aC@aC@aC@aC@aC@S@aC@ T@ T@*T@YT@aC@aC@aC@aC@T@T@T@aC@T@T@T@aC@U@aC@U@%U@5U@FU@lU@U@U@U@U@U@U@V@(V@CV@bV@V@V@V@V@V@W@;W@ZW@yW@W@W@W@W@X@3X@VX@uX@X@X@X@X@X@Y@3Y@NY@iY@Y@Y@Y@Y@Y@Z@CZ@^Z@yZ@Z@Z@Z@Z@[@[@)[@:[@K[@\[@m[@~[@[@[@[@[@[@[@[@\@.\@aC@s\@}\@\@\@\@aC@\@\@aC@]@(]@5]@D]@S]@b]@q]@aC@]@]@]@]@]@]@]@]@^@^@)^@:^@K^@\^@aC@^@^@^@aC@aC@aC@aC@^@^@^@_@_@_@?`@c@c@b@=c@aC@aC@aC@Nc@\c@_b@pb@zb@aC@aC@b@b@b@b@b@_`@u`@`@`@`@`@`@a@?a@ea@a@a@a@a@b@=b@O\@{T@S@&8-opKxo_ "#+;`bcghiknoqtv zuxKpRw!)x-.}/3xx:OB. PTUVW[\Wr] deA6o 'V&:N kssss,,%%x` !06zb| xx:./13T74IY"iLc6HJJ^\/t efghjkOl9qrVvwxy|&'!(D-2D5;>B:EFGPQ:R:"% !89 #$&'()*+,-./01234567:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~IGiSrZ$87 %&'9~ 89345 !":Z?867CDEFGH@ MNOPQRS99Z\67Ac5kgq8gXg8ak 8g% l  !"12()gg}%g}=8cd%% %%&'UW%345%67%:'%?CDEFGHyz{MNOPQRSH %Z\ %%!%%% !"k%67gq}67%}m9@9G9L !"_%&'ef%%%8345q%%%:%?%$ %%%H%%%MNOPQRS%%%;%%Z%\@%89G9L0k%6q8[_CefqU%\%8% %cYyZ%&'($9%345:%8&%?%%H\MNOPQRSd9%%Z\ 8%8k%&'9q%%%%8%%%9345%%@:%%%%?G%LcHMNOPQRS_$Z\9efqk%&'qM$&345:?4H@MNOPQRSb, Z\)*+,-kb67qhijkl@noprsuvw|}~[]aefq !"./0;<=>@ABIJKLTUVWXY^_`ef$q./0};<=>@ABIJKLTUVWXY^_`efq !"} !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !"&@ !"bhijklmnoprsuvw|}~ !"% !" !" !" !" !" !"Mc;y&aUWg YppQ\]IpqqBQqpexq\]  #CL*R[ZG[\]:b^\]L\]J'EsFnXephikl_`nopqruqt01z{^w~uv3^_LT!^3\x^]^_p\y]de{LV|}q_~_=_ O QLpp;qq>;<xc4567`ab456"<=(>*;?456$%+3,-.2L = 9/G8N>KOPQ*BRSZ[HJcdbffst+,?Tvwxy45|})6_gijklmnopq  */")-05168:;LC;?KMDPU[\]ijklmnopqd iX=>*E?45j6FHoF4pGhg@qrstuvHwxIJKLMyNOPQRSTUVWXz{|45 }~ !"#$%&'()*+,-./01234567 !"#$%&8'()*m+,-./01234567 8           # $ % & ' ( A S Y Z ^ h k   EFGHIJKLMNOPQRSTUVWX     ; E?> < PFI@AOPRnH=@F?BCDEAG.36VaU]_PJ]_Bk4U6m(1/ !$%4&'* QDYZ>\_ -87[KXbW^`C hji635LNGIJTlWb^aQKX+20,#"59RSNL  Vf]`SH):c`YOM k'(9:[dd!#&)=7co\c"k:MgT  ;8eZ>:$< . rqs/%p +}+uvp|~*,t,0,xwyz -{12                           K#DH7^ W,73"1CAz Y.9!:@r<=IN>?@A2EcAVlWj mBD97f CD`ayz{8  8./0;<=>@ABIJKLTUVWXY^_`efq}&@bhijklnoprsuvw|}~}  8   8812%%8%%%%%%%%%%%%%%%&'345:?HMNOPQRSZ\kqm9 9@g%%8%%%%%%%%%%%%%%%%%%% !"8  }99@G_99%g  $%%g9$ 8%(%CDEFG%%cYcZ$9  %&$8%%%d\9'%9%88 )*+,-67@[]aq9%%%%%6%9%67a67%%8%%%%%c$9%B-B5B@BJBRB[BcB !#%**016789:;<=>?@BDFIKMOQSRVYX\`acejmpsvy}|#%$+,016;<AEEIHOPSUY[]_afmosuwy{}!#%'),.02468:<>@BDFHJLNPRTVY[]_acegikmoxz|~  #%-02676@mp|  "&*.26<> "#&+-/249>BEJNSX]bgjmpuz}  !%,.257;>?EFNOV[^abgjksuwy{   "$&(*.29@BCHJKOQRZ[aeijnpsux} !&+05<CJOV[]dkrw|   (-.123:<=AGHLMPRUZ]^abhjmrxyz{mhhionsssrjjj&&bbklpvvuw|}@$~I%J%`%;%;%=%<>^%_%K%@$Y%}%0102B%g%g%g%.89L%q% %6%7%6%7%6%6%7%6%7%7%6%%%%]a6%a%[%q%@$)*+,- e%f%A89@$Z\%T%U%U%V%WX%M% !"H%:O%N%P%Q%%k%&%&%3%4%5%?%'%R%S%q%Z%\%cc%&%d%89G89_89@$CDEFG%%(%(%'%Y89/89c%%89  8 9   8 98 98 9          }8 9}8 9  } }jBBoBzBqC~BBBBBBBBBBBŭBɭBέBխB٭BݭBkBBBBBCBBBBBB BBBBB B&B,B+B1B6B@*@@@@ڈ@ƈ@@@@v@b@N@:@&@@@@և@‡@@@@r@^@J@6@"@@@@҆@@@@@n@Z@F@2@@ @@@΅@@@@~@j@V@B@.@@@@ބ@ʄ@@@@z@f@R@>@*@@@@ڃ@ƃ@@@@v@b@N@:@&@@@@ւ@‚@@@@ {@@z@z@E@1@@ @@@̀@@@@}@i@U@A@-@@@@@@@@@y@e@Q@=@)@@@~@~@~@~@~@~@c~@B~@%~@~@~{@}@ {@z@r|@^|@J|@6|@|@{@{@Ō@@@r@ {@z@z@@с@}@|@Y@Y@Y@Y@Y@Y@Y@Y@Y@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ &,+"#$%-.'(! sq*) &,+"#$%-.'(! *)$%sq~"#$%-.(! w ww~~ [Ftr=>[F=>tr:4bkWl{`B^h:4kl{B:4bkWl{`B^hU63j@]LKva_63jLU63j@]LKva_?VAT5/i1JG\H?5i1G?VAT5/i1JG\HA<NuceypX2<Numyp<NuceypX2};Sx};x};SxMMMnoInonoIdZddZP|0f|P|0fYEEYEzDCzDCzDC999gg777OO888QQRR77666886 99::;;666666<=6666=========66=6===========================666=666<>66666666>>6Z666666>bbbbb>>>>>>>>>66b>666>?6??66?????????????????????????@66@66ABC666BBZZ6D66BBBBBBB66BBBBBBB66E66F666GGGG6666<6==66=======66=66=====================================================66>>666H66ZZ*66I6bbb>>>>b>>>bb>>>>>>>>>>>>>>>>>>>b>??J?6I??????????????????????????????????????????????????????@@A6BBCCDBBBBBBBBBBBBBBBBBBBBBBBBBBB6EFG6GGG66================================================================>HI>b>>>>>>>>b>>>>>>>>>>>>>>>>>>>>>>>?J??????????????????????????????????????????????????????????????????@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGG============================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????BBBBBBBBKBBBBBBBBBBBBBBBLBBBBBBBGGG==================================================>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????BBBBBMKBBBBBBBBBNLBBBBGGG=========================================>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????BBBBBBBBBBBBGG===============================>>>>>>>>>>>>>>>>>>>???????????????????????????????BBBBBB========================>>>>>>>>>>>>>>????????????????????????BBBBBB===================>>>>>>>>>???????????????????===================>>>>>>>>>???????????????????================>>>>>>>????????????????==============>>>>>>??????????????==========>>>>>??????????==========>>>>>>??????????=======>>>???????=======>>>???????======>>??????=====>>?????====>????====>????====>????===>???==??=?=?666666666666666666666666    QC5   A   ;= ^ D W !Uq2 ' X 5A; MYZ   " jT7] =RMT   A C n{   w s @u b   R   | 8  { }   { x z n y { o } } q ~ w n b i u d w u c c b C F K <  F) JMyf ` ^ g h [ d Z f N W L W Y \ Q X D X Z ' tG U D N P G E ? M = J J : A = 9 ; = "C 9 9 7 , 7 9 - ; ; / < 5 &, ' 3 " 5 3 ! !   BC uAxI# " &    %  !  V)   Di         w~{zuvsyson~rviNVjsrfpg_nlkcZ[^>bFE:C;4A?>7/02PIQJMHTFLBA5E>8;=:H<6H563E354A"7*2*3,703#'+/%'*%#     q|uxa`Kl)" ("5_qFPOjksp  "# %'%!/-$-;4 +24DEJG:IKB2NJ@MR>EXVROJ^\[b\^gltbowgmLZkttoYU]]Yil~ %&"   842$7!3"EF8G1?@456NI42UVHZOXARIWXMoRqoa]u_q]\ceew   $(&( #!$+'15640-):/B?BOM?AOSV8IY[N\>PaQaY[hfXZhgjL]STeaqdglL]xjmQmcduqsv{[lq{    :EP[fqy{  $H $))  ++--0-. 0.-/. / --120728.2981Wv7H^^9 %% ;QY:[W%:%;::kY!Q``v%lk| m l>[>>|m%%>>>">>%> #z&&cncpncpnc&p&ccdpddzddd$&&%eeeeggeffgeefggfff))ssps&pssG@@sG':(:)q}}q*h~~5}}bhb5+~}~\r,\0r}}}1~5~6**nnn89:;n<*n*OO@*AEOOOOOO001F1*H*0I1JM*00O11POOOOOOZZLVVQRZZZZZZUZ2Z2ZVZVV2vZv22JWvZZZZZZ7Z7ZLZVZVK7ZZbb[77]bbbbbbbT;b;_b`bbb;cdbKeT;;fbbbbbb<b<<gbhi<jkbyy<<PlPyyyyyyPnopPPqrtuvxyz{yyyyyy|}P~    """""""" !"#"$"%')*+,-.012578:<=>""""""?@A"B"SSCDEFGJSSSSSSKLMNSRSSTXYZ[]^_`acdfghjmSSSSSSnopSkSqkrsvxyz|}~22222222222222222    222BB BBBBBBBBBBBBBB !"#$%&'()*+./013456789:B=>?@ABCDEFGJKLMOPQRSTUBBBVWXY\]^_`abcdeghijklmnopstuvwxyz|}      !"$%&(),-/123777777777778888888888899999999999:::::::::::;;;;;;;;;;;<<<<<<<<<<<========>I>>>>>???????@@@@AAAAAAAAAAABBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFGGGGGGHH HHHHJ JJJJJJK KKKKKKKKKLLLLLLLLLLMMMMMMMMMMNNNNNNNNNN~}|{zyxwvusrqolihgfedcba`_^]\[ZYXWVUTSRQPNKJIHGFEDCA@?>=<;:9876543210/.-,+('&%$#"!      ~}|{zyxwutspomlkjigfedca`_^[ZYXQONMLKJIHFEDCBA?>=984     tojih_UTNMLFEDC@?=<6543*" 6666666666666666666666666666666666666666666666666666666666666666666666666666666666 !"#$%&'()*+,-./012345#6789:;<=>?#@####A#B#C#########D##E##F####GHIJKLMNKOPQRSTUVWXYZ[\]^_`abcdefghXiXjklmnoXXpXXXXXXXqXrKXsgggggXXXXXXXXXXtXXXXuvwxKLMNKyPQRSTUVz{|}~\]^_`a{{{{{{q{rK{{{{{{{{{{{{{{{{{{uvwKKKKKKKKKKK}~KKKKKKKK% KKKKKKKKKKKKKK}~KKKKK ',&    B( D,C'KFKKE,UGgh,KKK)+GHI%7H7bLIc8MJ9N!!7O7^!T_:p`i!!jkqa;7d7<e7r7!s77t!=!f!!!!!XuY>Zw{,x[vyz|\]LJ,77+!,!!PKJVVK<VV --5=6 -W-/L0M--W--**C\D]E^F6G6"",""""""777766!!,!!!""""""))VV*+*+**,7---,-;!Q<.Ro!!S*+*+**7,7---,-!.00!!010200q37473r56!3!0707007373!3SS!!77SSSSSS7!7--!!!!! SSSSSS- - ' 7 7!!! !"#$%&'()+,-./0123456789:*;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]^_`abcdefghijklmnopqrstuYvwxyZz{|}~""""""""""""""SSSSSSSS))SSSSSS))mmmmnnnn      !"$%&'()*+,./#0123-456789:=>?;@A<BCDEFGHJKILMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345!!!!!!RRRRRRR*******~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMIHGFEDCBA@?>=:9876543210/.-*)('&%$#"!      ~}|{zyxwvutsplkjihgfedcba`_[ZYXWVUTPONIHBA@?>;:9874321.-,+(&%$#"!    '/(%$~}onmlQKA@?/$#6666666666666666666666666666666666666666666666666666666666666666666666666666666666yylex       %P%F: invalid hex number `%s' %P%F: use the --help option for usage information %P%F: unrecognized -a option `%s' %P%F: unrecognized -assert option `%s' %F%P: unknown demangling style `%s'%s: emulation specific options: %P%F: bad --unresolved-symbols option: %s %P: SONAME must not be empty string; keeping previous one %P%F: invalid common section sorting option: %s %P%F: invalid section sorting option: %s %P%F: invalid argument to option "--section-start" %P%F: missing argument(s) to option "--section-start" %P%F: may not nest groups (--help for usage) %P%F: group ended before it began (--help for usage) %P%X: --hash-size needs a numeric argument %P: SONAME must not be empty string; ignored Shared library control for HP/UX compatibilitySpecify target for following input filesForce common symbols to be definedUndo the effect of --export-dynamicAuxiliary filter for shared object symbol tableFilter for shared object symbol tableSmall data size (if no size, same as --shared)Set internal name of shared librarySet PROGRAM as the dynamic linker to useAdd DIRECTORY to library search pathOverride the default sysroot locationPrint map file on standard outputDo not page align data, do not make text readonlyPage align data, make text readonlyIgnored for SVR4 compatibilityGenerate relocations in final outputJust link symbols (if directory, same as --rpath)Strip symbols in discarded sectionsDo not strip symbols in discarded sectionsStart with undefined reference to SYMBOLDon't merge input [SECTION | orphan] sectionsBuild global constructor/destructor tablesPrint version and emulation informationDiscard temporary local symbols (default)Don't discard any local symbolsDefault search path for Solaris compatibilityAccept input files whose architecture cannot be determinedReject input files whose architecture is unknownOnly set DT_NEEDED for following dynamic libs if usedAlways set DT_NEEDED for dynamic libraries mentioned on the command lineIgnored for SunOS compatibilityDo not link against shared librariesBind global references locallyBind global function references locallyCheck section addresses for overlaps (default)Do not check section addresses for overlapsCopy DT_NEEDED links mentioned inside DSOs that followDo not copy DT_NEEDED links mentioned inside DSOs that followDemangle symbol names [using STYLE]Do not treat warnings as errors (default)Force generation of file with .exe suffixRemove unused sections (on some targets)Don't remove unused sections (default)List removed unused sections on stderrDo not list removed unused sectionsSet default hash table size close to Use less memory and more disk I/ODo not allow unresolved references in object filesAllow unresolved references in shared libariesDo not allow unresolved references in shared libsCreate default symbol version for imported symbolsDon't warn about mismatched input filesDon't warn on finding an incompatible libraryCreate an output file even if errors occurOnly use library directories specified on the command lineIgnored for Linux compatibilityReduce memory overheads, possibly taking much longerRelax branches on certain targetsKeep only symbols listed in FILESet runtime shared library search pathSet link time shared library search pathCreate a position independent executableSort common symbols by alignment [in specified order]Sort sections by name or maximum alignmentHow many tags to reserve in .dynamic sectionSplit output sections every SIZE octetsSplit output sections every COUNT relocsDisplay target specific optionsUse same format as native linkerHow to handle unresolved symbols. is: ignore-all, report-all, ignore-in-object-files, ignore-in-shared-libsOutput lots of information during linkRead version information scriptTake export symbols list from .exports, using SYMBOL as the version.Add data symbols to dynamic listUse C++ operator new/delete dynamic listWarn about duplicate common symbolsWarn if global constructors/destructors are seenWarn if the multiple GP values are usedWarn only once per undefined symbolWarn if start of section changes due to alignmentWarn if shared object has DT_TEXTRELWarn if an object has alternate ELF machine codeReport unresolved symbols as warningsReport unresolved symbols as errorsInclude all objects from following archivesUse wrapper functions for SYMBOL-G--shared--library=%s%P: unrecognized option '%s' defaultnodefinitionsnosymbolicpure-text%P%F: invalid number `%s' Usage: %s [options] file... Options: %s-%c%s-%s%s @FILERead options from FILE %s: supported targets:%s: supported emulations: Report bugs to %s ignore-allreport-allignore-in-object-filesignore-in-shared-libs%P%F: bad -rpath option %s%c%s%P%F: -shared not supported %P%F: -pie not supported descendingascending.bss.data.text.text-segmentP,KEYWORDSet architecturemri-scriptRead MRI format linker scriptdcdpentrySet start addressExport all dynamic symbolsno-export-dynamicEBLink big-endian objectsLink little-endian objectsauxiliaryfilterIgnoredgpsizesonameFILENAMEdynamic-linkerPROGRAMSearch for library LIBNAMElibrary-pathDIRECTORYsysroot=Set emulationprint-mapnmagicDo not page align datano-omagicSet output file nameOptimize output fileQyemit-relocsrelocatableGenerate relocatable outputjust-symbolsstrip-allStrip all symbolsstrip-debugStrip debugging symbolsno-strip-discardedtraceTrace file opensRead linker scriptdefault-scriptRead default linker scriptdTunique[=SECTION]UrPrint version informationdiscard-allDiscard all local symbolsdiscard-localsdiscard-nonetrace-symbolTrace mentions of SYMBOLstart-groupStart a groupend-groupEnd a groupno-accept-unknown-input-archno-add-neededno-as-neededassertBdynamicLink against shared librariescall_sharedBstaticdnnon_sharedBsymbolicBsymbolic-functionsno-check-sectionsno-copy-dt-needed-entriescrefOutput cross reference tabledefsymSYMBOL=EXPRESSIONDefine a symbol[=STYLE]embedded-relocsGenerate embedded relocsTreat warnings as errorsno-fatal-warningsCall SYMBOL at unload-timeforce-exe-suffixno-gc-sectionsno-print-gc-sectionshash-size=Print option helpCall SYMBOL at load-timeMapWrite a map fileno-define-commonDo not define Common storageno-demangleDo not demangle symbol namesno-keep-memoryno-undefinedno-allow-shlib-undefinedallow-multiple-definitionAllow multiple definitionsno-undefined-versionDisallow undefined versiondefault-symverCreate default symbol versiondefault-imported-symverno-warn-mismatchno-warn-search-mismatchno-whole-archiveTurn off --whole-archivenoinhibit-execnoinhibit_execnostdliboformatSpecify target of output fileqmagicreduce-memory-overheadsrelaxretain-symbols-filerpathrpath-linkCreate a shared libraryBshareablepiepic-executablesort-common[=ascending|descending]sort_commonsort-sectionname|alignmentspare-dynamic-tagsCOUNTsplit-by-file[=SIZE]split-by-reloc[=COUNT]statsPrint memory usage statisticstarget-helptask-linkDo task level linkingtraditional-formatsection-startSECTION=ADDRESSSet address of named sectionTbssSet address of .bss sectionTdataSet address of .data sectionTtextSet address of .text sectionTtext-segmentSet address of text segmentunresolved-symbols=dll-verboseversion-scriptversion-exports-sectiondynamic-list-datadynamic-list-cpp-newdynamic-list-cpp-typeinfoUse C++ typeinfo dynamic listdynamic-listRead dynamic listwarn-commonwarn-constructorswarn-multiple-gpwarn-oncewarn-section-alignwarn-shared-textrelwarn-alternate-emwarn-unresolved-symbolserror-unresolved-symbolswrapΓ@@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@L@@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@@Γ@j@Γ@Γ@Γ@@@@Ο@Γ@%@Γ@Γ@8@N@^@@Γ@Γ@@ޜ@@Γ@&@Γ@?@N@Γ@Γ@Γ@Γ@Γ@Γ@Γ@@3@D@d@s@@`@-@Z@Γ@Γ@@`@@@Γ@7@Z@@(@C@T@Γ@j@y@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@Γ@@@@5@{@%@`@@@ @@@@&@`@ͥ@@@@ @@(@7@@@Ѧ@E@c@d@-@@9@@@@ @@@@ԝ@Ҝ@@@@@@˙@#@W@@@@Ϛ@ޚ@@@ @@>@@@@ǖ@֖@@@@@@)@5@Z@f@r@@@@@@@И@@@@@@ @;@J@Y@r@~@F@U@d@@@@{@@@ڣ@aQCrC]CAABYC"CbbC@rCjCccCuCCddprCCdCee?CCτCEC̄CrCބCCBCCffUBrCCFFUBrCg%C-CGGCsC4Ch;CHsCDCISCpsC CllnC[CvCLLCsCCsCmCCCMMsCCnnCڅCNNtCׅCPtC;CooCCOC CxtCCqqtCCrr&CiBCRRCtCOCssYCkCSSwCCtCC uCCttCBTTCC̆CCۆCCpBuuCPuCCCuC CuCƊCvCVuC(Cxx4CNCXXvC]C8vCjCyyCwCYIEXvCC((CC))CÇCvCCvCC݇CCwCC8wCCQCwCCCXB&C2CwC:C=C3CHCwCRCxCiC8xCfChxC{CxCxCxCCCCC͈CC݈CyCCC+CC(C8yCCC:CUChyCiCyCfCyCxCyCuCzCC@zCCCCCCȉCC̉C݉CC CC4CpzCCCzCSCzCPC{CiCCCCΊC݊CC8{CCp{C$C{CNULL TREE %B:%s+0x%vPROVIDE (%s, ASSERT (, %s) (%s)ldexp.c%X%P: %s %F%S %% by zero %F%S / by zero MAXPAGESIZECOMMONPAGESIZE+=-=*=/=<<=>>=&=|=||&&==!=<<>>MAXMINASSERTAAAA(AAAA8AAAAЖA@AxAxAxAAAXABqC C C  C  CCCCC C C#C&CCC)C,C1B B,B+B1B6BB=B?B@By\BZ]BA/CB3C`7CgC$`B%sB&BIܯBKB.B%F%S can not PROVIDE assignment to location counter %F%S invalid assignment to location counter %F%S assignment to location counter invalid outside of SECTION %F%S cannot move location counter backwards (from %V to %V) %P%F:%s: hash creation failed %X%S: unresolvable symbol `%s' referenced in expression %F%S: undefined symbol `%s' referenced in expression %F%S: undefined section `%s' referenced in expression %F%S: undefined MEMORY region `%s' referenced in expression %F%S: unknown constant `%s' referenced in expression %F%S: nonconstant expression for %s %s: Supported emulations: %S HLL ignored %S SYSLIB ignored GNUTARGET no emulation specific options. %P: unrecognised emulation mode: %s GNU ld %s Supported emulations: %s version 2.20.51.0.2-5.48.el6_10.1 20100205Copyright 2009 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. 0x%sno symbol[%s]%s generated--defsym %s%s:%ubuilt in linker script:%u%s+0x%v (type %s)%B: In function `%T': %s:%T%B:(%A+0x%v)%ld%lu%%%c%P%F: please report this bug %F%P: internal error %s %d %P: internal error: aborting at %s line %d in %s %P: internal error: aborting at %s line %d AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAYAAAUAAAAAAAAAA\AAAgAgAAAAAAAAAAAAAAAAAAAAAܷAAAAAAA AA2AA%P%F: cannot represent machine `%s' %P%F: cannot open linker script file %s: %E %F%P: invalid BFD target `%s' %P: skipping incompatible %s when searching for %s %F%P: attempted static link of dynamic object `%s' %F%P: %s (%s): No such file: %E %F%P: cannot find %s inside %s /ldscriptscannot find script file %s opened script file %s /usr/lib/usr/binattempt to open %s failed attempt to open %s succeeded %F%P: %s: No such file: %E .a%F%P: cannot find %s C%X%C: prohibited cross reference from %s to `%T' in %s %P: symbol `%T' missing from main hash table %X%P: bfd_hash_table_init of cref table failed: %E %X%P: cref_hash_lookup failed: %E Cross Reference Table SymbolFile No symbols ldcref.c%X%P: cref alloc failed: %E /* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.sharable_data 0 : { *(.rela.sharable_data) } .rela.sharable_bss 0 : { *(.rela.sharable_bss) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.sharable_data 0 : { *(.rela.sharable_data) } .rela.sharable_bss 0 : { *(.rela.sharable_bss) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } %P%F: --just-symbols may not be used on DSO: %B --build-id[=STYLE] Generate build ID note --audit=AUDITLIB Specify a library to use for auditing -P AUDITLIB, --depaudit=AUDITLIB Specify a library to use for auditing dependencies -Bgroup Selects group name lookup rules for DSO --disable-new-dtags Disable new dynamic tags --enable-new-dtags Enable new dynamic tags --eh-frame-hdr Create .eh_frame_hdr section --hash-style=STYLE Set hash style to sysv, gnu or both -z combreloc Merge dynamic relocs into one section and sort -z defs Report unresolved symbols in object files. -z execstack Mark executable as requiring executable stack -z initfirst Mark DSO to be initialized first at runtime -z interpose Mark object to interpose all DSOs but executable -z lazy Mark object lazy runtime binding (default) -z loadfltr Mark object requiring immediate process -z muldefs Allow multiple definitions -z nocombreloc Don't merge dynamic relocs into one section -z nocopyreloc Don't create copy relocs -z nodefaultlib Mark object not to use default search paths -z nodelete Mark DSO non-deletable at runtime -z nodlopen Mark DSO not available to dlopen -z nodump Mark DSO not available to dldump -z noexecstack Mark executable as not requiring executable stack -z norelro Don't create RELRO program header -z now Mark object non-lazy runtime binding -z origin Mark object requiring immediate $ORIGIN processing at runtime -z relro Create RELRO program header -z max-page-size=SIZE Set maximum page size to SIZE -z common-page-size=SIZE Set common page size to SIZE -z KEYWORD Ignored for Solaris compatibility %P%F: invalid hash style `%s' %P%F: invalid maxium page size `%s' %P%F: invalid common page size `%s' %F%P: unable to place orphaned sharable section %A (%B) %P%F: failed to set dynamic section sizes: %E %F%B: Can't read contents of section .gnu.warning: %E %P%F: failed to record assignment to %s: %E %F%P: map sections to segments failed: %E %F%P:%B: bfd_elf_get_bfd_needed_list failed: %E %P: warning: unrecognized --build-id style ignored. %P: warning: Cannot create .note.gnu.build-id section, --build-id ignored. %P: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored. %P: warning: %s, needed by %B, not found (try using -rpath or -rpath-link) %P: warning: %s, needed by %B, may conflict with %s %P: warning: .note.gnu.build-id section discarded, --build-id ignored. sha1sysvbothinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazymuldefsnocombrelocnocopyrelocnoexecstacknorelromax-page-size=common-page-size=.rela.dyn.rel.dyn.rel.comment.gnu.warning..note.plt%s/lib%s%s.soeelf_x86_64.cLD_RUN_PATH.gnu.warning%P%F: looping in map_segmentsincludelibc.so%F%P:%B: bfd_stat failed: %E found %s at %s md5uuid.note.gnu.build-id.eh_frame.eh_frame_hdr%s needed by %B LD_LIBRARY_PATH/usr/etc/ld.so.conf%s/%s.so./dev/urandomi386:x86-64elf64-x86-64depauditdisable-new-dtagsenable-new-dtagseh-frame-hdrexclude-libshash-styleBgroup.rodata.interp.sdataAAAnAAAAʞETEQEPZElE}EEEEgldelf_x86_64_write_build_id_sectionread_hex/* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.sharable_data 0 : { *(.rel.sharable_data) } .rel.sharable_bss 0 : { *(.rel.sharable_bss) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.sharable_data 0 : { *(.rel.sharable_data) } .rel.sharable_bss 0 : { *(.rel.sharable_bss) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_i386.celf_i386elf32-i3860*B*B*B)B)B)B)BʞETEQEPZElE}EEEEgldelf_i386_write_build_id_sectionread_hexldscripts/i386linux.xrldscripts/i386linux.xuldscripts/i386linux.xbnldscripts/i386linux.xldscripts/i386linux.xn%s/lib%s%s.saei386linux.ci386linuxa.out-i386-linux/* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.iplt 0 : { *(.rela.iplt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.iplt 0 : { *(.rela.iplt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.iplt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.iplt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.iplt : { *(.rela.iplt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_l1om.celf_l1omelf64-l1om^B`^BP^B]B0^B]B]BʞETEQEPZElE}EEEEgldelf_l1om_write_build_id_sectionread_hex out of memory ;4 P x p  P8`Ph 0@P`(p@Xp@p0Hp00(@Hp`0 pH p `@`  `#0###'H'`0(xP(((()0)0)H)` *x`*p**** ++(+H+`,x -p-..(.H 1P11`2(2Hp3x46 :x0:<P<<(=H=h0>>>?`@8@X@pABBhpDE F`GG@H0II@`LhLpM`NN N O@ `Oh P Q @R pU8!UP!PVx!PW!W!W" X "@X8"`XX"X"0Y"PY"pY"Y#^P#_h#pa#a#`b#b$0c0$d$e$f%phP%i%`j%w&x(&{X&@}&@&&P'p'@'''((P(0(Ў)@ )`))В)*(*P****@ +@+0+@+`@,,0,- @-0X-p-@h..P.`.p/X/0p/P/p////0000P0Ph0P01P81`1@11 2@8202223P(3X3P3334p04`44P44H5`55P56 06` P6 p6 6`670(7H7`7 7 7!7!7 "8@" 8P"88`"P8p"h8"8"8"8"8"8"8"9#(9 #@9@#X9`#p9#9#9#9#9$9$: $:@$0:`$H:%:`%:0&:`&;&;&0;'H;0'`;@'x;';';(;(;)<`4`<4<5<P6<6<@7=7 =8H=8p=P9=9=:=;>P=X>`=p>p=>A>C? EH?`Eh?E?0F?`G?I`@J@MAPNHARASASBU(BUPBYpBZBaBbChXCiClCmCmCn0Do`DsDvD@w@Ep~EEEF0FЅFF0FFF@GhGGGHHHhHHHH8I0`I`IJ@JвpJJJK0 K8Kp`KxKйK0K`KKL08L0LL0L M`HM@MM0M0M` NpNNNNO`O xO`OO O` P@HPpPP PP`@QhQ Q0 Q0 R XR0 RRShS@SS@TPTpTTTTpUhUUUU@UV(VzRx $N s O b N D^Go J $dPrAPG GFA$N i I ML 7$BBB B(A0A8G*C 8D0A(B BBBG {4pLhd`|XPH@80 ($ %<8%TP%lh%%%%$bDl H M K Q<D G \Dt@8)D,PH^ J t D v B D D `A G $GMN0 F <N0Y I D\BAG J0U  AABA _  AABA 0AN$0MN0 E $MN Q D $ AG n DF ,<AAG h AAE ,lHADG0s AAG LBBA A(D0W (D CBBD Z (C ABBF XN0b A  gDY E D,hOBBB B(A0A8D@ 8A0A(B BBBA D 8F0A(B BBBA D 8F0A(B BBBA D 8F0A(B BBBA D 8F0A(B BBBB LBGD A(J@S (A ABBG H (A ABBJ L,BBB B(D0H8G 8A0A(B BBBF |X`Q LeBBB B(D0D8DP0 8D0A(B BBBG ,xEDLQd?|$-ADD aAA$-ADD aAA,{ `, XRD ;\ t 0    X QHe A b PIMD w DV, DQ$D  MI n D l xL4 AHG0[ AAC [CA4 qAAG S FAE DCA POQ d K L LBEE E(D0A8D`$ 8D0A(B BBBE d ,Aj4 qADD s AAB nAA4 BIA  HBK _DB 0EI{, `AIG c AAJ ,D +X0s E g I fdt eBBB B(A0A8GPJ 8A0A(B BBBK  8A0A(B BBBC d BGE E(D0A8DP{ 8D0A(B BBBE J 8A0A(B BBBC D  d\ BEE A(I0y (A MBBO h (A MBBF J (A MBBL  !7Dk 8!7Dk `!fN { G !GQ X 44`"YBAC C ADB EAB,l"ADG T AAF " $"MD x G F J $#MD x G y G  $=AL nA$@$\<H$BBE E(D0D8GPw 8A0A(B BBBB L8A0J(B BEBD$xBEE E(D0A8D@S8A0A(B BBBL$BEE E(D0A8D@p 8A0A(B BBBA L4`%BBB E(D0A8D% 8A0A(B BBBE d&LBBE E(A0A8Dp 8A0A(B BBBJ A8A0A(B BBB\'BEE E(A0A8D` 8A0A(B BBBC v8A0A(B BBB$L8(MMI@[ B t(eDP L D$)mKb C S M $H)MN@~ G $*~EY J A O $ h*MNpG F 4,N a A 4TP-AG ] AJ j AE cA$-MML0h B p.BDi A ..HDo A $ .MAAG AAA<4.0BEA D(D0  (C ABBD $t/MI w C 0Hv J DH1%BBB D(D0G@ 0A(A BBBG 04$84O` A K E LD4BBE E(D0I8FP 8A0A(B BBBG 5?LD n53Dj5MN ~56 HW$$6MMI0gLh6?N pl6 HW6 HW6QMI zL6BBB B(D0D8G@ 8A0A(B BBBD x;*De<4;fBBD C(G0 (D ABBF t= $=MV0 B $p>oN H J N>YMD GL>bBLB B(A0D8J@ 8A0A(B BBBA LL@LBEA C(G0E (D ABBH (D ABB,AMYD@b D OLABBB E(D0J8G`b8A0A(B BBB,CAGJ H AAL <LxCZBLA A(D08(D ABBLDX BEB E(D0D8G 8A0A(B BBBE Q3D n,Q}BUC R ALG 4$ UAAD0 AAA  AAE \VD! K 4|XIAAG O FAA  AAH dYBBB E(A0A8G@ 8A0A(B BBBD _ 8A0A(B BBBG H\CAA<x\ID ] G `\\?A] B Z$|\HF B e K HL0]AAG Q AAD O AAG , AAJ S AAK $_MV@l A ,Xd|AAG V DAA |LdBEE E(A0A8D@j 8A0A(B BBBE n 8A0A(B BBBH L 8G0A(B BBHN eiDM G <fADG H AAJ ] AAA \AA,,xfADG x AAJ <\f2BBA C(G@e (A ABBF 4hBHA A(D0(A ABBimN f D $iAJ  AF LjBDD C(N0P (C ABBA P (A ABBF $lhkAJ E c M ,kMN0e H  C $mMX0d G pgMI Ld hp|BBB B(D0D8J 8A0A(B BBBE i 8A0A(B BBBE Dtr BBB D(D0G@W 0A(A BBBD LHuBBB B(A0A8D' 8A0A(B BBBA L BEB E(D0D8K@ 8A0A(B BEBF $\AQ { AB LpZBEB B(D0D8G 8D0A(B BBBJ 4AG Q AF O DE JD ؍ $$ Ѝ@D J U K L BBB A(D0x (A BBBV d (A BBBK S (A BBBA  (A BBBE @ (A BBBK F (A BBBG X (A BBBQ  (O BBBA J (A BBBS  (A BBB] 44!ЖBQH r AII dAI4l!(xBAA D  AABA !p!hL!`BEB E(D0D8GPf 8A0A(B BBBC $"<"T"l"Ț"К"ؚ DT,"AV I A W A W A"` "XN@K G #؛D4#BBB A(A0D@u 0A(A BBBG d|#BBB B(A0A8D@5 8A0A(B BBBK  8A0A(B BBBA #mDo A $$MN0X E \,$xXBEB E(D0C8G@ 8A0A(B BBBG Y8G0A(B BBB$$xiMPD0G$$iMPD0G$$M[@L%BIB A(A0 (A BBLD (A BBB$T%Ag H R N $|%(Ag H R N $%MN0u H j$%MMI0 D ,% MMN@_ I $$&pMMIPv G ,L&ȮM[Pm K  G $|&HMU@@ F $&MI0 F ,&ȲM\G| D ,&8%MMN`q G 4,'8f BBB B(A0A8Dd'p@Di C K$'zMS@X H d'BFB B(A0A8D 8A0A(B BBBI  8A0A(B BBBA <(@BIC N ABA T ABY DT(Aa V { ] m K w a   L y G A O ((HMD v(XXMQ y(QLN v(KMD y)KMD y<)82ApT\)XeMN0` E O I  H 0 H 2 F  E S E )p&$)LI f E )yN W K *`DL$,*h9MI ~ D T*qD@U G Pt*qD@R J P*@D@n F P*yD@` D P** + + 4+ L+ d+ |+ + + +++  ,$,<,T,l,,,, ,,,4-BDA [ ABK RAM$L-x`ADI OAA<t-BAA B HBH F ABO -@#DU-X#DU-pLDC-!.,.D.YD h D d.0DS I O$.Ay F Z F ..L._ BBE B(D0D8J 8A0A(B BBBA ,/GL/hGl/G/MI /AMD k/8G$/N | F X H g$00kADD _AA$<0xXALGCA4d0ACD G CAE vAC$0MI k G 0gS S<0=BBG A(D0 (O BBLI $1 <1$T1NM[P I d|1BEE E(A0D8D`P 8A0A(B BBBA  8C0A(B BBBH ,1rMI Y A  M H H 27DN F Z42$L2MML`zLt2)BBB B(A0A8DP 8A0A(B BBBA d2``BBB E(D0A8D 8A0A(B BBBA w 8A0A(B BBBM L,3X BOB B(A0A8D@k 8F0A(B BBBA d|3 BLB B(A0A8IPV 8A0A(B BBBA p 8A0A(B BBBA ,3 jADG D FAI <4 BBA A(D0 (A ABBA \T4pBBD D(G0r (A ABBE L (A ABBF s (A ABBA $4cAG n AI 4 $4MI H B 5HAD<5HBBE A(A0G@ 0A(A BBBF $5AD  AK $5,HS0 F L5BBB E(D0C8Gp 8D0A(B BBBH $$6@%GYNPn K <L6h&BBA A(Dp^ (A ABBB 6)AN A 6)46)AFI l AAB q FAH ,6*BAC ABL,7(+FBEB B(A0A8G 8A0A(B BBBA $|7(/0MN@q D d701)BEB B(G0A8D` 8A0A(B BBBH D 8F0A(B BBBE L 81&BBB B(A0A8DQ 8A0A(B BBBG $\88fMQq A ,8 :BGC U ABD 8:MI $8;LH[ E G A G A L8;BBB B(A0A8Jv 8A0A(B BBBD L9H?3Dnd9p? $|9x@MI H B 9@AD9DBBE A(A0G@ 0A(A BBBF $ :EAD  AK $4:@L,HS0 F L\:HMBBB E(D0C8Gp 8D0A(B BBBH $:RGYNPn K <:TBBA A(Dp^ (A ABBB ;VAN A 4;PW4L;XWAFI l AAB q FAH ,; XBAC ABL;XFBEB B(A0A8G 8A0A(B BBBA $<\0MN@q D d,<^)BEB B(G0A8D` 8A0A(B BBBH D 8F0A(B BBBE L<_&BBB B(A0A8DQ 8A0A(B BBBG $<pffMQq A , =gBGC U ABD <=XhMI $\=(iLH[ E G A G A L=PiBBB B(A0A8Jv 8A0A(B BBBD =l3Dn=mW$>PmYI@i E ,>n D>nFAJ E u$d>0nSDM G Y O N>hn,Dg>n $>oMI H B >oAD?sBBE A(A0G@ 0A(A BBBF $L?tAD  AK $t?P{,HS0 F L?X|BBB E(D0C8Gp 8D0A(B BBBH $?GYNPn K <@BBA A(Dp^ (A ABBB T@AN A t@`4@hAFI l AAB q FAH $@00MN@q D L@8BBB B(A0A8DQ 8A0A(B BBBG $8A0A(B BBB$ DPMMN@y G <4D@BEA A(G0 (G ABBJ $tDmMQNLDXBEB H(A0D8I" 8A0A(B BBBF 4DGADD l DAF DAA<$E BHB D(A0v (A BBBB ,dEAC EJ C LEBBB E(A0D8D@I 8D0A(B BBBF LEBBB E(D0A8DpP 8A0A(B BBBB <4FBEA D(G(A ABBtFAF`ADFhBEB A(A0G 0D(A BBBA <F(XBEA A(D (D ABBA <GHBEA A(D(A ABB\GtG6Gd4GGADD m DAE DAAGQGHO rLGP>BJB B(A0A8G@ 8D0A(B BBBF ,4H@+AC KVA J dH@|H8 $H0<AAD sAAHH{Hi G H$HQ_@X 2@ (Bo@hX@ T hh#@!@ o!@oo, @o@oPo`@oxhS;xiPhh&3@`fS; cS;&S;hcS;cS;PmhS; cS;v&S;cS;P,fS;jS;-S;cS;WgS;3kS; cS;P0S;.S;@-S;cS;@cS; ,S;&S;+fS;`"S;cS; hcS; Y#S;`/S;"S;jcS; cS;cS;hcS;-S;$cS;'S;`n&S; !S;'S;cS;jS;PcS;0 .S;4kS;`k&S;PcS;ЈcS; cS;cS;0.cS;ccS;cS; (S;0cS;&S; 'S;i+S;&S;PcS;p+fS;&S;-S;cS;cS;+fS;cS;cS;cS;pcS; 4kS;+fS; bS;cS;cS;,fS;0cS;0 cS;cS; cS;&S;cS; 'S;q&S;l#S;'S; cS; cS;`cS; (S;PcS;8(S;!cS;@,S;r&S;N#S;pcS;p7kS;'S;0!S;N#S;sjS;PcS;"S;0(0S;cS;cS;P&kS;kcS;cS;cS;7kS;@cS;@fS;p*S;&S;2kS;RgS;`b&S;pccS; lcS;09kS;`9kS;peS;@cS; icS;cS;@cS; /S;@cS;0cS;cS;-S;cS;icS; x&S;8kS; 'S;0'kS; cS;лcS;cS;8kS;9kS;@cS; m#S; cS;*S;-S;@fS;(fS;@+fS;`&S;@0kS;cS;cS;hh:C1Chhh'C `qAaA`oAnAtApkAhA0gA@aA`A fA0AAA EAhh`h@hCXh`i`BAAбABPA A0AAACDEpA0APA APA0AA:CE+4C#/C+E+E#@BBAAбA3Bp*B A0A&BB GGpAP%BpB@BpBPBB:CE+4C#/C+E+E#@DBAAбAAA A0A`DBBBZ Gd GpADB CBpoBAAбAaB^B A0AZBDB$H-HpAYBSBRBKBFBFB:CE+4C#/C+E+E#@ikS;h֍S;hCBBBBQ00000000000000000000000000000000  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`XS;kS;@hՍS;0h XS;@XS;libbfd-2.20.51.0.2-5.48.el6_10.1.so__gmon_start___Jv_RegisterClasseshtab_find_slotbfd_elf_set_dt_needed_namebfd_getb64bfd_link_add_undefbfd_check_formatbfd_hash_newfuncxexitbfd_target_listxstrdupbfd_get_archbfd_make_section_anyway_with_flagsbfd_set_gp_sizecplus_demangle_name_to_stylebfd_emul_get_commonpagesizebfd_und_sectionbfd_search_for_target_sch_tolowerbfd_set_errorbfd_get_reloc_sizebfd_set_error_program_namehtab_hash_string_sch_istablebfd_elf_get_dt_sonamebfd_section_already_linked_table_initbfd_elf_set_dyn_lib_classxmalloc_set_program_namebfd_check_format_matchesbfd_closebfd_elf_get_bfd_needed_listxcallocbfd_errmsgbfd_elf_size_dynsym_hash_dynstrcplus_demanglebfd_openr_next_archived_filebfd_new_link_orderbfd_hash_set_default_sizebfd_abs_sectionbfd_hash_lookupbfd_section_already_linked_table_freebfd_arch_mach_octets_per_bytebfd_cache_closebfd_get_section_by_namebfd_elf_get_runpath_listlrealpathbfd_emul_set_maxpagesizebfd_map_over_sectionsbfd_elf_get_dyn_lib_classbfd_scan_archbfd_bwriteunlink_if_ordinarybfd_elf_get_needed_listxmalloc_bfd_elf_map_sections_to_segmentsbfd_get_unique_section_namebfd_putl16bfd_arch_get_compatiblecplus_demangle_set_stylebfd_elf_size_dynamic_sectionsbfd_set_default_targetbfd_link_hash_lookupbfd_set_format_bfd_elf_match_sections_by_typexreallocbfd_emul_get_maxpagesizebfd_elf_discard_infobfd_get_reloc_code_namebfd_set_error_handlerbfd_putl32bfd_coff_get_comdat_sectionbfd_octets_per_bytebfd_link_hash_traversebfd_emul_set_commonpagesizebfd_seekbfd_record_phdrbfd_hash_table_initbfd_generic_link_read_symbolsbfd_hash_allocatebfd_scan_vmabfd_get_section_by_name_ifbfd_getb16lbasenamebfd_statbfd_hash_traversebfd_i386linux_size_dynamic_sectionsbfd_demanglebfd_putl64bfd_hash_table_free_bfd_fix_excluded_sec_symsbfd_wrapped_link_hash_lookupbfd_get_errorbfd_make_section_with_flagsbfd_getb32bfd_get_section_contentsbfd_reloc_type_lookupbfd_openrbfd_openwbfd_hash_table_init_nhtab_findhtab_createobjalloc_free_blockbfd_elf_record_link_assignmentbfd_set_start_addressbfd_initbfd_printable_namebfd_canonicalize_relocbfd_get_reloc_upper_bound_finibfd_make_section_anyway_bfd_elf_tls_setup_xexit_cleanuplibz.so.1libc.so.6strcpy__rawmemchr__printf_chkfnmatch_IO_putcfopenstrncmpoptindstrrchr__strdupdcgettextftellstrncpy__stack_chk_failstdinsbrkrewindstrtolisattyfeoffgetsstrlenglobstrstr__errno_locationfseek__fprintf_chkstdoutfputcgetrusagefputsmemcpyfclosestrtoulstrcatstrcasecmpgetenvoptargstderr_obstack_newchunkgetopt_longfilenofwritefreadstrchrobstack_freeqsort__sprintf_chk__xstatmemmove_obstack_beginbindtextdomainaccess_IO_getcopterrstrcmp__libc_start_mainferrorglobfreegetopt_long_only__environ_edata__bss_start_endlibiberty_concat_ptrGLIBC_2.4GLIBC_2.3.4GLIBC_2.2.5/lib64/ld-linux-x86-64.so.2ld.debugx?DELF>=@@@8@@@@@@@@@@ hh$ hh@@DDPtdHH4 4 Qtd @@ !<@<$4o`@`>  @ F@T No, @, z[o!@!@j!@!th#@h# ~2@2y3@3p =@=l(B(@B@P H4 ȗHȗIhhhhh(hH@h@h h .shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink.dynbss.gnu.liblist.gnu.conflict.gnu.prelink_undo 8@8T@T !t@t$4o@> X@Xo@P `@`xNo, @, z[o!@!@j!@!th#@h# ~2@2y3@3p =@=l(B(@B@P H4 ȗHȗIhhhhh(hH@h@h h hhh Fhhp    )