ELF4\4 (4444442 2 x((2 (2 HHH PtdPP! P! $$Qtd/lib/ld-linux.so.2GNU ?\/TuxSe| arcsz";v 3Loj:~qb _-PklwZ$.7(!*B&FJ,QMWVX<>K5d)'%[I4^6Rn0G`hp{g=DA8yH@#UtmC]}fE9Y21+NiO @ ")0TL()3" Uf2t |qX@K|pTŹ@D8ĉCEV&ݣkgUa{G} E) ; L[ '[4v{2@oDcP f,_6J2LK& ^  1(s <$] g  n[<?<23 y@ X Lher [ 6 7E *^E G v >u% Dw ;'IT > s Gdl ' 2 VU UHTb Fer9 &2'Te&T. $ 96oG  p*k Y` $L orsF cFRBj.y j72H9. J L  LI MW E!( [bG 4P L\)T]g}cS U+ k T!RW;0O]B(3Ib$1  @`=  J  9 7`< {  F 9 0> `:  d=  0> ! 9  F d D>  H>  0> ! 4> 9 = r @> libbfd-2.18.so__gmon_start___Jv_RegisterClasseshtab_find_slotbfd_elf_set_dt_needed_namebfd_getb64bfd_link_add_undefbfd_check_formatbfd_hash_newfuncxexitbfd_target_listxstrdupbfd_get_archbfd_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_listbfd_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_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_cleanuplibc.so.6_IO_stdin_usedstrcpy__rawmemchrfnmatchsprintf_IO_putcfopenstrncmpoptindstrrchr__strdupdcgettextftellstrncpy__stack_chk_failputcharstdinstrpbrksbrkrewindisattyfeoffgetsstrlenmemsetglobstrstrstrcspn__errno_locationfseekstdoutfputcgetrusagefputsmemcpyfclose__strtol_internalstrcatstrcasecmprealpathgetenvoptargstderr_obstack_newchunkgetopt_longfilenofwritefreadstrchrfprintfqsort__xstatmemmove_obstack_beginbindtextdomainaccess_IO_getcopterrstrcmp__libc_start_mainferrorglobfreegetopt_long_only__strtoul_internal__environ_edata__bss_start_endlibiberty_concat_ptrGLIBC_2.2.3GLIBC_2.4GLIBC_2.1GLIBC_2.3GLIBC_2.0qsi  ii  ii  ii  ii  3 3 `: 3 P 3 d= 3 9 `< `= = 0> 4> @> D> H>  3 $3 (3 ,3 03 43 83 <3 @3  D3  H3  L3  P3 T3  X3 \3 `3 d3 h3 l3 p3 t3 x3 |3 3 3 3 3 3 3 3 3  3 !3 "3 #3 $3 %3 &3 '3 (3 )3 *3 +3 ,3 -3 .3 /3 03 13 23 33 43 53 63 73 84 94 :4 ; 4 4 <4 =4 >4 ? 4 @$4 A(4 B,4 C04 D44 E84 F<4 G@4 HD4 IH4 JL4 KP4 LT4 MX4 N\4 O`4 Qd4 Rh4 Sl4 Tp4 Ut4 Vx4 W|4 X4 Y4 Z4 [4 \4 ]4 ^4 _4 `4 a4 b4 c4 d4 e4 f4 g4 h4 i4 j4 k4 l4 m4 n4 o4 p4 q4 r4 s4 t4 u4 v4 w4 x5 y5 z5 { 5 |5 }5 ~5 5  5 $5 (5 ,5 05 45 85 <5 @5 D5 H5 L5 P5 T5 X5 \5 `5 d5 h5 l5 p5 t5 x5 |5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 US[tn HdX[53 %3 % 3 h%$3 h%(3 h%,3 h%03 h %43 h(%83 h0%<3 h8p%@3 h@`%D3 hHP%H3 hP@%L3 hX0%P3 h` %T3 hh%X3 hp%\3 hx%`3 h%d3 h%h3 h%l3 h%p3 h%t3 h%x3 h%|3 hp%3 h`%3 hP%3 h@%3 h0%3 h %3 h%3 h%3 h%3 h%3 h%3 h%3 h%3 h %3 h(%3 h0%3 h8p%3 h@`%3 hHP%3 hP@%3 hX0%3 h` %3 hh%3 hp%3 hx%3 h%3 h%3 h%3 h%3 h%3 h%3 h%3 hp%4 h`%4 hP%4 h@% 4 h0%4 h %4 h%4 h%4 h% 4 h%$4 h%(4 h%,4 h%04 h %44 h(%84 h0%<4 h8p%@4 h@`%D4 hHP%H4 hP@%L4 hX0%P4 h` %T4 hh%X4 hp%\4 hx%`4 h%d4 h%h4 h%l4 h%p4 h%t4 h%x4 h%|4 hp%4 h`%4 hP%4 h@%4 h0%4 h %4 h%4 h%4 h%4 h%4 h%4 h%4 h%4 h %4 h(%4 h0%4 h8p%4 h@`%4 hHP%4 hP@%4 hX0%4 h` %4 hh%4 hp%4 hx%4 h%4 h%4 h%4 h%4 h%4 h%4 h%4 hp%5 h`%5 hP%5 h@% 5 h0%5 h %5 h%5 h%5 h% 5 h%$5 h%(5 h%,5 h%05 h %45 h(%85 h0%<5 h8p%@5 h@`%D5 hHP%H5 hP@%L5 hX0%P5 h` %T5 hh%X5 hp%\5 hx%`5 h%d5 h%h5 h%l5 h%p5 h%t5 h%x5 h%|5 hp%5 h`%5 hP%5 h@%5 h0%5 h %5 h%5 h%5 h%5 h%5 h%5 h%5 h%5 h %5 h(%5 h0%5 h8p%5 h@`1^PTRh h QVhU=L> t 5 ҡ5 uL> ÐU$2 tt $$2 ÐUuu]A uX> Bw*|> t$$ D$?]u]Ðt&t$$  ]u]ÍF D$D$ $:\$$u'UVSÃd= D$ D$$ D$ [9w#D$ D$d= $X9sݡd= $ D$[^]ÍUSÃ1_D$ $D$\$$)[]Ë_D$ $D$͐U]ˉutPD t$d= ى[d= $ D$"]u]ø) 멐t&UWVSD H1 D  D DžDžDžҍD9f;'k''v Dž'ۍD$4')ѽD$4$T$ɉȃT$$D$9t $#DD TD9&D ;?@f]tm= D  D =vDžw  "5D w#9?>fD+E؋DE܋DED D E=P$ E؋AE܋AEA EYu@& uBh% %A%ED )ËE)CE؋CE܍qBEBEB H=wf;#I} 1'u?@f]tÃ=w f#tV9?Jn =D ty 1؅~fk#ߡD 5D DžD BD BD B d= D$ D$>$)Jd= d= $ D$Dž D  D 9t?fJ 9uË9t$Č[^_]ád= |$D$_ $C[D  T D FU0D (n3 D  D jD  D Džud= D$D$$ D$ rDžAd= D$ D$>$fD d= %d= $ D$d= D$B L$$M D $O D$(  PD$ ȃD$d= $ 1ߋ`Sޡd= ^\$D$ $~ Vd= 3d= $ D$9ud= D$G D$>$ Mءd= Ed= $ D$)Ë)D d= D$D$$2 D$ g?= D D \  D 7f&D  D t  D D D AD AD A v 1id= D$D$$r D$ d= D$ D$>$D d= ?d= $ D$&މ6A$*o$yq$dq$Oq$Jq$h$xhE$GSPEv$#QPER!Ht&!E.t> D$ D$@ D$A$uE!t&F  D$C$ D$B$ D$A$| t> D$ D$3 D$C$-uEXt> D$ D$: $D$uE+t> D$ D$: D$B$tEt> D$ D$@ $D$tEt D$BD$B$k$.$> > |$  -> fD$D$P $\$$c1$ t$贅D$$eD$C$fEB$D$^fEAD$A$>fEyt> D$ D$$D$sEHt> D$ D$$D$rEt> D$ D$D$A$rEt> D$ D$D$C$rEt> E؋Bt> S ‹uCE؋CУt> ct> E؋Bt> HAE؋AУt> /t> D$ D$3 $D$qEzt&C$D$B$D$A$yaD$ D$D$C$kciD$ BD$BЉD$B$?c=D$A$血D D )t&KcC$eb+$kaA$zgD$D$$sD$D$$pND$D$$K)D$D$$&$D$B$D$A$yD$C$]D$B$D$A$cD$C$IGD$B$-+$8D$D$C$4D$D$B$$E_E EEEEE؋BEfAEEEGCEEE(BEEE AEEECEEEBEEEAEE؋AЉE$;SPEj$@EE$SPSPSP E$PQPQP EEED$Ep> D$E$ p> D$B$D$p> D$AD$ȃ0$[p> Lp> =$,$$`D rCD$CЉ$B$t&fAD$A$.b$&E؉U|E؉]dE؉MLE؉U4E؉]D$ D$$ ]EEEE+E-fE*t&E/t&Et&Et&~E&t&nE|t&^D$CD$C$Ma$3@$D$Ub\$D$A$cD$C$=D$`$gD$BD$BЉ$`$:D$AD$AЉ$U`$ {D$$0|> YD$ |> D$D$$8Z |> CS AQ AQD$ |> D$D$$YCSD$D$|> $!aD$D$|> $`$t$_$,J$5$ $ EGf$f$Q$<$-D$O`EAEyCD$CЉ$`EY$!D$_E9E)$~D$_E D$B$*D$`ED$A$/D$`ED$C$%D$y`ED$B$+D$R`EmD$A$-D$+`EFD$C$D$`ED$B$D$_ED$A$D$_ED$C$D$_ED$B$D$h_ED$A$D$A_E\D$C$<D$_E5D$B$>D$^ED$A$&D$^ED$C$^D$^ED$B$|D$~^ED$ AD$A$?D$]EkD$C$D$)^EDD$B$ D$^EA$3D$A\ECD$S$T${[ED$$&[EC$:D$[EB$9D$[ExA$;D$[EWC$<D${[E6B$uD$Z[EA$VD$[EC$D$[EBD$B$D$\EAD$A$!D$h\ECЉD$C$"D$@\E[B$#D$ZE:A$D$^ZD$C$+D$[EB$D$ZE$D$ZECD$C$=D$x[EBD$B$>D$P[EkAD$AЉ$WEKC$ED$oYE*B$GD$NYE EECEEBEEAEEEqEr~Est&nEt&^ N 9CD$CD$CЉD$CD$ x> D$CD$C$i : t& BD$ BD$BЉD$$& &K AD$A$aw ht& CD$CD$CЉD$ D$@D$P$ h & D$Ս $=D$U$nx> x> x> x> x> x> x> sAEbEVCЉEEBE4AE#EEEEEEE E$ v@PQE$}, uf BD$$RHt&9 B D$BD$BD$ AD$AЉD$A$9E؋x8@ 1ۉPD$$u׋ $PtdD$`TEkEEEEJE؋CE܋CEC ECE"EBE> <> -> A$0N> > F-> $D$REmD$B$REND$$ME2D$A$MED$D$$D$D$$D D E؉]BD D D E؉MvCD cD D E؉UDAD 1D$C$UK[ BD$BЉ$sP$kEqD$C$D$;UD$BD$B$UtAD$AЉD$A$TP&>$} J:13D$D$$ $n> ?D$D$ $F> 9ED$D$$> $D$jPEu  uU$QtdD$9PEDE8D$D$ $\$$=f D$D$ $hT$$ f$D$OEU]ÍUWVS ,D ?  > 9 ? ljU]? ]t 4jf nt}M ڍ9t z~4@ʃ ;}u]E ? ?  [^_]Í&'? > U] AQ? ? ,D > ? Í&UUt BBB,ɉBt ? ;t]]rfU5 ]ÍU> ]ÍU> ]ÍU$D ]ÍU,D ]ÍUE]5 ÍvUE]> ÍvUE]> ÍvU> ]ÍUE]> Ív5 > U]5 > Í5 > U]5 >  Í5 > U]5 >  Í5 > U]5 > Í5 > U]5 >  Í5 > U]5 > Í5 > U]5 > Í5 U]5 > Í&U]s&U]S&US]tJ> t ? ;t,Cu ][]C$][]̃[]fU> tI? t=$|? > u&t? t? Ðt&? ЍU> u+5$? > _> t ? uˉ$1> ? ? ? > > > > Í'U]&UD$d= D$$m$t&U]} > tY? B;? v ]}]ÍZ $D$y=? > <1? ]}]$> ? ? 닍t&U]]u}t\E=> t[? 4t)?  ? ? ҉JBt,? Ex? ]u}]Ð? Ր&UVuS> 1t? 9tEtG?  t!?  ? ? JB? 4? [^]f? 'UWVS }=>  > > 5  > ? c? 1t? @? B<$> 5 $0iÉp F$SC |$$.CD0CD0FCCCCCCC(C,] [^_]$c] Uuu }}]w1ۉ؋u]}]Ðt&|7u|7u$0tBFC {{CCCCC(C,$늸,ddfUWVS u }FE$tV~1ҍ&:9uD33E$D$ tC؃ [^_]øcXd랍t&'US]$$D$R[]ÍU]Éu։}贿Nj$Ei> 13C(t? 9tC C$t.4$J$~ES]u}]1t&UVSu $0It?s F$5CtUC-[^]Ít&dָd뵐&UVSu=>  ] wj> 5  > ? ? 1t? @? B4$5> D$@> 5 E[^]$dZ눐Uuu]> t'? tA]u]v? > D$@> $> 1t? fU(uơA ]ӅuG`: u]T$D$c$謽t$\$$dY]u]f$ F $dD$Y떍'U( > ]? u,D }Uxw? ;? r7  > X(u9? 1ۃ9Ã؋u]}]øe? ,D 뱋? )Ӻ]ۉ]];U]ux,up  > SV pF F D$F$FtK) > ^u? ? ֋p =1t? 4F? ~uFTe멋?  > ? z!‹tO> tF ~ UD$ \$D$$9أ? ?  > ? B? 1ۅu%E? > @,? M ? >  ? R J? D@,D F ? @e> $V넡> $3($eV?  > fUS?  ? uA> ? ? B9Aˣ? +,D t;t)tZ? P? @? []á> $nu2? d> $pR,D ? 듹멐U%*t tE 5 *uf*t/vt tu$cUÃ*tу u5 뙍vUWVS(D tg(D vD$FD$$ dUv$edt&[^_]øeovt&޸f׋> uZ> > u > > > > y? i=? ?  > }f njt ? = ?  ڍ9t z~4@ f  u nfu? = ? nM)ȉ ,D $D ? =? {$e5 ,D 8/x*? ]$D ,D CS? C? w,D d2> D$D$ $D D$,D $~+,D X? ? > B,uB? > B,? B;? 7jv=,D =? ,D E> 1҉> ?@? $0> |? F ? 5 -D -+D +,D $追D =D =,D D$D$$謼D D D q,D $D DB<6$ i,D 1Ҁ8$T$D$$D,D D щ£D $D  D DD >4,D , &D & |D |~D ~!D !?D ?*D *+D +-D -/D /l%D %X<D <D=D =0}D }{D {)D )(D (:D :;D ;-D -ED EnD n|,D d|5 XD XLYD Y8MD M$D SD S`D `aD a D  ND NOD OPD PQD QppD p\tD tHuD u4bD b WD W ^D ^ZD Z[D []D ]gD giD iTD TUD UlVD VXYD YDMD M0D SD S`D `aD abD bWD W^D ^ZD Z[D [|]D ]hgD gThD h@iD i,TD TUD UVD V,D $ϵD ,D $賵D ,D $蔵D ,D $xD },D $YD ^,D $:$D D D4hD h ,D $D k,D $D j,D > ,D >  ? ,D ,D  ?  ?  ? ,D m? = ?  ? hlD l?mD m+,D D  D GD GD !D !"D "#D #;D ;~<D <j:D :V=D =B>D >.\D \7D 7hD h8D 8&D &&D &+D +6D 69D 9z4D 4f5D 5RKD K>ID I*JD JRD R3D 3HD HLD L(D (*D *D FD Fv?D ?b'D 'N)D ):@D @&AD ABD BD D D D D CD CDD Dr2D 2^$D $J%D %6$D $".D ./D /0D 01D 12D 2qD qrD rsD sED EnED EZGD GFGD G2,D ,e? > D$@$> vg@> > :4> > > 8D$D$$赭D D D zƸ뿸   D  D HD  D +C$D ? h> ,D ? $=,D =? 6fnt ? = ? Eu09t/z~@Eȡ> $ f=tk,D f]@щ=? > ? =? x=? y,D U$ͬD ,D ]UWVSӃ,ED$D$$踫E؋EU܀8F wu-t'Ct$$uE؋U܉CS ,[^_]$nU܉ÉpE؉S UCCF E؉F T$$*\$<$D$K,[^_]D$D$L$s\$$@<UW1VS1ہ${$ El$ E]EE-DžT=M D D D t~tE0B9tŃuTM苃T D D  D uE0ETEED$T|$4$D$ED$ ED$-,}u ދ::Bs:Bc9MvU D`: u;Mr9utUM 8-uxluxt$臦$茩} ËD$$D$荡9uuDžXDž\DžLL;`= tU MT$ $+u܍E=`= D$EU MD> D$ ELT$ $D$?$+uwn$&E0:E0:L} D$D$*$\$$<fD$D$l$$<H> D$D$$oEU=`= }|$D$ E D$ $D$X\uduStG\\D$:$8t\9tD$ $Au4$[^_]땍ED$H> $D$:xE%=@-D $H> t$`Ƌtt$\$ ${u39:F -F $D$LtÃu`D7$菦D$áH> $D$F D$ D D$耞D $ӡD H> D  F  #E @ $F  F $F  #E =,E ,6 D=0E 0E =,E ,6 =0E a0E RH> ( lj,E 0E 5E ] E  "E D D %"E  "E E E E D H> D$ D$D$$mE _8E P !E D !E 8%!E , !E  ,6 0E 0E @> $'$ H> $l!H> D$=$蝝CFE;\ ~R ]+H> $ɣPCPD$H> $D$uPED}D$D$<$ËEր8$t$!D$D$P$辊H> pE H> lE ,6 ,E D D H> D$ D$D$$蕢 F $F u%#E i #E ]%#E Q #E ED 6H> $$D D (6 (6 D H> DD$D$$8F F H> D$ D$D$${ F mE ^E OE @E 1E "E =D D D p)=D t D =D D (=D t D =D D H> `> $8`> (D 蕥=D t D =D =D .H> D `> H> $D8`> (D /$^&$计$F&D E 06  E  E E E E E o E cH> NH> 9H> $ E  E l8E $m%D H> $b E 4E L;`= q E E E E E p E dH> D$$JE E 1H> D$D$$輱D  21۹t1 uHÉ$L$蘟H> D DH> D$$lD H> $5(D 謢oH> $]H> lj E 1H> ljщuCH> \t\$躘H> $=\8E $;#D H> $4(D С4E H> D$ D$D$$c!E ƒ Т!E DE E E !F  H> D$$5ED$H> D$ D$$؛$6 E8H> D$D$s$襗\$$M0H> D H> $ 2oXh DDžXMXo DžX+D %!E E H> F 8F D$D$$Ԗ\$$記D$D$$謖$脘Dž||h$ÀF|d1D$D$X$sǺtd{t$ #D$t$$$XD$˗D$t$$ӕ$ǃddC8 CtӃ{tͅ3D$D$7$N. E  TD ED 6D 'H> D H> E $ݑ_4$諗H> > $(D P@ P@ > E H>  ljrPމ\^ މFi މ0D$D$ļ$\$$, !E @D H> $hD D E H> sljsE E sH> D d=E  E %"E C5D H> $\4$RD$VD$áH> $D$F D$ D D$GD $蚒D D E d> D D H> D$ D$D$$VH> $DD$D$$,$*vJ&@> $ D$~㋽hD$$|$ё$蹕||D$D$$葑$i@> $ D$聖uD$D$$P$(8F D$D$$&\$$ƋtD$$ےCu4$詐$ 8F D$D$$軐\$$菒@> $$ 覎8F D$D$$t\$$H@> $$ _D$D$$3D$4$$||lxt$ D$D$X$谑4$ËlߋXtQD$\$$蒏$D$bD$\$$j$蒐|8xx&pl A8l0pt@t1ۃ7Åt t$ D$D$7$賐$ 1ˌH> D$D$$=H> D$D$$r\$$'n,E ۍt&BH> $脒D &D$D$L$|$$&D$D$P$$&oD$D$ $踍$d&hމE 3 މ,6 ,E 0E V,E D$D$$/$%c މE  F D$D$$ь$}%E D$D$$虌$E%F F oH> $趐D X$萐H> D @3D$D$k$$$fD$D$$\$$$Hމ7D$D$$诋\$$W$f>މuH,6 ,E 0E lD$D$$T$$H> Uމu,6 0E ,E D$D$\$\$$#UUtB]ÍE 1]Í&U$t$:t 1$t$]A:BuA:BuA1:BuD <*t :Dt뻍vUSÃB0uEL$T$$D$ S []ÍUE@] UWVS}t&0D @E9Et&SsLt*rt#ED$ T$D$A $ׅtE3pu][uE@UButP]쐋SsLt*rt#ML$ T$D$A $ׅtE3pu][uUE …1E[^_]étd]tɋ]SsLt*rt#ML$ T$D$A $ׅtE3p u CLu][ultwMɍt&V]썴&SsLt*rt#ML$ T$D$A $ׅtUB1Ɓt CNtu][uue]SsLt*rt#ML$ T$D$A $ׅtE3pu][uE]ۍvvSsLt*rt#ML$ T$D$A $ׅtE3pu][u%} 8MU E [^_]Ít&'UEUM @0u.BD@t]ÍBE E M U]፴&BE E M]dv'Utt&`< Bu]ÐU$t$Ep(X$E H(P$9ws$t$]Í&9r9θwvs$1t$]Ð9wv'U]Ít&'UVSHD utÉ$֋C(u[^]Ðt&UVS`@ utÉ$֋C$u[^]Ðt&t@ Ut E t]ËE]t@  6 Í&Uɉx19v  u0]Í& pA UtvAQ A AQIu0D t `T@uA Hpt'A,Q0A,A0A4Q8I u]Í'UEU@tJ@]Í&UMQDt;A t]ÍvfzxQ%ut׋A, A0tϋE]É'l@ UU ttE8D l@ ]á8D uE8D l@ t&UE]6 ÍvUEt. A  PtFuPu A ]ÍvUE]x@ ÍvUME QEA]Ív'(A UUM S]tEuD tt(A []Åtʉ(A tډ(A  U]5 ,A ÐUS E ]t‹u[]D$$,@0)E UD$<$UP U @80)@0PÍv'UE @D$E@$NɅÐ&Uu]Ӊ}Džtt1]u}]Ã{wC$S ʋCtD$4$͇뭋C 4$D$贇tɋ[뉋C tD$4$蘇u[ aS=uS/HS1t&'UE D$E$"ɅÍUWVSE@ }MA SuMQt=] E Hq@ E tM A8EXtCSt5:*tZK t tED$D$$$tu;}t<$;ut4$[^_]ÀzuԋE@ MA E@ KUED$uB$u(C <{Ct$$蜅tED$$`~UD$$>~aYU MED$$M`u$C < CU$T$tED$A}$ ut&C|$$賄C <ua U$ʂPD UPD P !E @fUVSPA uu tCt$$0u[^]$i4$oCPA PA [^]ÍUWVS } $$TD ۉƋEu +t&t C|$$觃u^ [^_]D$D$$}|$$2 [^_]Ð&US A ]t$D$D$e$=}$ A H1XX  A []Í&'UVSMEU ɍp(up$tBӃA<7w $D$D$H$|$gCu[^]Ã߃ v׃҉'UX}׋U u΋OEԋE]ŰWM܉EȋGU؋W 9r M؋]);_w;OvzMGW3E1 tvUԋ7BD$D$h$E{MU؉t$\$L$ M܉T$$L$jGW GW]u}]ÐM Mu}v9E_&9MԋAD$D$$EEE{UM\$ T$L$$pv'UWVS,Eۉt#1B zu F uuEX,[^_]Í D$ D$'D$4$t~Uu:FEEtw_7ۉuD$|$UB$tmG փEfF :Et[tCW$T$&t֋>}uuUuB,[^_]ËE}8ӋU8}:lj<$y뽍'UWVS,EU MEUME8uD5TD D$D$$y$3UU,[^_]-yTD tWC8u 붋tGCM$L$1uD$D$$!yUT$$uE EMy TD ҉UUB _|$${u^tXCwD$4$~uBW C 8uD$D$@$`xt$$ufEEeTD ?JMq҉U&UBJVJt$${u cvtZC~D$<$}uDV C 8uD$D$@$w|$$:ut&EE`TD 6>EMA,EA8CA A AкTD t‹uE,[^_]ËOMY$CwD$4$|uW C 8u΋EEx~-MYC~D$<$y|uV C 8tuҋEEQD$D$@$Uԋ3B/uU؋BtʋED$UT$E먍&UىT$ED$UЉ$U 뎋ED$UT$EiUT$ ED$U <$T$[<[^_]ÍvUWVS<}MG$W(EԋG,U؋UԉE܋E $]ۉEU BXpu0t&EUD$E؉T$U ى$@[ tl9]t7U؋3BuU܋BtЋEUD$E܉T$뮋EUD$EԉT$뛋UE<$T$ U D$T$m<[^_]Ðt&UWVS,EUM@$z(E‹E ;ƋEu}U BXpu Cv[ t99t=G[tUىT$E<$D$U EI[ uf,[^_]ËEىD$UT$E$U E땋ED$ UT$E D$U$,[^_]Í'U8}}Muu ]_$\Uu-tU$T$UT$]u}]ËEUt$<$D$ T$׍UF D$F $Pi@ vu1t@ tD$J $7Ðt&USD$HE D$D$ D$$at,K uCHE C \$$b[]D$D$$d$뮐&UWVS}EBMtD$$a`uME}[^_]zD$t<$MEX\$F$duӃ[^_]Ít&'USÃuUu@u+ ut $[]$$f$] f$f뛍&'UWVS|}eE1U  t Me3 |[^_]ÍvO_M E ]Gɋ]t;r@1һM @ Eu1 F,V0 t1ۉ]Muu]!ƋEq,!;YHA00uG wMA,Q0GWE]uX,p0@5F B@ D$GD$A $cMD$$X*$b$Ta~$}wsM]D$$L$]\$$X$jb&uU$.D$%YH]UED$\$ ]1҉D$$1]z;15D$D$$`$ D$D$$`$@ G$XD$G${a/cvUuu]F v]u]Í&E ;Fu1ۍuNAO51ۍxuG_w tXp G-$T$F"f(uGW EGUt PH UMOD$L$ EU$ND$T$G0t'XD$D$F $Mu @ 1ҋGEUMU A A $F D$ D$$D$ 3MGU F D$ D$$D$ M@D$D$F $M@$D$(A tD$$$l/1ۃuG$W(O,U؉Mt PH UM܋G 1$MËG @ \$ t$D$E؋U$0D$T$FGD$$B+G$ @  t1]u܋U؋M܉A  A D$y$XD |`D |$U̡XD |EEGWL$D$T$EЋUԉ\$t$D$ T$$ WG xtYG $.) @ UԋE t1։A 5A EEgEEOEE7EE$cD$Z1E\RD$D${$$_@$/$ $c $$LZ ED$D$ D$G@ D$HE $tDtY TF P@tAQ D$T$$vzG0$__gE1ۍvk$}?v'UVStv؉gu[^]Í'UWVS F } ]Ed= F x9t%1y 9tu%ED$D$MA$AU$uMIAËE$ ? "EXD$D$$A\$$EUB$BMAA$5 M=@ 55 5D E܋(6 Q0A (D @ D (6 E IEA =@ 5D (6 5 U$/T$MIMLEXD$D$$?\$$?tA uv[$@M؉NjA$<3:u$4:Bu5:Bu 6:Bt2|$t$$TDu>t<.u|>au|>vUE؋RǀU؋E1E@1Qt$M؉ $@D$$};tEDE D$t$$ E pFD$ E 4$`tFURU뎋EXD$D$$>t$\$$6ED$D$$]>t$$UERUMIMMUA1҃ ЈA1EUZD$D$$=\$$MYD$D$$=\$$XUtӉD$$=Cu$+'EfD$D$ $/ UWVSeE1`@ 1F@D@ usF0umXpudF[ ېtUCDt;A tC`uڅuD$fD$7$5pA }D$D$F $*>V FD$<$D$ 1҉D$7|$$! t€u҃) uFV$qD$T$F$F(t$vF(nYv#D$D$$:D$F $==#E @t=,A uF0t/}WDtGPHMQA ]uJD$ E CT$t$D$ $$@MQBpeD$D$4$B6D$$E@E\$AD$A $ 9]CA [@D$D$X$E5}\$|$$s&'USÃ{w"C$h 9w  u-[]Ë[ ͋C [C C[뫋C $tċPu1[1]&'Uuu ]$%NpɉtD$#$x^p[]u]Ð&U(}}]uG v]u}]ÐWBpXƅ@ E+@ ~d@  @ 9ȣ@ to@ ]@ !¡@ @ ))9@ 9@ FAFeE@ D$$@ 3@ ]z A 눉FVD$T$$Gpp3&UWVS1ۃ }u tWpA u U[tNU$T$c9ut+D$D$$O3}|$$ [^_]Å$0F}<$e7CCC CC 6 CCC CC$C(C, 6  [^_]Ëu  gD$D$$y2UT$$7'U(]]EE u։}}ME$D$}ÄۉEtt`D$M $XUtEu ]u}]D$D$$1]u}E]ku uUE뚍'U1ɉWVS}EUL$MD$ $MA XA $+D$A D$萵D$Ս $=D$訲5A C41v4$0ۉtmUVB(EB EB$tuEt B8E t$4VR8ljP4$C0ut<$ױA A A [^_]ÐEBPB0yV_EB8rt&EB(>t&U1ɉS|A {,S$C L$1Ƀ{0L$M $M uE|A 5 ,A B(EB8[]ÍvUWVSdE |E؋EE܋ddx@$GHdBt 0`dYD$D$$/\$$dd[FtXtCS OG$GdW(W S0HC,Q0A,t&dt8ddփx0D$u$duȋE؋U܁ļ[^_]ËdUG|HE+AQ GW 끋d]udB}\$|t$ ]؃u܉<$\$t$RE؉U7UE؋d]T$U܉D$uXD \$ T$|4$ E؉UdA,tfE؀aTD$D$9 A,$֩=XF =@F t1d^D$D$8$F-\$$dtgA @@U؋M܁t9 UЉMH dY,E dEЋUԋNDEUj11 EU t1։NjUE!!މ}Љu11 E u dG,tS=@F tJdXD$D$D$(,U+U\$T$$dRtt]ЋuԀOd_$w(_Bw @<@@du}dCt$uԋ]Љ|$ t$d\$V($~NT9 tFTztd5@ KB<1ҋ[ UhM؋tEl]܋Q0A,u t1ҋ]uhlhltك!M!+FV  t1F,V0ds n dG0D$D$$kOtA$Q(dHTt9 @TtB%=t@BtCB, B0dG$u* E u!t~ B%=u  E t&t @ S0C, t1EU܋dV4tE؉D$D$9 $d_ wF%=E؋U܉CESR dp$;p X @ S0C, t1C$S(FEVdC$1ɋS($dT$般Cvu܍E]؋|u䋵d]^D$GF $D$F F C|AT; UMӉΉPHdyP}G$W(EEUU)EUdRDht~h11 M\UXX\hX\ t1hl#X#\EUtUMS$K(dF Gdtexk E ^MSh 7 9pA +3 u S=@F D tD$D$$!\$$ɶddRI thU]B,R0K$[(EMU]ыBˋR I(3C$1 tD$D$$\$$.dd@ tht&'U,A ut&s ED$4$At&t̀}}bv:EM19t2u&<2*|E^E؅i}_uЋ6ueEE==L=t&uF <uċ^EEEE} y=vC9Ut9Ut9uuEċXtzUÉUU}td =wCt:9Utvt 9Ut9utM̋uĉ\$M̋ul[^_]À=;E}9M99U99fukEÉ4$D$ }uee}9VM9J199v2uz4$nk=M9ȉM}9M91#t&9E9f 92u`:AUth҈Uu}9ta9uX9tQ9Ӎt&tIu(D$4$aD$ $ wȍv=X9t9t]9u9t9ft9tu 5 8E@@ 2E@ CA=cCtR9UU9;Mu$9Ur9fh9`u؋M̋uĉ\$MI=C9UU9;Muu9m9ѐt&`f9UuEEÉD$C$X EÉD$C$@ D$ $k(=tJ=MA AD$C$2D$C$7UB CEЉu@EU}RUUuH9=19tM uM 19u 9tE uu<9؃9vЋu9}EE:UU~MA DM $ u4$  0U}`9U9M1 9t9tM uU919u"&99vE ut&=}ÉUU99;Ef19t9t9EftM uUtJ9tC9t?1;Eu#t&29@97;E.E uM1111f뎋uD$4$D$ËE$Mv'U  5  U 6 PÍv'U U}E ]urX8t4E t't"u#E HDt,t&]u}]Ív tًM YDuAD9 ؋UށBPMQEPZ؃B E u@ fM NU MPABD E ut:EHYډ%9YEH qtU E @uaU BtIU BH;AHvAHM $ &E @@UBH@B<UM Bǁ҉tytTU ; މq#vށUށHU ED މqUM BPUWVS,E$,|UR vUru|&6k~fuE@ UBk]@EEFNXE\$U$ ulE Et8E܅v/E؅\$E$L Gu1t&E 5U B 'NU茧]$zED$U$T$#EtD8tD$$rU]B9t9uE0E,[^_]ËE tE @ uED$UT$E$,[^_]ËEE@E_E_UE؋RUD$$豝RU]ӉuΉ}RDžtt$D$G$St $~]u}]Ðt&UWVSMM 5 4K0Ep@ C,K0?:#K1K0{D$|$$TS0s1C S0C E CCC( ˆS0(6 C$ ˆS0D  ‰S0D  ЃC1C(D$\$$HD ~[^_]Ðt&$4@v!D$$כS0s1 $vGE@ E ʃCC1ƈC1ES0C C1ʃ{ƈC1{ S0C1{ʉƃC1{ S0}C1{C1ʃ{ƈC1{ S0YvUVSHD t Ë@ tt$$4t"C(u E $tC1<t [^]É$D$莾!܍vUWVS,U~w|F$F1tl$A F,}؅t&F1<uD$F$tf1]$dv\$4$]!E t UE6t,[^_]ËFUK6W^tFU6#뭋F6$A 뙍&HE X$FHE ;X$u6dfUءXD 6F tS҈UulW99v9t"9tuD$$FU$=uKҐ9‰EtD9t=M9t59Ut9t9tuD$$낉{fUWVSpUMS i҈U=tX9‰EF9;M9/"t&9U9f9zu؉qtU$M‰軙[^_]t99 9t 9tuD$4$t`@ u 랋C$tD$Ë@4$D$u܋Eډ$M#ȡ`@ YfEډ$MC$u[^_]D$4$qjfUVSËuat];F u#Svu Cft:9F t2Ct.v؃ t&t҃u١XD u͍&[^]É%묍USÃuCu Ct&t,Ct*fvރ t݃uޡXD uԃ[]1ɺ%J븐&UVSu+t+t<ftC uCFTu[^]fXD FTu[^]ÉAFTu΍t&UWVSÃUMtW{wKC$8CH-qw,KTڋCHCT{HrCHu[^_]ËMtEPC/zύvCt@uC$Ƌ@C F,?딋C$t x bMA aCESUBtƉaEEu!C sMUAL%BɃtB HSU}Mq1ɋE1$CMU1E뢋5D |A $}<$D$D$T$3\$ |$t$$Ӌ+$@$A UC0B8D$D$$\$t$ M|$L$$q3D$D$$ML$$AP8u@uX8]veG1ۅt"D$ D$D$$mËG11Ʌt$D$ D$D$$mщ‹ED$(ED$$GD$ G T$L$D$1\$ D$1D$GD$A $g?U$T 0D ɉM}HGG8tut ɉttBu݋J*ljMutËEXD$D$,$U\$T$$蛉댃~PoFd@Z]3}} E %=1=D $D$vD =tE tE tR1ۍuxE ExE ͟jD$4$EuуtE 9u螟jD$$ u E uA xpb-u E u D rl@  E  l@ D$D$ D$D$HE $t@ ED$l@ D$$щ‹E85 D$A $0Evt$}M܋E 5 HUr UB 9t8;Jt3qY ^ sBQ AJ_H A MA EtkQMEU܋B;EEHM؋@IBBtPBM؋UBE<[^_]Í$D$gEBEtE5 +u F $SáA @@U T$D$Q$AD$Ս $gD$$D$ f$XE 4D <[^_]ÉǃAY UA X <CA BtABtH JttE;0D t"‹@9tU B A UpB ]0D tN91zw>B$xBx@ 8.u~xuxvuqىӋuMUEEBU܋B;EJMA HpA ptsA Xp[t11AJpBtA ZpRzHtBtRufU$TA ÍUD$ D$ D$D$$@ Z5 ,A D$ =D$dD$@R$TA |5 $;X$HD /X$0D #X$`@ XD$D$$ A $[j t5E `> D$D$ $ $L$ L `> 8$ á`> $m $L`> D$ D$$D$ uϡ`> $-$E$ MLhp@  E *h7F t, :}D$${F m E @A `DbF ttD tF k$_PD tXE u=d> ,A $+f E uD ( E t 6 $(8F D$ D$ $ t4$ 8F D$/$)؉Í@$\$ơ8F 4$D$ŮOu/../Clib74$[GD$D$Z $z$&ID D$D$ $D$H E D$D$ $ut$$I=4E e8E 4E N8E ?A HD :Bs@> F  E D  #E  $E  E q D $\HD 7[$T$RbA D$D$- $ \$$Gg$E=8F D$D$ $+]迮C|$D$d= )i@BT$ $)ˉ\$8F D$D$ $em0> U\$D$d= T$ $Ұ E  E  E E D  D$D$, $$FEEN ,D t$$I(D `> _E$Z3}$I(D 訶> #$ F 6 $v~4\D$K $kD$P $S$?EF$1E 6 D$E$蚮U$E.exe@ 6 D$$MD$ $(SMt$ D$D$ $跱M|$ \$D$ $貮9tD$D$U $"UT$$D닡0E ,E `> E 0E QD$D$$轫$iDE$i1$qED$D$ $|$HEm@> 4$ <$tlE$U$$F D$D$ $\$$C> $aD$D$r $Ȫut$$mCdD$D$$蘪D$ $+F Fۋp u Ðt&tCt$$wuCS CPF HF LF TF t@F ?N A9p@1ҋHH1 ]u}]=8F=V=# @F t=hF 9 R XF 65@F 3XF =G=u>^  E $lHXF HF LF PF TF XF D$F $aP @ @F _11҃A PD$ E $L@F XF _HF LF LF HF LF $T$\F `F ]u}]= =&=t& =t&EU3HF 3LF LF  HF J=9  @F ,F $:u@T@11҉$1D$F $`vP@B@F |F $9HF LF M11 MtLF  HF HF LF nD$D$ D$F D$HE $p^ D$D$$\$$+P@F F 8.u xD$D$D$ D$D$ E A $Ɣ P Bh=@F =DF |YA AcHE ;H$UL$$跐DLF  HF LF HF DF FXF DF =@F D$D$$蠑$L*^ D$D$P$t\$$*+t - TF >+EUHF LF JF $6D$D$D$ ËF D$ E D$A $@ ;@  HF LF TF 9 XF =@F A11HF LF $T$\F `F HF LF h^<>OM1Ҹ; LF wr M; HF w11ңHF LF ="={=!@F F t=hF 9 XF & HF EU t1HF LF LF HF  =@F bD$D$$$$'9E $u110dF {hF  `F \F Xp HF 5LF UЉM9wLr9sF=9 t?D$D$D$脎\$ t$UЋMԉT$L$$'dF \F 5`F ph^ D$D$P$'\$$&8@X,p0A $D$ $t$D$\tD$D$$Ǎ\$$o&+-HF )U LF MEUHF LF ^ D$D$$]\$$&nD$T$ EU$T$HF LF D|= 8M1Ҹ MuLF  HF 1HF LF ==*=>U;LF rM; HF EUHF LF t&== HF UE t1ңHF LF nME1 HF 1LF W@F F t+lF fXF  M1Ҹ; LF wr M; HF s11ңHF LF ]ULF HF E%HF <HF =LF =@F ^ D$D$$V\$$#g^ D$D$$&\$$#A=9 XDP@@<AQ1ɉ$\F `F  lF Bv=@F ^ D$D$$p\$$#D$D$$C$"XEU!HF !LF AuEUHF LF F F =lF eEUHF LF =lF lF @P(@$FLF HF  =@F D$D$$w$#"M1Ҹ; LF rw M; HF v11ңHF LF Y=@F L^ D$D$$ \$$!D$D$$ވ$!D$T$ UM$L$HF LF E;LF wU;HF EUHF LF t&UM HF  LF wHF LF $T$EU|HF LF JEUHF LF 3M1Ҹ; LF rw M; HF r11ңHF LF EU3HF 3LF LF  HF HF LF lF F F F  F =F 5F ЃUȉʃ!!M̉ eEȋŰMȋ]ك!!ڣF F +HF LF HF LF .AQlF ttt CHF  LF EU؋UM܉$T$\F `F EUHF LF M]\F `F !!ډÉ]u=@F HF 5LF wMUlF L$$\F `F rMpF 5tF F  F F |F UܣxF E؉F U࣐F F pF tF HF LF M9Mw E9EE\F U`F M]+M]!!EUHF LF U]\F `F dF hF 9  U]]uutMXF uOt9=@F t0C5 D$D$$ńt$$mE ]u]áTF P @HF LF HF LF ]u] UE]] uu}}tCXF uFt1=@F t(D$D$$|$$؉]u}]ËHF 5LF  UED$ E D$‹ET$$HÍUS]EKdF [\F U ] `F hF / U(E]] uu}tZXF t[PF t$au{$ _ HF PʉPPH؋u]}]Åt=@F tD$D$$辂t$$f뺍XC$PF ljE1f QЃ vQɃu1uЋ]^&UWVS1ۃ /t ;4݀uus.vT~f2F 4$D$ItF $ D$0 [^_]áF t$D$,$_ġF D$݄$}몡F $ D$ބs'US]F t=p{ wC$Ht&D$$[]Íd= F 뷡F $(D$[C $C$mF $)D$$[]ËC tD$$AECSD$T$ C $ED$"QF D$D$$[D$ C $CD$dD$F $݂F D$C $T|[=1C D$F D$j$x1C F D$D$$aD$ C C $ F $?D$‚C$F $:D$袂[C S$+D$T$C D$MD$F $证F D$C $&{E6[]tt&US]$DSPU !@X P[]Ð&US] $DSPU=@XP UP[]fUS]$zDUS@XPU P []É'U$]] uu2D5 PUc@ XP p]u]ÍU$]]uu C5 PUX pP@]u]ÍU$]]uu C5 PX p@@]u]Ðt&U(EEE5 EE EEXF tLF HF T$$fɉ‰$C‹EEBEBEB Í&U(U EEEBUEE9 XF tLF HF T$$ɉ‰f$B‹EEBEBEB Í&U(UEEEBUEE EEEEXF t$LF HF T$$]ɉ‰Í&$A‹EEBEBEB EBEBÍt&'U(U EEEBUEEEEXF tLF HF T$$ɉ‰$aA‹EEBEBEB EBÐA U]HfA U]HfA U]H fA U]vA U]HfA U]HfA U]H fA U]HfA U]H0fA UH@t]]ÍA UH4t]]ÍA U]H$fU$t$A H8t $t$]$1t$]Í&'A UH $wucu[]fD$D$$u$v|6 t1ۋ@($D$v6 u߃[]D$D$$t$vD$D$$t$}vPUF $ D$wÍvUF $ D$wÍvUWVS4eE10Dž@t'<%tf4$T$ y<%tGu݋]t=E !E @+Me3 [^_]Ít&F% 4D$D$ $nVC4D$D$$md0C$<$8oXCX$T$TTXy A1DžXƅc>4T$@$f0X00D$rD$5 D$D$$.j4\$$D$lA t"A t A ɉlt9D$D$G$i<\$L$ D$4$ A A t$RiEA t $mA A t$#iE$m}Dž\A 4D$D$ $kXNjTc\$$h-8F 4D$D$ $Vk0KC 8L$$nf84D$jD$$k0PD$4D$b$mD$D$)$/h\$$LD$D$)$h\$$}t|$$m UM M$ÐUuu]] 4$ft"@ F BF B6 ]u]ÅtF ]u]D$D$d$e]u uE]*v'UVS]$i$i6 ‰0@t&`< uꡐ6 B6 [^]Ít&U]Éu}eE1D$$fE ҉tSD$D$$d\$$cUe3]u}]Ít&uـ?tԉ\$|$ D$$`D$$eơE tkD$D$fD$D$$c\$$xf U7WVS }eE1tD|$4$Ee3=F 5 5`>  [^_]Í&F tP8|$D$ CD$D$$_7hu$_D$D$$b|$$)e&U]Ӊu E tl$еt^$ct.D 9|28/tN1ۉ4$.b؋u]]Í;D uʉt$E $t1ۋu؋]]щ'Uuu }}]u E u@$-fp6 6 ?=t$<$f1҉CC ]u}]ÍGD$D D$$C Cː&U(uu }}]F,<$D$_E ҉Ft0uD$D$$'a|$$VF0$< t A $^E> \D t$z]gD tVtH]$D$cMEAf苠=t$E$#]]u믋]uf뤡D EQ,tE$\E$\*=ÍvuԡD EUWVS,U B0B8/tCM $L$9tjU B8/1ҋM A0 ЈA0,[^_]ÉD$D D$$ܭM L$É$$\U B8/S5F ujDUT$ML$@D$8MD$ L$FD$$D$MXE $D$b$[6M A0 t  E U$\M ËA$\ËE$\<F$\8$\M $\D$_ËE @0U 8BL$ D$FD$$D$rW L$t$E$CV E,1[^_]V E X*U BE X UWVSuNt [^_]Ðt&F0tZA u"t$$u-[D$ D$ t$$0tf0[^_]Ét$F$u^ v\$4$_t{D$D$D$Y\$t$$k9F0t?=D t5^ ;/tDD$D$ $~Y\$$&^ D$D$D$D$h$:Y|$\$$UA uD$D$@W$A ^$RÐt&UE @ E E@ E]^UX}}]uE̋UȉMątK^tDE̋Uȉ]D$TEEĉUU <$EEUD$~V]u}]Ðt&G<$x9$r\EËG\$<$Ex?teEUЉFV qD$D$<$W|$$D$D$$W|$$c뗋E̋UD$T<$EEĉUU EEUEED$UU$-W UWVS,E@EEP҉UM ɉMEEMQpyA@Dto8EuAE5PD tQ^u Bft:C|$$\uUJ1҉t$E$Eu͍&6uUER҉UTU܅td,[^_]ËMA $$qZMEAU $T$x.M܅E܋UX PMM,[^_]UD$D$$UML$$mD$D$<$UUT$$@Nt&'UWVS\U EMUȉE̋BDM؋E܋A@DED$E܉$/[+U؋BXuCD$M܉ $ZuE؋U؋MȋREUL$Ẻ$Y\$fYM؉EċA D$ EĉD$UȉT$M̉ $AULMč9ى]sl1tfύtJtDEteC== t @uCt'Eft\CM$L$(ZuNv9}v7uMĉM\[^_]S\[^_]CtϋU؋C;Bu뛋CtVF[UԉED$D$`$SU\$T$M܉L$UЋMԉT$ L$MȉL$Ủ$T$4OD$D$$$_SỦT$$zD$D$$$/SỦT$$ UWVSD$D$ D$UBD$HE $$P@ v [^_]ËF@DtPD ҉EUt׋ExtIGU$T$jXu-EXt#UNFT$S$u݋?uEEu[^_]ËEXD$D$$R\$$[^_]ÍvUWVS<}D$D$$Q<$D$HTD$D$8$Q|$É$M$R1|$$ |V2uD$D$?$KQ<$D$S A u0D$D$E$Q<$D$S<[^_]áB $5UD$[$A ÉEED$eVE);B tD$$QEB D$ pQD$$D$MB 9ÉEp]؋E؋D$D$ D$E@D$HE $MJx UB D$><$D$RUB $yZ4@1!34}yZE3E(E3E1(((U4‰1!1؋(yZ‰8UE$1Ћ$E3E1$8$$‰1!1ȍyZ‹EĉU]E1ЉEE3E1EM]81#8]1yZ]‹EȉE1؉E(3E1EME]EƉ1#1yZ]Ƌ|E1Ë$3E䉝|1ÉNj||]11n]ȉUNjE\1ڋ]3E艕\3]1‰\\Uȍ3\1n E3E싕1É‹]11n‹E؉U1Ћ|3E1‰11ȍn‹E܉UM|$ ؉UL$$j-UEB@BwM}+uQfE뽋E@UD$@D$$EM\$`D$ $-MMT$D$ $EMP?P ET$D$E$,mv'UWVS,E }EG7EEEEuw9uwvGW ‰Љ% E с ˉ\ Љ% ƋE ց L E_ E+E$D$D$+|$E$D$E}E ,[^_]t&EEE@US\$E \$D$E$RE$D$Ĵ[]Ív'UWVS E ueU1҉$1ۍ)؉D$t$ D$$*/Átat|4$t+tąfu3$T$1҉ЋUe3uY [^_]ÍD$\$<$e뵍T$D$<$)L4$(/{$,U(E]u} E t"5E ]ȋu}]ËE CtE t&Uuu]}F0@ut ~GD@u0t F@D@u]1u}]Ít&\$$$fD$D$@ $0'|$$ؿ릍US]D$D$t $&$D$z)D$D$ $&$D$R)D$D$؄ $&$D$*)D$D$ $~&$D$)D$D$8 $V&$D$(D$D$h $.&$D$(D$D$ $&$D$(D$D$ $%$D$b(D$D$ $%$D$:(D$D$\ $%$D$(D$D$ $f%$D$'D$D$ $>%$D$'D$D$ $%$D$'D$D$P $$$D$r'D$D$| $$$D$J'D$D$ $$$D$"'D$D$ $v$$D$&D$D$( $N$$D$&D$D$\ $&$$D$&D$D$ $#$D$&D$D$ $#$D$Z&D$D$ $#$D$2&D$D$8 $#$D$ &D$D$h $^#$D$%D$D$ $6#$D$%D$D$ $#$D$%D$D$ $"$D$j%D$D$\ $"$D$B%[]U}E}uu ]]EGD$$:(fz:@D$U$(U؋uE]E @ }E]=#UWVSLUE@xEt @EԋM Mȡ E %=*E YE@B uG 7 =7 s1Ƌt$A‰Ft @LuFBL7 r@B  E % = MM1EIMuzEȉD$A $bt'D$7 A Uȉ$T$B&E5D$D$Mĉ\$L$ EȉD$U$8L[^_]Ð˃}Ѕuȸ׍ u|EĘ7 MċYGUċ?$MĉAUċZЃD$D$M $L0D &}tEEh7 wEEİ7 cEEP7 RuЅ}} EE87 "E 7 t&E@EЅ}=} E EM $YEEȉ$PtBur\$MC$L$AL[^_]Ëuȿɍ  (7 D$U$T$$ zML$ T$D$A $oCU@3BKuȿ UȾ zat uEȱ U 0D xaMELEEEEECUEt&Ct@t ]t]C]Ã{HtҋC EuuMUAM̃uXG$D$G$!U(]u}D$ E A $E A Bxt>Eu$D$D$ $$ó]u}]f E u DD ɋ(,D$ E $#A (,E11 W}9s3mJ;D$$g袟 &w9rE(,$ ڲf@TB'UWVSLHE x(^$|D ^:!¡TD D$ E T$D$ED$D D$D D$ D D$A $-D t]tCt$C0C,`@ u6vG$(@0uD$6 @$VEtӋX,p0؃]؉$IU܉\$t$D$ D$T$EԉD$G$EԋUD$D$D$GD$$ E D$ EԉD$DE PUԉ$6E܋pDt0‹^8R0@,N49ӉEȉUr+M]̉N4^8E܁H@@,@0G$8A D$ E $u $܊ 裰L[^_]D$$ gMG$ D$o9rfY$܊ OA D$ E $$* `t&USÃ{wC$ &[]ËC [ֹS Ս :u ֍ :Bt܋CL$ T$D$ E D$A $uC $D D$胯1륋[ nC f[CS[Tt&'UExt]f@]'&UWVS $F 1ɉ 8u졀D Y$f؍\31$eED D$E$E$3U7t:F t"7uE [^_]Ít&D Z$D$s$먍v'UWVS|$UED$EU1$EEuC$tS9uT}E| tG]Eۉ\$$U]Et]M+E4$)ÉL$\$Ru9utyUD$ $tMD$# $t]t&< Et< t< t< t< t&tބ]u6M $(}<$%E$ |[^_]úC މ׉uC< ,< $}=} } } } } ft<=t< t< t< ft< t< u119]t${/؋Ut Lx/u 9fu+EƋMtnEP@9UB F MA}UGT$t$$NWWM11uA$N}G맃]M MU LT D} }5EU Ut tuM}9]w}Љ<$Zut E$x}+UUM MEEE2AD$$'})Љ&U8]u։}E܋@EࡴA U@$D$I1t1D$$ tCD@t A S;Pt$r1]u}]Í&uqED$$EtSB B $蓊B uMɉMt E؋EtEؿK puD$`B $C$T =E u?B $ B te\$$t 袨8D$D$q $Ut$T$$莩됉\$$S \dt$$M܋t$vuT$$ CD$ E $`H\$$Vv'UWVS,RMԉU܀:/t?u ,1[^_]ËEE܉E$Epv]؋U)$ ;}؉t\$|$4$/U܉$T$ZUԍEu@uJ4$@E؀8pǃF <$D$< Eu<$yEb,[^_]É,[^_]ÍUWVSlHE x(Etl[^_]Ë(E ҉U :XE u  E ED$+@ D$ $@HA $(E Mǃ0N0pBUV, E + E %="E   A D$ E $ ENjGt$ y;}t7]Ct $ uCW$T$C9u͉=LB B $聆B t@$Y GEGEGEE B t@EEEMUD MUD D $ˎ  MUucA D$ E $ uv4$T tyC ƋC;GuMUCtω4$# &?fl[^_] :Bc :BS :B[>HB wDB tMUEuuG$ F ۉEumtgCfuC$ UD$ƋGD$ CD$ 4$D$UEu&4$" uE}7GD$G$x D$_wD$D$ $ \$t$$ѣD $* t 8!ËMUZu E$E8uuVMEEa: Aa: EU9uʋE Eo$ XE uD$ $tރx0wx,vҁxD9 tɋC@$D$ $D$ M@Hs$ 6(E $5(E )D EEED$D$ێ $Y‰ÍEt6$E̅tËẺ$DB HB $D D$D$ߎ $=YɍE!뗀-t:&m$, FrUB uu]}t@$VttNtmFtfB t $2uPLB ^x$|$ t/F0uAF$rtLB @$D$ u5B ]u}]Ðt&D$/$t|$$ t떍&Uu5B ]]}t]u}]Ít&Ct$]u܍ED$C$U dB E3`B 1 LB pD$/4$uD$ 4$pC$RLB XEG4$)؉D$\$ 3Ut$ B\$$Č D$VE;lB [SB C$U D$C$xit&UWVS =B ]u Ct@D@u [^_]É$ytuB uދt؋s<$t$ tD$/4$uD$ 4$jt)D$t$<$ uB uC@$v'U`: t ɍBÐx tɍBɍBD$ D$$  t&'UWVSEeU1ҋP{GD=9 @@vA<p,x0L$$D$RTVD$|$4$RTWD$$D$RT@ GNU :u  :Cu :Ct& t -D$$ x04$|$D$4$;}jf1ҋue35tČ[^_]Ð$Ҹd\$D$@}$Pt$L$Hr,z0D$ B<A0R@Q4D$T$$1҅Tt$|$ $T$ 11 {Dža: tGGa: -:{D$ D$$ ߙ :CP$:d\$D$<$P[$L$Ft&?9t&ȃ Ë뤐FttB@txD$D$ $$諘F,$"WFtD$ D$$ 藘&UD$ $ 薙E E U8E]u}=tY~5=|x=v=t&1H=t&~N "E f E ,E 0E ]u}]Ð "E fzuH>   R E  f%"E fH> $뎡(E t$'(E H> PH> A#E H> ψEÉ֢#E  U܉u#E U :u> :Bu2 :Bu&! :Bu #E &uܸ uSM0E#E $(E p  uX E KD$D$D $U܉T$$辕H>  %  u E .  u E ;  u E D  u E @|M u E W :u< :Cu0 :Cu$ :Cu E  E T u%E %E  u E  E \ u,E Y u !E tc  u "E Ra  u%"E 0m  u !E {  u"E @"E y  u"E Ȁ࿢"E  u #E  u%#E p E1D$CD$ D$$!=,F (F ƋE8u1!ȉ t1H> D$D$d $\$$~E uD$p$ A(F ,F D$E T$$- 9E1D$CD$ D$$J=4F 0F ƋE8u1!ȉ t1H> D$D$ $\$$觑E uD${$ j0F 4F D$E T$$UE E tE  u,]Ë E  tE 2 t]I Ðt&] É'U1(uu]}F0u ]u}]ËE$JU NjB$:ËF$-D$.U ËED$FD$ BD$_ $D$$t$$t&Uuu]}F0@ut ~GD@u0t F@D@u]1u}]Ít&\$$ fD$D$@ $|$$(릍US]D$D$t $F$D$D$D$ $$D$D$D$؄ $$D$zD$D$ $$D$RD$D$8 $$D$*D$D$h $~$D$D$D$ $V$D$D$D$ $.$D$D$D$ $$D$D$D$\ $$D$bD$D$ $$D$:D$D$ $$D$D$D$ $f$D$D$D$P $>$D$D$D$| $$D$D$D$ $$D$rD$D$ $$D$JD$D$( $$D$"D$D$\ $v$D$D$D$ $N$D$D$D$ $&$D$D$D$ $$D$D$D$8 $$D$ZD$D$h $$D$2D$D$ $$D$ D$D$ $^$D$D$D$ $6$D$D$D$\ $$D$[]U}E}uu ]]EGD$$fz:@D$U$fU؋uE]E @ }E]UWVSLUE@xEt @EԋM Mȡ E %=*E YEB uG8 =9 s1Ƌt$葕‰Ft @LuFBL9 rB  E % = MM1EIMuzEȉD$A $t'D$8 A Uȉ$T$E5D$D$Mĉ\$L$ EȉD$U$L[^_]Ð˃}Ѕuȸ׍ u|EX9 MċYGUċ?$lMĉAUċZЃD$D$M $c0D &}tEE(9 wEEp9 cEE9 RuЅ}} EE8 "E8 t&E@EЅ}=} E EM $詁EEȉ$?PtBur\$MC$L$L[^_]Ëuȿɍ  8 D$U$T$K$ ʄML$ T$D$A $CU@3BKuȿ UȾ zat uEȱ U 0D xaMELEEEEECUEt&Ct@t ]t]C]Ã{HtҋC EuuMUAM̃uXEu$D$D$ $g$]u}]Brf E u DD ɋ(,D$ E $sA (,E11 W}9s3mJbD$$lM &w9rE(,$ *f@TB'UWVSLHE x(^$`uD ^:!¡TD D$ E T$D$ED$D D$D D$ D D$A $}D t]tCt$C0C,`@ u6vG$(@0uD$6 @$EtӋX,p0؃]؉$U܉\$t$D$ D$T$EԉD$G$(EԋUD$D$D$GD$$ E D$ EԉD$DE PUԉ$E܋pDt0‹^8R0@,N49ӉEȉUr+M]̉N4^8E܁H@@,@0G$oA D$ E $_u $܊ }L[^_]D$$ ~MG$ D$}9rfY$܊ }A D$ E $!$* t&USÃ{wC$ &[]ËC [ֹS Ս :u ֍ :Bt܋CL$ T$D$ E D$A $uC $D D$|1륋[ nC f[CS[Tt&'UExt]f@]'&UWVS $F 1ɉ 8u졀D Y$؍\31$ED D$E$E$U7t:F t"7uE [^_]Ít&D Z$D$$+먍v'UWVS|$UED$EU1$EEuC$S9uT}E| tG]Eۉ\$$,U]Et]M+E4$)ÉL$\$u9utyUD$ $tMD$# $t]t&< Et< t< t< t< t&tބ]u6M $x}<$uE$Z|[^_]úC މ׉uC< ,< $}=} } } } } ft<=t< t< t< ft< t< u119]t${/؋Ut Lx/u 9fu+EƋMtnEP@9UB F MA}UGT$t$$WWM11uA$}G맃]M MU LT D} }5EU Ut tuM}9]w}Љ<$ut E$}+UUM MEEE2AD$$w})Љ&U8]u։}E܋@EࡴA U@$D$1t1D$$tCD@t A S;Pt$1]u}]Í&uqED$$IEtS\C `C $W`C uMɉMt E؋EtEؿK puD$C $7C$=E u?XC $PfW XC te\$$t u8D$D$q $Ut$T$$v됉\$$S udt$$GM܋t$uT$$B wB tMUEuuG$XF ۉEumtgCfuC$/UD$0ƋGD$ CD$ 4$D$0UEu&4$ruE}7GD$G$x D$8p_wD$D$ $]\$t$$!qD $* t 8!ËMUZu E$E8uuVMEEa: Aa: EU9uʋE Eo$ XE uD$ $gtރx0wx,vҁxD9 tɋC@$D$ $D$M@Hs$ n(E $(E )D EEED$D$ێ $&‰ÍEt6$,E̅tËẺ$B B $D D$D$ߎ $&ɍE!뗀-t:&m$, mrUXC uu]}t@$ttNtmFtfXC t $uPB ^x$|$gt/F0uAF$tB @$D$8u5XC ]u}]Ðt&D$/$ t|$$t떍&Uu5XC ]]}t]u}]Ít&Ct$u܍ED$C$GU C E3C 1 B pD$/4$KuD$ 4$pC$B XEG4$)؉D$\$3Ut$ B\$$Č D$kE; C [SXC C$U D$lkC$it&UWVS =`C ]u Ct@D@u [^_]É$tu\C uދt؋s<$t$2tD$/4$uD$ 4$t)D$t$<$u`C uC@$v'U`: t ɍBÐx tɍBɍBD$ D$$ [jt&'UWVSEeU1ҋP{GD=9 @@vA<p,x0L$$D$RTVD$|$4$RTWD$$D$RT@ GNU :u  :Cu :Ct& t -D$$ Rx04$|$D$04$;}jf1ҋue35tČ[^_]Ð$"d\$D$@}$Pt$L$蘣r,z0D$ B<A0R@Q4D$T$$1҅Tt$|$ $T$ ,11 {Dža: tGGa: -:{D$ D$$ /g :CP$1d\$D$<$P[$L$It&?9t&ȃ Ë뤐FttB@txD$D$ $O$eF,$rWFtD$ D$$ e&UD$ $ fE E U8E]u}=tY~5=|x=v=t&1H=t&~N "E f E ,E 0E ]u}]Ð "E fzuH>   R E  f%"E fH> $S뎡(E t$w(E H> PH> A#E H> ψEÉ֢#E  U܉u#E U :u> :Bu2 :Bu&! :Bu #E &uܸ uSM0E#E $ (E p  uX E KD$D$D $iU܉T$$cH>  %  u E .  u E ;  u E D  u E @|M u E W :u< :Cu0 :Cu$ :Cu E  E T u%E %E  u E  E \ u,E Y u !E tc  u "E Ra  u%"E 0m  u !E {  u"E @"E y  u"E Ȁ࿢"E  u #E  u%#E p E1D$CD$ D$$q=,F (F ƋE8u1!ȉ t1H> D$D$d $)\$$_E uD$p$ `(F ,F D$E T$$} 9E1D$CD$ D$$=4F 0F ƋE8u1!ȉ t1H> D$D$ $R\$$^E uD${$ _0F 4F D$E T$$UE#Eg@@ܺ@ vT2@@@]Ð&UME QPQPQ P ] UWVTE UMu}8ƒ 8vν8 411!01׍|EE8}@‰1#E1ȍ*ƇG8ERщU1!1 F08IΉM1!3M1F8 v 1!1ƍ>ؘi841$1!(1׍Dhl8@(‰1#l1ȍ[8lR,щl1!1 \8 I0΋ll1!3l1"k8 v41!1ƍ>q841p8<8@v81#p1Cypp1! 1ȍ!I @1#pD1b%p1!3D @@1#D11QZ^&D ֋1!1֍>Ƕ 411!׉1ύ]/EE1!1SDUE1!3U ؉1#M11u ֋1!1֍>!411!׉1ύ7tx1!1 xXx3XX!3xZEX X1#x3X0㩋x1#X1ʍ21!1ƍ>og421}!19L* 1M}B9EȉE13EqUE112"amu11֍ 8M 42 119D꾤1 1ύK|ȉE13E`KUE112pu 11֍~(M42119'1 1ύ0\ȉ`13`` `1129ً`11֍拍`42119|1 1ύeV HȉL L1ȍD")L 3L2*C΋L 11#L Ƌ 1֍>9 ׍41 1ύY[eEE E1 E 3U }M 11]u Ƌ 1֍>O~o׍41 1,EE E1CE 3U NM  11~SщT U3TT5:T41M 1ʍ*ȋPЍ 1э8ӆ ȉP8du9<tU􋕼Mu싵}苽E䋅UM܋u؋}ԋEЋŰMȉuĉ}EUMuPdU1yAQ T^_]Ít&U(E]}} upwwCu\@w4tEU|$T$$蓻Ex]u}]Ít&E?Ut$D$$u멸)9lj}wCUUЋU$T$UT$(UEP@uwUU)SE븉D$Et$$QUEu?UT$t$$κEUB뮍&U(E]Uu}xWWBB9ljBvB7Ex)}uE>D$$D$TUMBD GR ‰T|$L$4$E <$D$@]u}]ÍvE8)}wU]EÐAuTeU1҉}}P4$E t$<$D$P4$D$Ue3u ]u}]zv'UWVS  A U E TeE1$1D$D$ )D$7$$ƁwRuʋ$蘽uuV$D$1҉ЋUe3uF [^_]ÅtD$<$D$Wt$<$T$s\$ÐUWVS }?t"t$Fu<$诶 [^_]Ít&'UWVS E Ó?UtvUto0\tA'ft:"t5U <$T$ƹt9Vt;%A@tE $\D$荹u [^_]ËM $ L$htۋUBU^1 UWVSeE1Ef4$EEEEE)čL$MEt&GjU܅t E܃9E|8Eme܋ED$E$ʲjM؉EMȄubEtLG@tE̅uE Et4Eԅuˀ\E̅'uUȉ$蹺M؋UMG@tvG@uMe3 Ee[^_]ËEЅt#"tE!fE't)"KEEE$ f觶EEXU$EAt&UWVS}SS<uEE[^_]Ív7t0v u$EtEEtkw}$M$D$Ӵ)Eut?$($轵M‹E҉uE$EE[^_]ËUME [^_]Í'UWV1SWW;u}]Í&'U1ɉWVSee4 U쐍t&t/u8/u8/tu$'tbEtf/tUuV)…~UUETtQEtEU [^_]Ã>/t)ULUtl1H [^_]Í&'UWVSlEeE1E553UMU$^9EEE$S[U_4$E}ą;EU>En}};}}}EUE}E}܉9ljE(~9E fE;utIUЋMȉ׋M̋$T$Vtօu$EEEE}1҅}~11Uċ$I9uuM)M܋}9M<~0UEE)ʍ4U$ ME9MuG$葫Eu4EMe3 E e[^_]ËM $蝮qEu~%}ċDD$E$9EU$yUM9M~f..B/9E}9}~+E̋uЍ<UD$$襫9uEEE| ~; 9}t!UčwMȋDT$T$葭t9uEĐt&+E#E[$N$|pM $eD0)čD$Ef<:tt <:u9t_M)׉|$T$ $~/tRE8/D8M}L$<$xD$<$Ȧt)>vV눋U.B/B뺋U:뱋UUK1E EUEU ME]&UEU ME]UWVS. ttfwx Tu?u [^_]Í&'USË.t$ty"AUTA1[]Í$D¸tًtBt뮐UWV0U Eu}U܋M܉EEEE׉ƋU؉E܅UEu$9wQEƋEt&;}v;11&MЋMEԋEЋUԅt؃ڃ0^_]ÉЋU1fǃEM +EEM׋UM NjEM ЋUEỦE9Ủ|tmM1cv؃U]؃U]E&;}r ;u11EM9sM1UWVP} EUEuEEUEkMNM҉M܉E؉Uԉu}u(9 UEM܋EUQE9Ev6uU}MUMt&Eąt ]U]EUP^_]fEԃEMȸ U+Eȋu؋}EEMM ‹ẺUUMM ЋUMuU9UM)щMMЉM ‹EUUEE܋MH2fU؅t>E̋UE&EU؃ރE1u؉봋M9MrE9EvEỦEUŰM+MUԉMU94)U*UWV(EUEEEE׋U EUu!91M؉E܋E؋U܃(^_];}ǃEtxM +EuEEMUM NjEM ЋUE׉E9׉rqtbM1뀋Et8EƋEb;}r+U9Uv#v11H&1uf1%EM9sM1 U]Ít&'UWVS( )t$1ED$E D$E$9uރ [^_]ÐUSÛ(踢US2 2 t Ћu[]US[P(PY[%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 Stack now %dtoken %s (nterm %s (DeletingStarting 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_KBLOCKBINDSQUADLONGSHORTBYTESECTIONSDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDSORT_BY_NAMESORT_BY_ALIGNMENT'{''}'SIZEOF_HEADERSOUTPUT_FORMATFORCE_COMMON_ALLOCATIONOUTPUT_ARCHINHIBIT_COMMON_ALLOCATIONSEGMENT_STARTINCLUDEMEMORYNOLOADDSECTCOPYINFOOVERLAYDEFINEDTARGET_KSEARCH_DIRMAPENTRYNEXTSIZEOFALIGNOFLOADADDRMAX_KMIN_KSTARTUPHLLSYSLIBNOFLOATNOCROSSREFSORIGINFILLLENGTHCREATE_OBJECT_SYMBOLSINPUTGROUPOUTPUTCONSTRUCTORSALIGNMODSUBALIGNPROVIDEPROVIDE_HIDDENAS_NEEDEDCHIPABSOLUTENEWLINEENDWORDORDERNAMEWORDASSERT_KPUBLICDEFSYMENDBASEALIASTRUNCATERELINPUT_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@13statement_liststatement_list_optfill_expfill_optassign_opassignmentopt_commamemory_spec_listmemory_spec@14origin_speclength_specattributes_optattributes_listattributes_stringstartuphigh_level_libraryhigh_level_library_NAME_listlow_level_librarylow_level_library_NAME_listfloating_point_supportnocrossref_listmustbe_exp@15memspec_at_optopt_atopt_alignopt_subalignsect_constraint@16@17@18@19@20@21@22@23@24@25@26@27atypeopt_exp_with_typeopt_exp_without_typeopt_nocrossrefsmemspec_optphdr_optoverlay_section@28@29@30phdrsphdr_listphdr@31@32phdr_typephdr_qualifiersphdr_valdynamic_list_file@33dynamic_list_nodesdynamic_list_nodedynamic_list_tagversion_script_file@34@35vers_nodesvers_nodeverdepvers_tagvers_defns@36@37opt_semicolon׾7WӶӶӶӶmӶӶ-8TpӶӶӶӶӶJ_ӶtӶӶӶӶӶӶӶӶӶӶӶӶӶӶ<jӶ%Ӷ;` +>]pӶӶӶӶӶ&2Pm'Ei)PӶxӶӶӶӶӶӶӶ?Wo%5EUeӶӶu+ӶӶӶӶӶӶXӶzӶӶӶӶ$Ӷ̽ӶӶ -9])IZz?f)Pw:h:[|(Px@h 1=IUeuӶ)?\kӶӶ$3ӶBQ`q} Ӷ5O^ӶӶӶӶhFӶӶӶ5 ӶӶ:_Ff:Z7pI{ڿ%]]]]]*]]]]].]]]Ah3]]9?(]V]|w]]]]]]]]]]]]]]]]|e]]]&(e*-.]/e]1]34h]]]]]]]]]]]]]]]]AD]]KM||R|]S5|Z\=]]]]7]#]]eee@EHXY][^_cdefkpqrsxee]]' ]]U+]],]}]]6|C]e]F]]]GIJLN]]Id O]]jelee]ee]]eeeeeeeeee]]eeeeeeeeeeeeeeeeeeeeee]ee]]]]]]]]]]]]]]]]]](b]]]]]]]|]|S]]]]] ]Q]]]#]]7K_s[~~    ]]]]]]]]]]]]e]$]K]]]]]]]]=]]e]]ee]e]]]]]]ee]]]>]e]4]]] D6]o]G]L]]}]]]/CWk]]]]]]ewK]:D]]+HJ]]]]l]]]]]]]]]]]]eN]ee]]%]PeO]]]]]z]]]]w]eqS]]]e]]]]]T]]]]]]iD]]]]]]]mno]]]su]]x]]][{]]]0]}]]~]]]]]j!#@A]eS] )]rCp]]]]FW]]]p]]]X\P^`]]]]+fgk+]]]]]]]]]+]]]]]]]]"% !56 #$&'()*+,-./01234789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~GgEQpX>tW"556 {%&'{qyz|}0125E7<6%?@ABCDIJKLMNOVX5{,{5  5gc_6%mcc34IV65%%c% !"     kcy%%|}~c%cTU%%%'%&'% %FH012%7%%<34DIJKLMNOVXi 6  6gXmy |}~34 %34%34%%5%2y|}~%&'%%%%%012%%%%7]y%<|}~%%%%Duvw%IJKLMNO !"VX%6?@ABC5g%6&m CH!#F[.ab%&'(m@012G7<%D6%IJKLMNOCVHX !"5g[m%ab%&'%m012xy7}U<6_VD%5IJKLMNO&%V%X%%`Xg%m655%&'%6%%%012%%7%5%<%%%%D% IJKLMNO)*+,-%V%X34 g6_m !"%WY]abm !"./ 89:;q=>EFGH`PQRSTUZ[\ab$m./y89:;=>EFGHPQRSTUZ[\abm !"y !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !"& !"$=& !"=^defghijklnoqrs^xyzdefghjklnoqrsxyz !"% !" !" !" !"aFH4eR~uJ6[tMN4D\tPXu7s~MN[[t`=Yq9\:\rvtO/uMNcMNMNIYVYZ\]PQ_`abcwf%&xyklOzoprstuvwxyz{|}~DYEiPkOZ{|[\]~O}DOG~[KLMD<(\P P (P:c(~~[[~~'[\)\[aZ\[bc\i4)*+,"0)*+- !$LT'17ghijklmno.2;?(@A-BUCK350Qd3e?g23hijSmW4nJqRC2(3234  !#%&.@D*/86FG;HOTwZxyz|}[\]^_`abcghijklmno     def23<[g     hi2jk !"#$1%&'(f)*+,-.X+/012345 !"#$6%&'()*+,-./01234    5     6                              ^                                                       ,     >     D     E     I     S     V               CCD     ED     EFGHIJKLMNOPQRSFTUVGHIJKLMNOPQRSTUV                         ; ;5> < F<?67OPRkH=@F?BCDEAG.36LWKSUF@SU8h*U6j(1/ !$%4&'* G:>Y\ -87QANXMTV9e gf,)+LN=IJTiW_[^QKX+20,#"59HIDBVcZ]S>):YVOEC/0aZ3-`lRYh0MdJ1.bP40 2$}onp% m|!z~!rsmy{ "q"&" utvw#x' (   ]]]]]]]]]]]]q]]]](]]].]]]]>]ii]]]]]U^]-]]]]]]]P]]]]]]?]s"]]]]]]]]]]]]]]]]>]]]]]]]]]]]]]]]]]]]]]R]]]v W#7 89lmnop{qrsp:;>= 9<=>?0N5AWBUX@8$"d AB^_uvw5{5./89:;=>EFGHPQRSTUZ[\abmy&=^defghjklnoqrsxyzy|}~5}~ 55%%5%%%%%%%%%%%%%%&'0127<DIJKLMNOVXgmi66c%%5%%%%%%%%%%%%%%%%%%% !"5y|}~66C[6%c{$%6%c6$~5{%(%?@ABC%%_U_V6%&5%%%`X6'%6%55 )*+,-34WY]m6%%%%%3%6%34]34%%5%%%%%_6          #%',,2389:;<=>?@ABDFHKMOQSUTX[Z^bfiloruyx}| ! '(,-278=AAGHKMQSUWY^egkmoqsuwy~~  !#%')+-/13579;=?ACEGILNPRTVXZ\^`bkmoqsuw}~   !%&%/\_ktw~~!%+- "#&+-/249>BEJNSX]bgjmpuz}  #&(,/067?@GLORSX[\dfhjlrw|  #*,-36:;<DHLMQSVX[`eimotxy{}~ &-29>@GNUZ_cdijopuvxz|}~   #$(),.169:=>DFINT[]`adinwy{uvwiddekjooonfff&&^^ghlrrqsxy=$zE%F%\%8%8%:%9;Z%[%G%=$U%y%c%c%c%.56H%m% %3%4%3%4%3%3%4%3%4%4%3%%%%Y]3%]%W%m%)*+,- a%b%>56VX%P%Q%Q%R%ST%I% !"D%7K%J%L%M%%g%&%&%0%1%2%<%'%N%O%m%V%X%__%&%`%56C56[56?@ABC%%(%(%'%U56/56_%%565656{56{56{{}~}~||y56y56}}~~yyV  %+4=CJRY]afmqu(y}3   *<@DSay $*26?=EQX]dz^Z (,9JW\cl| = ,/?BSfiw3'+9GYh  (4CSem!. >BFJNRVZ^bfjnt.2EWh|+%F: macros nested too deeply redirectbad buffer in yy_scan_bytes()\%03o%F%P: EOF in comment ldlex.l in script in expressionout of dynamic memory in yy_scan_buffer()out of dynamic memory in yy_scan_bytes()out of dynamic memory in yy_create_buffer()%F:includes nested too deeply %F%s: file not recognized: %E %P:%S: ignoring invalid character `%s'%s fatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflow%F%P: read in flex scanner failed fatal flex scanner internal error--no action foundCt?d(<Pdx,@Th|0DXl   2FZn"6J^r&:Nbv*>Rfz.BVj~,@ThI==dx|0DXl  4H\p3*R=]q| !==4~XXXXXXXXXDDDDD=DDDDDD6DDDDDDDD=DDDDDDDDDDDDDD=DDDDDD6DDDDDDDD=   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ &,+"#$%-.'(! om*) &,+"#$%-.'(! *)$%om{z"#$%-.(! s sszz|} WEpn<=WE<=pn~93^gShw\AZd93ghwA93^gShw\AZd52f?YKJr][52fK52f?YKJr][>@4/e0IFXG>4e0F>@4/e0IFXG@;Mq_aulT1;Miul;Mq_aulT1y:Rty:ty:RtLLLjkHjkjkH`V``VOxbxOxbUDDUDvCBvCBvCB888cc666NN777PPQQ Yaaaaaa       YY               YY%aaaaaaa                                   aa                                                                                                              QC5   A  @? ^ w s g m  D Y #Uq M V 5A;|  K[Sy ` b ' xTw | y 7=IRp  ~ a ] Q W  A ~ } |  { n{Zw e a 'c T D @ .B | s   m l V d ^ JX V P 6^ N [ [ K `R N J L N T J ZG I = H J > L L @ M > 2 9 E 4 G E 3 3 2     ( IL6 Ry0 . 7 8 + 3 3 ) 5  &  & ( + '  ' ) t $            "        B u!x"*@R0 ~}}ai}yzqjw|lqwoyvckgl_ckmi`Z[`\QbXUTO`QNTNZJZ[IYMQD)1E(NMAKB:IGF>569h!    5,)$0)"%%#  hcw{rx\ZIX!   OI9\9@\Ot(7?6Obhfco   $")'$ ).0*:)/ ,;;6YHK##/2XYZBQTKE<WYY\[UfXXgO\rYkg]espztTht}~o  ' & &(8::E6I?HCNMABFNNETZ6XPXZNYVeHl]pfnhyxlmr{{rdz      !  )#/!$$,(8/5? 1YPDEAN,\QM2DcdXYV]<ZcblfTojjtgonxr`{hyxyy~r &1<DLT\gozF $Z $))  ,++--..Z ./-1/ 7 --0.120728:2G8:V::u0 %% 9;XP]]%V%9j;X__GPl%jku l=ko==o%{%===o/==%o{= y&&3bmbmbmb$&&bbcccyc4cc5$&&ddddf6fdeefddeffee~~e~9:0~~0;rr5r5rrk>BrkB[ [ ~ a||a~j}}||joVwow}|}woV?A|||C}+}++%%g++g_g_Dg%1%NNF%8G0NNNNNN,,-H-%8%,2-1%,,--IJNNNNNNYYKQQLMYYYYYY0Y2Y2YQYQN22OoYQ22oRSYYYYYY6Y6YTYQYQV6WYaaX66Zaaaaaaa[KaK\a]^aaK_`aabcKKdfaaaaaa7a77gahj7lmaxxn77Kopxxxxxxqrstuvwxyz{xxxxxx|}    !"#$()*./01345679:<=>@ACDEFAGHKMNOQRSNNUVWXZ[NNNNNN\^_`NaNcdefgijlmnpqstuvqwNNNNNNx{}N~N   ((((((((((( !"(((((#$%&)*+,-./013456789:;<?@ABCD(EGHJKLMNOPRSUVWXZ[]^_`(((abcefhikmgnopgqsptuvwxzv|}g~pv+' &"!                                              }|{zyxwvutrqpnmlkjihgfedba`^[XWVUTSRQPONMLKJIHGFEDCBA@>;:987654210/.-,+*)('&%$#"!     ~}|{zyxvutsrqpnmlihfedcb`_^]\ZYXUTSLJIHGFEDCA@?>=<;:9843/    snihg^TSMLKEDCB?><6543*"  !"#$%&'()*+,-./012345#6789:;<#=>#?####@#A#B#########C##D##E####FGHIJKLMJNOPQRSTUVWXYZ[\]^_`abcdefgWhWijklmnWWoWWWWWWWpWqJWrfffffWWWWWWWWWWsWWWWtuvwJKLMJxOPQRSTUyz{|}[\]^_`~zzzzzzzpzqJzzzzzzzzzzzzzzzzzztuvJJJJJJJJJJJ'|}JJJJJ'JJJ JJJJJJJJJJJJJJ|}JJJJJ"!= #A>?JJJB @G  H"IJPJJJ)+FGH' `2C2['D\3aE4X'Y22]ZO^5ibc'dj_62k27l22mn228oSpT9tqrsUuVW22wxyz{|}~<K=&'-QQ.0:QQ((;A!KBL(R(MC"2((R(2(2%%4567'2221n'~$$QQp%&%&%%'2(2(('(q!)^"%&%&%%2'2((('()+++,+-++`.2/2.a01.+2+2++2.2((..NNNNNNNN222(2(NNNNNN      !"#$%&'()*+,-.123456789:;<=>?@ABCDEFGHIJKL0/MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~NNNNNNNNNNNNNN\\\\]]]]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~MMMMMMM~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543/.-,+*)('&%$#      }|{zyxwvutsromlkjihgfedcb_[ZYXWVUTSRQPONJIHGFED@?>983210/,+*)(%$#      "*# vhgfeLF<;:* yylex%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%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 Shared library control for HP/UX compatibilitySpecify target for following input filesForce common symbols to be definedAuxiliary 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 unknownSet DT_NEEDED tags for DT_NEEDED entries in following dynamic libsDo not set DT_NEEDED tags for DT_NEEDED entries in following dynamic libsOnly set DT_NEEDED for following dynamic libs if usedAlways set DT_NEEDED for following dynamic libsIgnored 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 overlapsDemangle symbol names [using STYLE]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 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_TEXTRELReport 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 .bss.data.textP,KEYWORDSet architecturemri-scriptRead MRI format linker scriptdcdpentrySet start addressexport-dynamicExport all dynamic symbolsEBLink 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-sectionscrefOutput cross reference tabledefsymSYMBOL=EXPRESSIONDefine a symbol[=STYLE]embedded-relocsGenerate embedded relocsfatal-warningsTreat warnings as errorsCall 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-commonSort common symbols by sizesort_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 sectionunresolved-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-unresolved-symbolserror-unresolved-symbolswrap@d@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@P@!@@6'@@6@y@j@@@@@@@9H@@H@tbG@8[@@@@@@@@@@@@@@@@@@@@@@@@@@@@Ef0!HVHG8,}i|m$nV)  [ 5 &       o ` Q B 3 $         t e V G y _ F 7 (          w k \ M , SDaAAbb;ccdddee$6EE`c){ff 4FF dgGG'hIrllLL 4mD #1MM\;nnB\NNYoocOxqqrriRR ssSSTx$tt*, TT;N]xuu {+vV,xxXXTyy Y1 ((,))6EB b@_pmz@`#5sE,N^w=  P|7  -1BSp|Lp3B`x<d; 7X=|Q1 W1 bz L|&/5S_ i4TP\k (Lx 0:MPaxy C((((y(y(y(\(-u-u-u-u-u-u-u--u-u--u-u-u-u-u--u-u-u-u---u-u-u-u-u-u-u-u--u-u-u-u-u-u-u--u-u--u-u-u-u-u--u-u-u-u---8888888888888888WXVV0X8XVuXXXVV0WRWVVVVYYYZz[Y\\\]]]S^`__^d_``ab2aaattttttttt|P{{xƒz{{{|{Y|ELSi !UpTwFww%wbFwhcompare_sectionlang_do_assignments_1lang_size_sections_1print_data_statementload_symbols%X%P: unable to find version dependency `%s' %P%F: invalid syntax in flags %X%P: address 0x%v of %B section %s is not within region %s %X%P: region %s is full (%B section %s) %X%P: anonymous version tag cannot be combined with other version tags %X%P: duplicate version tag `%s' %X%P: duplicate expression `%s' in version information %X%P: unknown language `%s' in version information %P%F: bfd_link_hash_lookup failed: %E Common symbol size file %P%F: bfd_hash_lookup failed creating symbol %s %P%F: bfd_hash_allocate failed creating symbol %s %P%F: failed creating section `%s': %E %F%P: invalid reloc statement %P: warning: could not find any targets that match endianness requirement %P%F: cannot open output file %s: %E %P%F:%s: can not make object file: %E %P%F:%s: can not set architecture: %E %P%F: can not create hash table: %E %F%B: file not recognized: %E %F%B: member %B in archive is not an object %F%B: could not read symbols: %E Linker script and memory map %P%F: Illegal use of `%s' section %P%F: output format %s cannot represent section called %s %P:%S: warning: redeclaration of memory region '%s' %P:%S: warning: memory region %s not declared %X%P:%S: section has both a load address and a load region %F%S: non constant or forward reference address expression for section %s %P%X: Internal error on COFF shared library section %s %P%F: error: no memory region specified for loadable section `%s' %P: warning: no memory region specified for loadable section `%s' %P: warning: changing start of section %s by %lu bytes %P: warning: dot moved backwards before `%s' %P%F: can't relax section: %E %P%F: Failed to create hash table %P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported %P%X: %s architecture of input file `%B' is incompatible with %s output %P%X: failed to merge target specific data of file %B %X%P: unable to read .exports section contents %F%P: bfd_record_phdr failed: %E %X%P: section `%s' assigned to non-existent phdr `%s' %X%P: section %s [%V -> %V] overlaps section %s [%V -> %V] %P%F:%s: can't set start address %P%F: can't set start address %P: warning: cannot find entry symbol %s; defaulting to %V %P: warning: cannot find entry symbol %s; not setting start address %P%F: multiple STARTUP files C++Javaoperator new*operator delete*typeinfo name for*typeinfo for*../../ld/ldlang.c?*[ Allocating common symbols %lx%08lx%08lx0x%V %T 0x%V %W %B %W (size before relaxing) biglittlesubsection alignment%F%P: invalid data statement Fail with %d SORT (CONSTRUCTORS) CONSTRUCTORS SORT(EXCLUDE_FILE(%s) Address of section %s set to CREATE_OBJECT_SYMBOLS FILL mask 0x%02x0x%V %W %s 0x%v0x%V %W RELOC %s %s+ *fill*0x%V %W %s0x%V %W load address 0x%V[0x%V][unresolved]*undef* TARGET(%s) OUTPUT(%sLOAD %s START GROUP END GROUP %P%F: target %s not found %B: file not recognized: %E %B: matching formats:%F %I ALL Discarded input sections Memory Configuration AttributesLengthOriginName%-16s %-18s %-18s %s %-16s 0x%s !program header type/DISCARD/load base__load_start_%s__load_stop_%sCOMMON*?[-l.exportsphdr flagsphdr load addressNONE.startof.%s.sizeof.%s__start_%s__stop_%s*ABS*,:srecIEEEieeeCOFFcoff-m68k%P%F: unknown format type %s ../../ld/mri.cmri_alias%P%X: %s does not support reloc %s for set %s %P%X: Unsupported size %d for set %s %P%X: Different relocs used in set %s %P%X: Different object file formats composing set %s Set Symbol %G GLOBAL_%X%C: reloc refers to symbol `%T' which is not being output %X%C: dangerous relocation: %s %X%C: multiple definition of `%T' %P: Disabling relaxation: it will not work with multiple definitions %X%P: error: duplicate retain-symbols-file %P%F: bfd_hash_table_init failed: %E %P%F: bfd_hash_lookup for insertion failed: %E %P: `-retain-symbols-file' overrides `-s' and `-S' %P%F: bfd_hash_lookup failed: %E additional relocation overflows omitted from the output relocation truncated to fit: %s against undefined symbol `%T' relocation truncated to fit: %s against symbol `%T' defined in %A section in %B relocation truncated to fit: %s against `%T'%F%P: bfd_hash_table_init failed: %E %F%P: bfd_hash_lookup failed: %E %X%C: undefined reference to `%T' %C: warning: undefined reference to `%T' %X%D: more undefined references to `%T' follow %D: warning: more undefined references to `%T' follow %X%B: undefined reference to `%T' %B: warning: undefined reference to `%T' %X%B: more undefined references to `%T' follow %B: warning: more undefined references to `%T' follow %B%F: could not read symbols: %E %B%F: could not read relocs: %E %P: warning: global constructor %s used %P%F: BFD backend error: BFD_RELOC_CTOR unsupported %B: warning: definition of `%T' overriding common %B: warning: common of `%T' overridden by definition %B: warning: common of `%T' overridden by larger common %B: warning: larger common is here %B: warning: common of `%T' overriding smaller common %B: warning: smaller common is here %B: warning: multiple common of `%T' %B: warning: previous common is here Archive member included because of file (symbol) %P%F: this linker was not configured to use sysroots %X%P: can't set BFD default target to `%s': %E %P%F: --gc-sections and -r may not be used together %P%F: --relax and -r may not be used together %P%F: -r and -shared may not be used together %P%F: -F may not be used without -shared %P%F: -f may not be used without -shared ================================================== %P%F: cannot open map file %s: %E %P: link errors found, deleting executable `%s' %X%P: unable to open for source of copy `%s' %X%P: unable to open for destination of copy `%s' %s: total time in link: %ld.%06ld %D: first defined here %X%P: %s: %E %B: reference to %s %B: definition of %s %X%C:../../ld/ldmain.c+%v%Xusing multiple gp valueswarning: %C: %s%s %P: %s%s %B: %s%s %B: warning: common is here %B: warning: defined here %s(%s)%B (%T) %s/ldscripts/usr/share/locale--sysroot=/usr/bin/usr/i486-linux-gnu/bini486-pc-linux-gnuCOLLECT_NO_DEMANGLE_init_finiLDEMULATIONelf_i386-m%P%F: missing argument to -m -mips1-mips2-mips3-mips4-mips5-mips32-mips32r2-mips64-mips64r2-m486/usr/libusing external linker script:using internal linker script:%P%F: no input files %P: mode %s %F%B: final close failed: %E .exe.dll%P: Error writing file `%s' %P: Error closing file `%s' %s: data size %ld a.out  "reloc_overflow.stabstr$GDB_STRINGS$$GDB_SYMBOLS$%F%P: final link failed: %E ../../ld/ldwrite.c%F%P: cannot create split section name for %s %F%P: clone section failed: %E %P%F: bfd_new_link_order failed    P P   4 build_link_order%X%P: %s ../../ld/ldexp.c%F%S %% by zero %F%S / by zero MAXPAGESIZECOMMONPAGESIZENULL TREE %B:%s+0x%vPROVIDE (%s, ASSERT (, %s) (%s)+=-=*=/=<<=>>=&=|=||&&==!=<<>>%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 %F%S nonconstant expression for %s {f()*i*,**++*)n): p s v y| }&D-34;5678: 9;<u=c!"# EQG]+%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 (GNU Binutils for Ubuntu) 2.18Copyright 2007 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%F: could not read symbols %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 6666666666666666666666666666@;:(9(9::(96866666686B8=~<6:<;K=66666666666 86666666766666676P76%P: internal error: aborting at %s line %d in %s %P: internal error: aborting at %s line %d %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 cannot find script file %s opened script file %s attempt to open %s failed attempt to open %s succeeded %s%s%s%s%s%s%F%P: %s: No such file: %E .a%F%P: cannot find %s %B%F: could not read symbols; %E %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 ../../ld/ldcref.c%X%P: cref alloc failed: %E /* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .text 0 : { *(.text .stub) KEEP (*(.text.*personality*)) /* .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) } .got.plt 0 : { *(.got.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. */ } /* 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) ENTRY(_start) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .text 0 : { *(.text .stub) KEEP (*(.text.*personality*)) /* .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) } .got.plt 0 : { *(.got.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. */ } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x08048000); . = 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x08048000); . = 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) *(.got) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) *(.got) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x08048000); . = 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) *(.got) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* 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/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x08048000); . = 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i486-linux-gnu/lib32"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x08048000); . = 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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 ? 32 / 8 : 1); } . = 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) } } %P%F: --just-symbols may not be used on DSO: %B --build-id[=STYLE] Generate build ID note -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 %F%P: place_orphan failed: %E %F%P: map sections to segments failed: %E %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:%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. %P%F: invalid hash style `%s' %P%F: invalid maxium page size `%s' %P%F: invalid common page size `%s' .rela.dyn.rel.rel.dyn.gnu.warning..note.plt%s/lib%s%s.so../../ld/emultempl/elf32.em%P%F: looping in map_segmentsLD_RUN_PATH.gnu.warningincludelibc.so%F%P:%B: bfd_stat failed: %E found %s at %s md5uuidsha1.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/urandomsysvbothinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazymuldefsnocombrelocnocopyrelocnoexecstacknorelromax-page-size=common-page-size=elf32-i386disable-new-dtagsenable-new-dtagseh-frame-hdrexclude-libshash-styleBgroup.rodata.interp.sdata#  ˏ ܏    gldelf_i386_write_build_id_sectionread_hexldscripts/i386linux.xrldscripts/i386linux.xuldscripts/i386linux.xbnldscripts/i386linux.xnldscripts/i386linux.x%s/lib%s%s.sa../../ld/emultempl/linux.emi386linuxa.out-i386-linux/* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.ldata 0 : { *(.rel.ldata) } .rela.ldata 0 : { *(.rela.ldata) } .rel.lbss 0 : { *(.rel.lbss) } .rela.lbss 0 : { *(.rela.lbss) } .rel.lrodata 0 : { *(.rel.lrodata) } .rela.lrodata 0 : { *(.rela.lrodata) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .text 0 : { *(.text .stub) KEEP (*(.text.*personality*)) /* .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) } .got.plt 0 : { *(.got.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-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.ldata 0 : { *(.rel.ldata) } .rela.ldata 0 : { *(.rela.ldata) } .rel.lbss 0 : { *(.rel.lbss) } .rela.lbss 0 : { *(.rela.lbss) } .rel.lrodata 0 : { *(.rel.lrodata) } .rela.lrodata 0 : { *(.rela.lrodata) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .text 0 : { *(.text .stub) KEEP (*(.text.*personality*)) /* .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) } .got.plt 0 : { *(.got.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-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x400000); . = 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) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.ldata : { *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rel.lbss : { *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rel.lrodata : { *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x400000); . = 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) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.ldata : { *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rel.lbss : { *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rel.lrodata : { *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) *(.got) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.ldata : { *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rel.lbss : { *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rel.lrodata : { *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) *(.got) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.ldata : { *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rel.lbss : { *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rel.lrodata : { *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x400000); . = 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) } .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.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) *(.got) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x400000); . = 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) } .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.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .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.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } /* 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-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x400000); . = 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) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.ldata : { *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rel.lbss : { *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rel.lrodata : { *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) KEEP (*(.text.*personality*)) /* .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) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) 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) } } i386:x86-64elf_x86_64elf64-x86-64;3/  ˏ ܏    gldelf_x86_64_write_build_id_sectionread_hex out of memory ; <`hpzR| (l (H  (t6 q  ho|PP # 3 HԠTooot(2 br¦Ҧ"2BRbr§ҧ"2BRbr¨Ҩ"2BRbr©ҩ"2BRbrªҪ"2BRbr«ҫ"2BRbr¬Ҭ"2BRbr­ҭ"2BRbr®Ү"2BRbr¯ү"2BRbr°Ұ 2 @ ,A pA '  @@C DB`Q6 7 `8 7A F 43`10114@ N  Ў Ъ0 +#+ + #43`1p1114P  @4P43`1114г  `кPP +#+ + #C .shstrtab.interp.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss 44HH %hh!o||+ PP 3PP# ;ottHo`W TT ` Ԡ H i&0dLL& o0Yu { p P! P$t! t2 2 $2 $(2 (3 3 5  9 $