ELF> M@È^@8@@@@””” à àðððÝEÝE@@@€�€�0Ó0Ó0ÓŠ€¤(=(=(=PPP ppp$$ôÌôÌôÌŒŒSåtdPPP PåtdL?L?L?||QåtdRåtd0Ó0Ó0ÓÐlÐlGNU€ÀGNUte§s휫æè`º[ÑeÎm†ð–|TÀfNŽý“˜<­èïpTL>¥ uÜ µ]}†&÷ 1º¢4 üp¨)(F. _m C_ > å e™3Ê $ æ ô³Ì  K 1„ùF ­ãw9=þP+ Ãî¿u‚ )tÂæE¢èqRík¥ ®ºè P p– ™Þ$  Ž  1 ΗuU ó†ÁcY—!NJy•’“€� • (¾Lz ‹Xÿ Í ’ Ó TT Ãöé7íH _�d q (À^·JdMÅ ©ÝŸZ ­/ ±£¸ß§ž4 ±öI© }Eö À· ¬ Y¦§ì5É á! • €áØZtD ðŸŸÒ ͈u™ÜÍÏQÜÑø gÇ` ‹ öð «×$C:RÚ¶Þ­‡«ã “ç ɉ޹•Ìr@ Рf ~‘¡ ³ ów ‡³ ²“Ä¡¹ �ò ;Õ”:úq, ׎f™ $x Ú¡• ) BA ü g]”ƒ Í [ ï1¯ Ö  å8]Ó -4o°5#à.7X"b¥`�5%°/&É /ƒb _ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTable__libc_start_main__cxa_finalizesetlocalebindtextdomainxmalloc_set_program_namefseekftellxmallocfreadferrorstrlen_sch_istablexreallocmemmovememcpyfclosebfd_initbfd_set_error_program_namebfd_set_assert_handlerbfd_set_error_handlerstrncmpbfd_set_default_targetgetenvstrcmpdcgettextbfd_hash_table_freebfd_closexexitstrchrxstrdupregister_ld_plugin_object_pgetpagesizedlsymstderrfprintfstdoutfflushmake_temp_filebfd_section_already_linked_table_initstrcasecmpstrcpyfwritebfd_section_already_linked_table_freefstatunlinkbfd_openrbfd_check_format_matchesstrrchrmkstempbfd_fopenbfd_set_formatbfd_get_archbfd_get_machbfd_set_start_addressbfd_set_file_flagsbfd_map_over_sectionsbfd_make_section_with_flagsbfd_set_section_sizebfd_set_symtabbfd_set_section_contentsrenamebfd_get_errorbfd_errmsgbfd_set_errorbfd_hash_set_default_sizedlerrorlrealpathbfd_sprintf_vmabfd_link_hash_traversefputsbfd_hash_traversebfd_generic_link_read_symbolsputcharqsortbfd_link_hash_lookupfputc_sch_tolowerbfd_hash_table_init_n_bfd_std_sectionconcatlbasenamefnmatchstrpbrkbfd_hash_lookupbfd_hash_allocatebfd_hash_newfuncbfd_scan_archoptindopterrgetopt_long_onlyoptarggetopt_longdlopenbfd_target_listbfd_get_compression_algorithm_namefgetsfeof__errno_locationbfd_scan_vma__isoc23_strtoulbfd_hash_table_initcplus_demangle_name_to_stylecplus_demangle_set_stylebfd_get_compression_algorithmbfd_close_all_donedlcloseunlink_if_ordinarymake_relative_prefixvsnprintfbfd_demanglefilename_cmpxcalloc__isoc23_strtoullstdinfilenoisattystrcspnhtab_findhtab_createhtab_find_slotbfd_octets_per_bytebfd_wrapped_link_hash_lookupbfd_link_add_undefhtab_hash_stringbfd_emul_get_maxpagesizebfd_emul_get_commonpagesizebfd_link_check_relocsbfd_get_section_by_namebfd_reloc_type_lookupbfd_get_reloc_code_namebfd_record_phdrbfd_get_section_contentsbfd_openwbfd_set_gp_sizebfd_iterate_over_targetsbfd_check_formatbfd_arch_mach_octets_per_byte_bfd_elf_linker_x86_set_optionsbfd_elf_set_dyn_lib_classfilename_ncmpbfd_openr_next_archived_fileperrorbfd_arch_get_compatiblebfd_extract_object_only_sectionobjalloc_free_blockbfd_get_next_section_by_namebfd_make_section_anyway_with_flagsbfd_elf_parse_eh_frame_entriesbfd_plugin_target_pbfd_createbfd_make_writablebfd_get_arch_infobfd_set_arch_infobfd_get_gp_sizebfd_allocbfd_plugin_open_inputbfd_plugin_close_file_descriptorbfd_make_readablemunmapbfd_elf_get_needed_listbfd_elf_get_dyn_lib_classbfd_elf_add_dt_needed_tagbfd_elf_get_runpath_listbfd_printable_namebfd_elf_set_dt_needed_namememcmpbfd_get_reloc_upper_boundbfd_canonicalize_reloccurrent_demangling_styleunwrap_hash_lookupbfd_hide_sym_by_versionbfd_elf_get_dt_sonamegetpwdbfd_statbfd_elf_get_bfd_needed_listmmaplseekstrstr_bfd_elf_match_sections_by_type_bfd_elf_tls_setupbfd_elf_size_dynamic_sectionsbfd_elf_size_dynsym_hash_dynstrbfd_elf_discard_info_bfd_elf_map_sections_to_segmentsbfd_elf_record_link_assignment_bfd_fix_excluded_sec_symsbfd_get_unique_section_namebfd_make_section_anywaybfd_new_link_orderbfd_putl64bfd_getb64bfd_putl16bfd_getb16bfd_putl32bfd_getb32bfd_arch_bits_per_addressdcngettextglobglobfreestrncpybfd_is_local_labelbfd_seekbfd_writeabortbfd_group_signaturebfd_get_full_section_contents_bfd_elf_strtab_len_bfd_elf_strtab_strrewindbfd_get_target_info__isoc23_strtolbfd_find_targetbfd_read_bfd_pex64i_swap_debugdir_out_bfd_pex64i_write_codeview_recordbfd_set_section_flagsbfd_get_current_timebfd_set_archive_headstpcpy_bfd_pei_swap_debugdir_out_bfd_pei_write_codeview_recordfgetcbfd_make_section_old_waystrcatstrtokposix_spawnattr_initposix_spawnattr_setflagsposix_spawnattr_destroyposix_spawn_file_actions_initposix_spawn_file_actions_adddup2posix_spawn_file_actions_destroyposix_spawn_file_actions_addcloseposix_spawnpposix_spawn__environwait4killwaitpidpipefcntlgetrusage_obstack_newchunkobstack_alloc_failed_handler_obstack_allocated_p_obstack_free_obstack_memory_usedvsprintfremovememset_xexit_cleanup_obstack_begin_obstack_begin_1ungetcctf_closectf_link_add_ctfctf_errmsgctf_link_shuffle_symsctf_errwarning_nextctf_bfdopenctf_errnoctf_link_writectf_createctf_dict_closectf_link_add_linker_symbolctf_link_add_strtabctf_linkjson_deletejson_loadslibbfd-2.44-system.solibctf.so.0libjansson.so.4libc.so.6LIBCTF_1.1LIBCTF_1.0GLIBC_2.27GLIBC_2.15GLIBC_2.14GLIBC_2.33GLIBC_2.34GLIBC_2.38GLIBC_2.2.5    ‡ dÊ ‡{0q/�¡p/�¬—‡‘– ·•‘– ”‘– ͳ‘–Ø´‘–㸑–îui ù0Ó€N8Ó@N@Óec`Ó,G€Ó©J ÓÛ`ÀÓ°JàÓÁJÔÜJ ÔÙJ@ÔæJ`ÔïJ€ÔK ÔKÀÔKàÔ"KÕ/K Õ=K@Õ:K€Õ,G Õ©JÀÕÛ`àÕ°JÖÁJ ÖÜJ@ÖÙJ`ÖæJ€ÖïJ ÖKÀÖKàÖK×"K ×/K@×=K`×:K ×,GÀשJà×Û`ذJ ØÁJ@ØÜJ`ØÙJ€ØæJ ØïJÀØKàØKÙK Ù"K@Ù/K`Ù=K€Ù:KÀÙ,GàÙ©JÚÛ` Ú°J@ÚÁJ`ÚÜJ€ÚÙJ ÚæJÀÚïJàÚKÛK ÛK@Û"K`Û/K€Û=K Û:KÜVKÜØ­ ÜbKHÜKzPÜ^K`Ü�TˆÜyC�Ü® ÜoKÈÜŽNÐÜzKàܘKÝ8® Ý›K`ÝžKˆÝŽN�Ý®K ÝÄKÐÝ`®àÝ›rÞvVÞÛK Þ LPÞíK`ÞL�Þˆ® ÞLÐÞ°®àÞà®ß¯ ß8LPß`¯`ßOL�ߘ¯ ßeLÐßhLàßÉ{à€L à›LHàš^PàЯ`à¥Lˆàš^�à°Ðà¬Làà´LáèTá(° á»LHáÂLPáX°`áÖLˆáËL�ူ áÓLÐá°°àá+UâøLâåL âMHâ MPâð°`âM�â±Èâb@Ðâ+Màâ9Mã@± ãCMPãJM`ãdM�ãh± ãaMÐã ±àãSNäŽNäkMPä€M`ä•MˆäŽN�ä M äÊMÈä¸MÐä¿MàäÑMåÜMåȱ åàMPåè±`åòM�å² å÷MÐå²àåNæH² æNPæx²`æN�æx² æ#NÐæ ²àæ&NçÀ² ç2NPç>N çZNÈçŽNÐçè²àçgNèŽNè ³ èyNHè†NPèP³`è“N�è�N è¯NÐè»NàèÖN逳 éÓNP騳`éæN�éìN éÍ\ÈéŽNÐéýNàéOêŽNêO ê:O`êäRˆêÖO�êس ê=OÈêÖOÐê´àêüGëMOë8´ ëXOPëh´`ëIS�ë[OÐ똴àëuOì�O ì›OPìÀ´`ìªO�ìð´ ì·OÈìÖOÐìÄOíiaíµ íÝOPíéO`í÷O�íP íPÐí@µàí P î-P`î*P î;PÐàî8Pïðµ ïEPHïVKPï`¶`ïLP�ïUP ïsPàïvP ð‚PPð€¶`ðŠP ð�PàðƒP ñ˜PPñ¨¶`ñ¥P�ñж ñ¯PÐñð¶àñÆPò· òÃPPòH·`òØP�òx· òÕPÐò°·àòïPóôP ó9DHóQPó#Q`ó‡Rˆó3Q�óð· óUàÿMU@¾ TUH`UPx¾`xU „UÈ‘Uа¾à UŽNྠ¶UHÉUP¿`ÏUˆÝU�8¿ åUÈôUÐ`¿àýUV !VP�¿`-VˆÖO�7V MVа¿à`VnV~V ~lHvVP›V`²VˆvV�·V ÓVÈvVÐÙVàöVvVüV WHvVP'W`CWˆvV�SW qWÈvVЀWà�WØ¿ ÇWH¹WP�À`ÃW ÏWÈŽNиÀàÞWÖOØÀ öWP@Á`X�hÁ XÐ7XàUXŽNbX tXHÖOPŠX`¦XˆŽN�˜Á ÁXиÁàÍXàÁ âX`ßX òXà Y  Y` Y  Yà 4Y 1Y` FY�   WYÐ @Âà aY h tYP  Â` �Y  •YÐ ÈÂà §Y à ¿YP (Ã`  T� Pà ØYÈ ÖOÐ €Ãà ÝY ÖO ¨Ã öYP àÃ` Z� Ä   ZÐ Zà 9ZIZPÄ RZP€Ä`OZ�¸Ä iZÐðÄàfZÅ }ZPPÅ`zZ�€Å ‹ZиÅà x g j^(r^0z^8…^@�^H—^P ^X¨^`1dh_bp9dxHd€^dˆld�yd˜…d “d¨ d°Wb¸_bÀebÈwbà¬jð³j»jÃj Éj0Ïj`åj€s ïjÀÄwàþjk #k@;k`Ok€`k xkÀü`àŠk”k €¡@¥k`¨k€»k »kÀÆkàãwÙk "K@ík`l€l "lÀ7làMldl dl@rl`‰l€¡l ³lÀÇlàÚlîl m@!m` ¡€>m XmÀºmàÒmæm ùm@ n`n€.n >nÀPnàvmsm Û`@‡m`œm€²m ÊmÀÞmàñmn n@&n`6n€HnÈÞ€ØûLèXnø[n^nan(dn8hnHlnXonhrnxunˆxn˜{n¨~n¸enÈinØ�nè„nø‡nZ{�n(ªe8©eH¤eXžeh™ex–nˆŸn˜®n¨µn¸yCȽnØÈnèÌnøÒn×nßn(ên8ænHfqXïnhønxünˆo˜2N¨o¸oÈ1oØBoèIoøPoMr^r(pr8rH^rXpr€¬j�³j »j°ÃjÀÉjÐÏjåj s@ïj`Äw€þj kÀ#kà;kOk `k@xk`ü`€Šk ”kÀ•rà€¡ ¥k ¨k@ vm` sm€ »k  »kÀ Ækà ãw!Ùk !"K@!ík`!l€!l !"lÀ!7là!Ml"dl "dl@"rl`"‰l€"¡l "³lÀ"Çlà"Úl#¡r #m@#!m`#øƒ€# ¡ #¿rÀ#·rà#>m$Xm $Òm@$Êm`$æm€$Þm $ùmÀ$ñmà$ n%n %n@%n`%.n€%&n %>nÀ%6nà%Pn&Hn &Û`@&‡m`&œm &Ór°&ÖrÀ&ßrÐ&êrà&çrð&ñr'úr'ýrH'MrX'^rh'prx'rˆ'^r˜'prÀ'³tÐ'Ëtà'Ôtð'Ót(lo(æt@(³tP(öt`(up( u€(8r�(u (2u°(È…À(HuÐ(Zuà(juð(zu)Šu)lo )æt0)›u@)šuP)¦u`)­up)µu )³t°)ËtÀ)ÔtÐ)Ótà)loð)æt *³t0*öt@*ËtP*Âu`*Ôtp*Ðu€*âu�*öu *Zu°*juÀ*zuÐ*Šuà*loð*æt+›u+šu +¦u0+­u@+µu`+óop+v +#v°++vÀ+ØoÐ+¶qà+6vð+d ,_v0,gv@,ovP,Jv`,Tvp,^v€,fv�,nv ,vv°,�và,Švð,“v-�v-¤v -­v0-·v@-ÂvP-Ív`-Ôvp-Þv€-æv�-ív -÷v°-wÀ- wà-óoð-v .#v0.+v@.ØoP.¶q`.6vp.d ._v°.gvÀ.ovÐ.Jvà.Tvð.^v/fv/nv /vv0/�v`/Švp/“v€/�v�/¤v /­v°/·vÀ/ÂvÐ/Ívà/Ôvð/Þv0æv0ív 0÷v00w@0 w`0Ãwp0û`€0Éw�0Ïw 0×w°0âwà0tð0t1fq1 t 1xq01–g@1tP1 t`1*tp1>q€1:t�1Bt 1Kt°1 sÀ1ûLÐ1pqà1Stð1]q2Zt21q 2–n02ów@2GqP2bt`2Çyp27q 2Ór°2ÖrÀ2ßrÐ2êrà2çrð2ñr3úr3ýr@3çxH3±bP3õxX3y`3ûLh3 yp3yx3y€3yˆ3%y�3+y˜3/y 38y¨3Ay°3Hy¸3GyÀ3MyÈ3QyÐ3UyØ3Zyà3ayè3eyð3iyø3Dy4‹{4my4qy4]@ 4uy(4xy04y84†y@4ŠyH4ŽyP4’yX4–y`4šyh4»{p4 yx4¤y€4�nˆ4¬y�4ªe˜4©e 4¤e¨4že°4™e¸4±yÀ4–nÈ4¿\Ð4·yØ4Öeà4Ïeè4Àyð4oø4o51o5Ïy5Üy5îy 5øy(5z05z85z@5ŸnH5zP5,zX5Dz`5Pzh5jzp5Pox5�z€5®nˆ5‰z�5–z˜5¡z 5¨z¨5®z°5³z¸5¸zÀ5ÀzÈ5ÉzÐ5µnØ5Îzà5½nè5Ènð5Ìnø5Òn6ßn6×n6ên6æn 6×z(6Ýz06ãz86ëz@6ïzH6øzP6özX6þz`6 {h6Bop6{x6Io€6{ˆ6§|�64{˜6:{ 6A{¨6N{°6)z¸6W{À6p{È6`{Ð6h{Ø6w{à6�{è6È|ð6©zø6ïn7£z7†{7Ž{7–{ 7œ{(7¥{07‡n87%z@7®{H7µ{P7tX7�z`7¿{h7È{p7Ì{x7Ù{€7ê{ˆ7÷{�7ü{˜7Xo 7|¨7 |°7|¸7#|À7)|È72|Ð7G|Ø7e|à7j|è7u|ð7€|ø7ˆ|8œ|8­|8fq8º| 8Í|(8Ñ|08Õ|88Ù|@8Ý|H8á|P8å|X8é|`8�Mh8ñ|p8ú|x8}€8 }ˆ8}�8}˜8/} 8B}¨8F}°8T}¸8g}À8y}È8…}Ð8Ž‚Ø8–}à8š}è8¥}ð8®}ø8²}9¶}9º}9Å}9É} 9Õ}(9Ø}09Ü}89mC@9à}H9ð}P9~X9~`9~h9-~p9D~x9R~€9d~ˆ9s~�9~~˜9�~ 9¢~¨9½~°9Ð~¸9Õ~À9ß~È9ä~Ð9é~Ø9ø~à9 è9ð9ø9$:.:8:C:µR :M(:b0:s8:@:„H:‰P:•X:¡`:°h:Àp:Òx:Ú€:íˆ: €�:€˜:8€ :O€¨:_€°:q€¸:v€À:�€È:}€Ð:†€Ø:‹€à:�€è:Ÿ€ð:¦€ø:°€;Å€;Ò€;îV;†;ç€(;ì€0;ñ€8;ö€@;û€H;�P;�X; �`;�h;�p;x\x;�€;�ˆ;1��;F�˜;V� ;b�¨;k�°;{�¸;€�À;…�È;Š�Ð;��Ø;š�à;Ÿ�è;¤�ð;©�ø;³�<Ã�<Ì�<Þ�<ã� <ö�(<‚0<‚8<-‚@<ISH<2‚P<7‚X<B‚`<L‚h<S‚p<\‚x<g‚€<k‚ˆ<o‚�<}‚˜<š‚ <Ÿ‚¨<µ‚°<¸<È‚à<°"è<À"ð<#ø<ð"=`'=(= (=0( = "HHHH`H5ÆhH«SpHÌSxHÇÏ€HŽÐˆHE&�HÀʘH û H/Z¨Hà·°Hðy¸HÛÕÀHïÑÈH5JÐHÈA?ÐA@ØABàACèADðAEøAFBGBHBIBJ BK(BL0BM8BN@BOHBPPBQXBR`BShBTpBUxBV€BWˆBX�BY˜BZ B\¨B]°B^¸B_ÀB`ÈBaÐBbØBcàBdèBeðBføBgChCiCjCk Cl(Cm0Cn8Co@CpHCqPCrXCs`CthCupCvxCw€CxˆCy�Cz˜C{ C|¨C}°C~¸CÀC€ÈC�ÐC‚ØCƒàC„èC…ðC†øC‡D‰DŠD‹DŒ D�(D�0D�8D‘@D“HD”PD•XD–`D—hD˜pD™xDš€D›ˆDœ�D�˜Dž DŸ¨D °D¡¸D¢ÀD£ÈD¤ÐD¥ØD¦àD§èD¨ðD©øDªE«E¬E­E® E¯(E°0E±8E²@E³HE´PEµXE¶`E·hE¹pEºxE»€E¼ˆE¾�E¿˜EÀ EÁ¨E°EøEÄÀEÅÈEÆÐEÇØEÈàEÉèEÊðEËøEÍFÎFÏFÐFÑ FÒ(FÓ0FÔ8FÕ@FÖHF×PFØXFÙ`FÚhFÛpFÜxFÝ€FÞˆFß�Fà˜Fá Fâ¨Fã°Fä¸FåÀFæÈFçÐFèØFéàFêèFëðFìøFíGïGðGñGò Gó(Gô0Gõ8Gö@G÷HGùPGúXGû`GühGýpGþxGÿ€GˆG�G˜G G¨G°G¸GÀGÈG ÐG ØG àG èG ðGøGHHHH HHƒìH‹…OH…ÀtÿÐHƒÄÃÿ5ÊOÿ%ÌO@ÿ%ÊOhéàÿÿÿÿ%ÂOhéÐÿÿÿÿ%ºOhéÀÿÿÿÿ%²Ohé°ÿÿÿÿ%ªOhé ÿÿÿÿ%¢Ohé�ÿÿÿÿ%šOhé€ÿÿÿÿ%’Ohépÿÿÿÿ%ŠOhé`ÿÿÿÿ%‚Oh éPÿÿÿÿ%zOh é@ÿÿÿÿ%rOh é0ÿÿÿÿ%jOh é ÿÿÿÿ%bOh éÿÿÿÿ%ZOhéÿÿÿÿ%ROhéðþÿÿÿ%JOhéàþÿÿÿ%BOhéÐþÿÿÿ%:OhéÀþÿÿÿ%2Ohé°þÿÿÿ%*Ohé þÿÿÿ%"Ohé�þÿÿÿ%Ohé€þÿÿÿ%Ohépþÿÿÿ% Ohé`þÿÿÿ%OhéPþÿÿÿ%úNhé@þÿÿÿ%òNhé0þÿÿÿ%êNhé þÿÿÿ%âNhéþÿÿÿ%ÚNhéþÿÿÿ%ÒNhéðýÿÿÿ%ÊNh éàýÿÿÿ%ÂNh!éÐýÿÿÿ%ºNh"éÀýÿÿÿ%²Nh#é°ýÿÿÿ%ªNh$é ýÿÿÿ%¢Nh%é�ýÿÿÿ%šNh&é€ýÿÿÿ%’Nh'épýÿÿÿ%ŠNh(é`ýÿÿÿ%‚Nh)éPýÿÿÿ%zNh*é@ýÿÿÿ%rNh+é0ýÿÿÿ%jNh,é ýÿÿÿ%bNh-éýÿÿÿ%ZNh.éýÿÿÿ%RNh/éðüÿÿÿ%JNh0éàüÿÿÿ%BNh1éÐüÿÿÿ%:Nh2éÀüÿÿÿ%2Nh3é°üÿÿÿ%*Nh4é üÿÿÿ%"Nh5é�üÿÿÿ%Nh6é€üÿÿÿ%Nh7épüÿÿÿ% Nh8é`üÿÿÿ%Nh9éPüÿÿÿ%úMh:é@üÿÿÿ%òMh;é0üÿÿÿ%êMh<é üÿÿÿ%âMh=éüÿÿÿ%ÚMh>éüÿÿÿ%ÒMh?éðûÿÿÿ%ÊMh@éàûÿÿÿ%ÂMhAéÐûÿÿÿ%ºMhBéÀûÿÿÿ%²MhCé°ûÿÿÿ%ªMhDé ûÿÿÿ%¢MhEé�ûÿÿÿ%šMhFé€ûÿÿÿ%’MhGépûÿÿÿ%ŠMhHé`ûÿÿÿ%‚MhIéPûÿÿÿ%zMhJé@ûÿÿÿ%rMhKé0ûÿÿÿ%jMhLé ûÿÿÿ%bMhMéûÿÿÿ%ZMhNéûÿÿÿ%RMhOéðúÿÿÿ%JMhPéàúÿÿÿ%BMhQéÐúÿÿÿ%:MhRéÀúÿÿÿ%2MhSé°úÿÿÿ%*MhTé úÿÿÿ%"MhUé�úÿÿÿ%MhVé€úÿÿÿ%MhWépúÿÿÿ% MhXé`úÿÿÿ%MhYéPúÿÿÿ%úLhZé@úÿÿÿ%òLh[é0úÿÿÿ%êLh\é úÿÿÿ%âLh]éúÿÿÿ%ÚLh^éúÿÿÿ%ÒLh_éðùÿÿÿ%ÊLh`éàùÿÿÿ%ÂLhaéÐùÿÿÿ%ºLhbéÀùÿÿÿ%²Lhcé°ùÿÿÿ%ªLhdé ùÿÿÿ%¢Lheé�ùÿÿÿ%šLhfé€ùÿÿÿ%’Lhgépùÿÿÿ%ŠLhhé`ùÿÿÿ%‚LhiéPùÿÿÿ%zLhjé@ùÿÿÿ%rLhké0ùÿÿÿ%jLhlé ùÿÿÿ%bLhméùÿÿÿ%ZLhnéùÿÿÿ%RLhoéðøÿÿÿ%JLhpéàøÿÿÿ%BLhqéÐøÿÿÿ%:LhréÀøÿÿÿ%2Lhsé°øÿÿÿ%*Lhté øÿÿÿ%"Lhué�øÿÿÿ%Lhv逸ÿÿÿ%Lhwépøÿÿÿ% Lhxé`øÿÿÿ%LhyéPøÿÿÿ%úKhzé@øÿÿÿ%òKh{é0øÿÿÿ%êKh|é øÿÿÿ%âKh}éøÿÿÿ%ÚKh~éøÿÿÿ%ÒKhéð÷ÿÿÿ%ÊKh€éà÷ÿÿÿ%ÂKh�éÐ÷ÿÿÿ%ºKh‚éÀ÷ÿÿÿ%²Khƒé°÷ÿÿÿ%ªKh„é ÷ÿÿÿ%¢Kh…é�÷ÿÿÿ%šKh†é€÷ÿÿÿ%’Kh‡ép÷ÿÿÿ%ŠKhˆé`÷ÿÿÿ%‚Kh‰éP÷ÿÿÿ%zKhŠé@÷ÿÿÿ%rKh‹é0÷ÿÿÿ%jKhŒé ÷ÿÿÿ%bKh�é÷ÿÿÿ%ZKhŽé÷ÿÿÿ%RKh�éðöÿÿÿ%JKh�éàöÿÿÿ%BKh‘éÐöÿÿÿ%:Kh’éÀöÿÿÿ%2Kh“é°öÿÿÿ%*Kh”é öÿÿÿ%"Kh•é�öÿÿÿ%Kh–é€öÿÿÿ%Kh—épöÿÿÿ% Kh˜é`öÿÿÿ%Kh™éPöÿÿÿ%úJhšé@öÿÿÿ%òJh›é0öÿÿÿ%êJhœé öÿÿÿ%âJh�éöÿÿÿ%ÚJhžéöÿÿÿ%ÒJhŸéðõÿÿÿ%ÊJh éàõÿÿÿ%ÂJh¡éÐõÿÿÿ%ºJh¢éÀõÿÿÿ%²Jh£é°õÿÿÿ%ªJh¤é õÿÿÿ%¢Jh¥é�õÿÿÿ%šJh¦é€õÿÿÿ%’Jh§épõÿÿÿ%ŠJh¨é`õÿÿÿ%‚Jh©éPõÿÿÿ%zJhªé@õÿÿÿ%rJh«é0õÿÿÿ%jJh¬é õÿÿÿ%bJh­éõÿÿÿ%ZJh®éõÿÿÿ%RJh¯éðôÿÿÿ%JJh°éàôÿÿÿ%BJh±éÐôÿÿÿ%:Jh²éÀôÿÿÿ%2Jh³é°ôÿÿÿ%*Jh´é ôÿÿÿ%"Jhµé�ôÿÿÿ%Jh¶é€ôÿÿÿ%Jh·épôÿÿÿ% Jh¸é`ôÿÿÿ%Jh¹éPôÿÿÿ%úIhºé@ôÿÿÿ%òIh»é0ôÿÿÿ%êIh¼é ôÿÿÿ%âIh½éôÿÿÿ%ÚIh¾éôÿÿÿ%ÒIh¿éðóÿÿÿ%ÊIhÀéàóÿÿÿ%ÂIhÁéÐóÿÿÿ%ºIhÂéÀóÿÿÿ%²IhÃé°óÿÿÿ%ªIhÄé óÿÿÿ%¢IhÅé�óÿÿÿ%šIhÆé€óÿÿÿ%’IhÇépóÿÿÿ%ŠIhÈé`óÿÿÿ%‚IhÉéPóÿÿÿ%zIhÊé@óÿÿÿ%rIhËé0óÿÿÿ%jIhÌé óÿÿÿ%bIhÍéóÿÿÿ%ZIhÎéóÿÿÿ%RIhÏéðòÿÿÿ%JIhÐéàòÿÿÿ%BIhÑéÐòÿÿÿ%:IhÒéÀòÿÿÿ%2IhÓé°òÿÿÿ%*IhÔé òÿÿÿ%"IhÕé�òÿÿÿ%IhÖé€òÿÿÿ%Ih×épòÿÿÿ% IhØé`òÿÿÿ%IhÙéPòÿÿÿ%úHhÚé@òÿÿÿ%òHhÛé0òÿÿÿ%êHhÜé òÿÿÿ%âHhÝéòÿÿÿ%ÚHhÞéòÿÿÿ%ÒHhßéðñÿÿÿ%ÊHhàéàñÿÿÿ%ÂHháéÐñÿÿÿ%ºHhâéÀñÿÿÿ%²Hhãé°ñÿÿÿ%ªHhäé ñÿÿÿ%¢Hhåé�ñÿÿÿ%šHhæé€ñÿÿÿ%’Hhçépñÿÿÿ%ŠHhèé`ñÿÿÿ%‚HhééPñÿÿÿ%zHhêé@ñÿÿÿ%rHhëé0ñÿÿÿ%jHhìé ñÿÿÿ%bHhíéñÿÿÿ%ZHhîéñÿÿÿ%RHhïéððÿÿÿ%JHhðéàðÿÿÿ%BHhñéÐðÿÿÿ%:HhòéÀðÿÿÿ%2Hhóé°ðÿÿÿ%*Hhôé ðÿÿÿ%"Hhõé�ðÿÿÿ%Hhöé€ðÿÿÿ%Hh÷épðÿÿÿ% Hhøé`ðÿÿÿ%HhùéPðÿÿÿ%úGhúé@ðÿÿÿ%òGhûé0ðÿÿÿ%êGhüé ðÿÿÿ%âGhýéðÿÿÿ%ÚGhþéðÿÿÿ%ÒGhÿéðïÿÿÿ%ÊGhéàïÿÿÿ%ÂGhéÐïÿÿÿ%ºGhéÀïÿÿÿ%²Ghé°ïÿÿÿ%ªGhé ïÿÿÿ%²>f�ÿ%Ú>f�ÿ%ê>f�ÿ%"?f�ÿ%"?f�H‹ é>HƒÃ¶ˆSÿéõx1ÿºH�5 ˆè&óÿÿH‰Ç1À茎éªy¸H‹=ëdH�41Ò1ÀèNôÿÿ1Ò‰î1ÉH‰Ç¶Nb‰Ãƒà÷ˆCbÀëè›cƒãH‰Â¶.bÁãƒà÷ ؈ bH‰ÐZ[]øë …)eH�=šbèÐýÿÿé'eM‹M…ÿ„ƒcI‹?1ÒL‰æèôÿÿ…Àuâ€=buM‹gM…ä…\c1ÛéXdI‹H�5ÕAI‹_H‰ÇH‰$èöøÿÿºH…Àt)H…Ûtl1ÿH�56‡è)òÿÿH‹ $H‰ÚL‰æH‰Ç1ÀèrÐëŸH…Ût#1ÿH�5u‡èòÿÿH‰ÚL‰æH‰Ç1ÀèMÐéwÿÿÿ1ÿH�5eAèÝñÿÿL‰æH‰Ç1Àè-ÐéWÿÿÿ1ÿH�5‡è½ñÿÿH‹$L‰æH‰Ç1Àè Ðé3ÿÿÿH‹ ^H‰Ï€ ¶^H�H÷ÒH!ÐH‹]^H‰ÆH)ÖH)×H9÷ƒÙbé-dKéHcf�K`Ké9cA€|$„bc€K`I�D$éTc€ U^H‰Ëé)d1ÿºH�5¯†èñÿÿL‰æH‰Ç1Àè}Œé°eL‹#M…ätiM;|$XubA‹„$¼D9脺e…Àx„Ò…®eI‹$H…Àt?L;xXu9I‰ÄëÏL‹ ØéÈd1ÿºH�5>†è©ðÿÿL‰þH‰Ç1Àè Œé?eI‰Ü…í…˜dé/e1Òé^fº1ÿH�5R…èmðÿÿZH‰Ç1ÀéÒ‹P¾ H�=­FÆö[gè)yºH¸ÿÿÿ¿øÿÈH#c`HÁ†ˆ_ H Ѐ V`ƉaÆ™aH‰9`ZÃ…ít ‰-}[éyºH�5¤…1ÿèåïÿÿZH‰Þ[H‰Ç]1ÀéE‹H‰ÏL‰D$XH‰L$PèóïÿÿH‰ßH‰D$HèæïÿÿL‹D$XH‹L$PH‰Å¾-aL‰D$PˆD$8‰D$@H‰ÎH‰êH‰ßH‰L$XèòìÿÿH‹L$X…Àu¶)„À„~:D$8„y‹t$@H‰ÏèçïÿÿH‰ÁH…À„õHƒÁë°H‹:¨t ‹\$, \$t-H‹ e`H…Éu?H‰Y`ƒ|$…ù|€ @_éí|H‹:H‹H…Ûu/H‹|$pèeûÿÿ¶_éjH‰úH‰ÖH‹H…ÒuõH‹H‰H‰9ë¯è;ûÿÿH‰ßë¿÷ÐH�-üO¨„º1ÿºH�5�è¢îÿÿH‰îH‰Ç1ÀèŠé:lHcD$1ÿºH�55�I‹,ÇètîÿÿH‰ÇH‰î1Àè׉éýk€%Ž^ïéhgH‹D$HL‹D$PH�|(L‰D$8è½úÿÿL‹D$8¾ ¼_H�5­?H‹^H‰ÇH‰Å1ÀM‹ècøÿÿH‹=^èwúÿÿH‰-ø]é gH�-«=é:ÿÿÿéüfé÷fÆž]éëfL‹J9I‹H‰X_éÕfA‰îéSmH‰îH�=aŸ1Àè‰éƒzHƒÆéÆzB€|5þ tJMöH‰ïH‰L$HL‰öè�îÿÿH‹L$HH‰ÅHÁé´y‹\$@H9Í…ôyA‰ÞH‰ïèÉùÿÿH‹|$8èïìÿÿé\f‹\$@éÑyI‹(1ÿºH�5È¡è+íÿÿH‰ÇH‰î1À莈é+fL‹Š8¾=I‹8L‰D$8è�íÿÿL‹D$8H…ÀH‰ÅtzH‰êI+L‰D$@H�zH‰T$8èZùÿÿH‹T$8L‹D$@H‰ÇH‰D$8I‹0H‰Ñó¤ÆH‰ÇH�uè°˜H‹|$8èùÿÿé³eHƒÂé“yH‰îH�=>ž1Àè÷‡é`yHƒÇé6yºH�5Ež1ÿèfìÿÿH‰Ç1Àè̇L‹D$8é_ÿÿÿƒ|$(tè ƒl$(éNeè÷™ƒD$(é?e1ÿºH�5—�èìÿÿH‰Ç1À耇ëÃH‹T$0H�‚ÌÿÿH‰ÓH‰D$8HcD$I‹,ǃ»È3u"H‹³À3H…öt‹»ø3Hïè¾ïÿÿ…À„ÇHƒë@H9\$8uÊH�5š;1ÿºè¨ëÿÿH‰îH‰Ç1Àè ‡1ÿºH�5õ�èˆëÿÿH‰Ç1Àèî†é‹dL‹ê6H‰L$8ºIƒ8„Â1ÿH�55�èPëÿÿH‹L$8H‰Ç1ÀH‰ÊH‰Î諆édH‹?ZH‹€°H…Àt.‰ïÿЄÀ…)dé„eL‰þD‰÷ÿÐA‹$‰\$„À…:cé`cébeD9ñs6H‹rH‹H6¶6öpt"HƒÂénbH‹”$ˆMcÒBÆ:D�Wé¾aH�d:HƒÂH‰BøA9Ît'éH‰ßè{íÿÿ…À„2d¾%H‰ßèêÿÿH…À…H�´$�H‰ßèÝíÿÿ…Àˆ½‹„$¨%ð=@tX=€„æcºH�5ƒœ1ÿè$éÿÿH‰Ç1À芄1ÉH‰ ¡Zé»c1ÿºH�5f›èùèÿÿH‰Ç1Àè_„éüaH‰ßèéÿÿH‹=CD¶\ÿèAìÿÿH�XH‰Á€û/tZH‹5KZH�=J;1Àè}$H…À„ScH‰-ZéGcè³åÿÿƒ8„9c1ÿºH�5¬›èwèÿÿH‰Ç1Àè݃écH�seë�€xÆH� í:tH�HH‹¬CH‹5ÍYH�=Å:1Àèÿ#ë€H�5›º1ÿèèÿÿH‰Ç1À考1öH‰5—Yé±bH�}éVa1ÿºH�569èæçÿÿ1ÿºH�5/9H‰SèÌçÿÿH‰Ç1Àè2ƒéÏ`¶èWƒàüƒÈˆÜWé·`¿è{zÆ�Zé¡`L‹3I‹€8tAH‰iWé†`H‹=}WH…ÿu\¿1íèÜóÿÿL‹Í2H‰^WI‹H‰hH‰éQ`H‹(WH…Òt³€:t®1ÿºH�5è–èçÿÿH‰Ç1Àè�‚é`1ÀH‰ÅHƒÀHƒ|ÇøuñƒÅ1ÛHcíHÁåH‰îèççÿÿL‹X2H‰éVI‹H‰\(øH‰T(ðéÙ_L‹82I‹8èh|ÇRVèÉ�é¶_L‹2I‹8蕪é¢_L‹2H�5ƒFI‹(H‰ïègêÿÿ…ÀuV€%ÌUßéy_L‹Ø1H�5®8I‹(L‰D$8H‰ïèÙ„Àt L‹D$8HƒÅI‰(H‹|$ èŸòÿÿH‰ïèGèÿÿH‰D$ é/_H�5Î5H‰ïèþéÿÿ…Àu € cU é_H�5V9H‰ïèßéÿÿ…Àtá1ÿºH�5}|èØåÿÿH‰îH‰Ç1Àè;�éØ^Æ�UéÌ^Ç”Ué½^Ç…Ué®^L‹ 1I‹8è­çÿÿH‰^Ué“^¿ E1ÿèTâÿÿéôe€%˜U÷éu^Aƒ|$t¿ AƒÇè-âÿÿºL‰ö1ÿè>åÿÿH�=XH‰Æ1ÀèÍåÿÿºL‰ö1ÿèåÿÿH‰ÇèFåÿÿAǸé�dL‹z0H�5S7I‹(H‰ïèàáÿÿ…À„¬H�5?7H‰ïèÉáÿÿ…À„†H�5kSH‰ïè²áÿÿ…À…MÇ(Vé½]L‹0I‹H‰¢Té§]L‹0I‹8è&jé“]f�%®Tþé…]€%£Tïéy]€ —Tém]€ ‹T éa]¶TƒàóƒÈˆsTéI]ƘOé=]ÆŒOé1]º1ÿH�5‘�è äÿÿH‰ïH‰Æ1Àè?èÿÿ1ÿºH�5É�èìãÿÿH‰ïH‰Æ1Àèèÿÿé¢n1ÿºH�5´�èÇãÿÿH‰ïH‰Æ1Àèúçÿÿé0n€ æSé»\¶ÖSƒàŸƒÈ ˆÊSé£\€%½Sûé—\€ ±Sé‹\€ ¢Sé\H�5É5H‰ïèNàÿÿ…Àu-ÇÈTé]\ǹTéN\E1ÀD‰ªTé?\1ÿºH�5¯•èãÿÿH‰Ç1Àè€~é\L‹|.H�=-SI‹0èÌFé\H‹=ÉT€?u)1ÿèmëÿÿƶRéã[L‹B.I‹H‰àRéÍ[è¦àÿÿëÐÆŽRéº[€ ×Ré®[L‹ .I‹H‰×H‰T$8èEx¿èKUH‹|$8H‰ÅH‹¤MH‰Eè“íÿÿH‰EH‰-�Mée[H�5‰VH�=î41ÀèÞâÿÿ¸én€ dRé:[L‹™-H�5…4I‹(H‰ïèÿåÿÿ…Àu$ÆÊSé[ƽSé[ƒLMéùZH�5^4H‰ïèÈåÿÿ…Àu Æ“SéÚZ1ÿºH�5‚”èµáÿÿH‰îH‰Ç1Àè}éµZ·ÒQf%þ€Ìf‰ÄQé›Z€%¹Qýé�Z·¬Qf%þ €f‰ŸQévZL‹Õ,¾=I‹8L‰D$8èÛáÿÿL‹D$8H…ÀH‰Á„I‹H�i€8„¶€y„¬H‰êI+L‰D$HLcÊH‰T$8L‰ÏL‰L$@è€íÿÿH‹T$8L‹D$HH‰ÇL‹L$@H‰D$8ƒêI‹0Hcʺó¤BÆDÿH�´$�H‰ïèƒÝÿÿH‰ÃH‹„$�€8…gH‰ßèwzH‹|$81ÒH‰ÆèŽé¥Y€ ÄPé™YL‹ø+‹ŠRH�5š0I‹8�P‰wRètÇüOès{é`Y€ wP€ÆPéMYL‹¬+I‹H‰ÊQé7Y€ WPé+Y€ JP€éYÆÊQéYƾQéYƱQéûXÆ¥QéïXƸOéãXÆ¡Oé×X€%O¿éËX€ O@é¿X€ Oé³X€%ÊOßé§X€ ¾O é›XÆTOé�XL‹î*Hƒ=ÞOI‹(u.¿(èßëÿÿ¹=ºH‹5¦*H‰ÇH‰´OèŸâÿÿ„ÀtDH‹=¤O¹ºH‰îèâãÿÿH…À…+X1ÿºH�5[�èßÿÿH‰Ç1Àèlzé X1ÿºH�5!ŽèäÞÿÿH‰Ç1ÀèJzë�L‹I*I‹8H…ÿu3HÇnPéËWL‹**I‹8H…ÿt)1Ò1öèÑÚÿÿ‰CPé¨W1Ò1öèMÛÿÿH‰6Pé“WÇP€é„WÆèOéxWÆÕOélWÆÏOé`WÆÅOéTWƹOéHWÆ£OéH‹f"A¶ÖA¶ÆöS@„H‹|$@èÒâÿÿA‰Æëß¶Gƒà?ƒÈ@ˆûFé×OÇGéÈO1ÿºH�5°…è£ÖÿÿH‰Ç1Àè réÿÿÿ¿èjØÿÿH‰îH�= (1Àèéqé†O1ÿºH�5ž…èaÖÿÿH‰Ç1ÀèÇqéÿÿÿÆ HéXOL‹·!H‹=8FI‹H…ÿ…H‰×èDØÿÿH‰Fé*OL‹‰!H�5u/I‹(H‰ïèïÙÿÿ…À„›H�5¼FH‰ïèØÙÿÿ…À…_Ç:AéãNAƒþÿ…z€=ñE?D‹t$HL‹|$Pw,H‹|$8èâÿÿ¶ÔEH‹|$@ƒà?ƒÈ€ˆÃEè-ÕÿÿéšN1ÿºH�5 …èuÕÿÿH‰Ç1ÀèÛpëµL‹Ú I‹(H…í„ÆH�5'H‰ïè7Ùÿÿ…À„¯H�5'H‰ïè Ùÿÿ…ÀuwÇ¢Fé/NL‰D$@H‰T$8è>ÕÿÿH‹|$8H‰Åè1ÕÿÿH�|èwáÿÿL‹D$@¾ vFH�5g&H‹ÝDH‰ÇH‰Å1ÀM‹èßÿÿH‹=ÆDè1áÿÿH‰-ºDéÇM1ÿºH�5¯„è¢ÔÿÿH‰îH‰Ç1Àèpé¢MÇFé“M1ÿºH�5³„ènÔÿÿH‰îH‰Ç1ÀèÑoénMǶ?é_ME1ÿH‰ßL‰ûI‰ïH‰ýH‹|$8H� öDE@… Aƒþÿ„–HƒÃDˆ1L9ûƒH‹|$@èößÿÿA‰Æ¶ÀëÀE1ÒD‰߯õ@ÆÚ@éwH€ �?ÀékH€ …? é_HfÇÂ@éQH1ÿèbÆ*Bé>HL‹�I‹8èÝdé*H1ÿºH�5rƒèÏÿÿH‰Ç1ÀèkjépJH‹\$ ¾:H‰ßètÏÿÿH‰ÅH…Àt=Æ€;uXH�]ëÝÇD$,éÓG1ÿºH�5ë‚è®ÎÿÿH‰Ç1Àèjé J€;uH‹|$ èÛÿÿébI¾H‰ßèÎeëâ¾H‰ßè¿eë™¶—>ƒà?ƒÈ@ˆ‹>¶…>¨…ÚIƒÈˆt>éÌI1ÿºH�5äè*ÎÿÿH‰Ç1Àè�ié-G1ÿºH�5å|èÎÿÿH�5@/H‰Ç1Àègié5Kư?éøFI‹AH9EuOº1ÿH�5þèÉÍÿÿH‰ÞH‰Ç1Àè,iH‰ïè$ÚÿÿéÁF1ÿºH�59èœÍÿÿH‰Ç1ÀèiéŸFM‹ éJ1ÿºH�5O|èrÍÿÿH�5"H‰Ç1ÀèÑhé=J€ Œ=€ébFH‹:H…ÿ„H‹è¬ÙÿÿH‰ßëêL‹¨1Ò1öI‹8èTÉÿÿH…À„¶H‰Ì>é!FÆÞ<éFÆÒ<é F€%'=éýEL‰L$@èaÉÿÿºH�5u\1ÿH‰D$8èÉÌÿÿH‹T$8H‰ÞH‰Ç1Àè'hL‹L$@é>I€ Ö<@é³E¿èÙÿÿH‰ïH‰D$8èªÎÿÿH‹T$8ó~½7fHnÈflÁH‰­7éwE1ÿºH�5�~èRÌÿÿH‰Ç1Àè¸géUEH‹=t=è§Øÿÿ1ÀH‰f=¶W<éâJé/EAUI‰õATI‰ÌUHcïSH�uHcÚPI‹}HƒÃHÁãèõÌÿÿ‹@hH‰ÞI‰E‰(Š4hˆT(I‹<$èÒÌÿÿH�5«¹ˆI‰$H�„àýÿÿH‰Çó¥Z[]A\A]À Ù;@éE]HƒÃ H�58'H‰ßè~Ïÿÿ…Àu61ÀH‰�7é ]HƒÃH�5'H‰ßèYÏÿÿ…À…¢1Ò‰]7éø\H�5â9H‰ßè5Ïÿÿ…ÀuH‹bhH‰37éÒ\H�5È9H‰ßèÏÿÿ…ÀuH‹DhH‰ 7é¬\1ÿºH�5²‚èõÊÿÿH‰ÞH‰Ç1ÀèXfé‡\HƒÃH�5z&H‰ßèÀÎÿÿ…Àuv1ɉ Ä6éc\H�5M9H‰ßè Îÿÿ…ÀuǦ6éA\H�579H‰ßè~Îÿÿ…ÀuÇ„6é\1ÿºH�5í�èhÊÿÿH‰ÞH‰Ç1ÀèËeéú[H�5ä8H‰ßè7Îÿÿ…ÀuÇ96éØ[H�5Î8H‰ßèÎÿÿ…ÀuÇ6é¶[1ÿºH�5L�èÿÉÿÿH‰ÞH‰Ç1Àèbeé‘[1ÿºH�5—€èÚÉÿÿH‰ÞH‰Ç1Àè=eél[1ö‰5¸5é_[H‹m1ÿºH�5‘€è¤ÉÿÿH‰ÇH‰î1Àèeéî_1ÿºH�5”€èÉÿÿH‰ÞH‰Ç1Àèâdé[L�c H�5L‰çèJÍÿÿ…À„âH�5L‰çè3Íÿÿ…À„¸ºH�5ôL‰çè—Æÿÿ…ÀuT1ÒH�t$H�{èCÅÿÿˆ5H‹D$€8t(H‹]H�51ÿºèìÈÿÿHƒÃH‰Ç1ÀH‰ÞèKd€%Ä4¿ésZºH�5�L‰çè+Æÿÿ…À…î1ÒH�t$H�{èÓÄÿÿˆ¥4H‹D$€8…�€ x4@é'Z€ l4@Æ}4�éZ€%Y4¿Æj4géZ€%Š8ýéõY€=ú7…V€ -4€ésV€ e8éÐYH‹�H�=.3H‹0èxéµY1ÒH�t$H�{è1ÄÿÿH‹T$H‰ 9€:u!H�PÿH…Âu€ 8éY€ 8ésYH‹]1ÿºH�5Õ|è¸ÇÿÿHƒÃH‰Ç1ÀH‰Þècë¾¶Ð7ƒà?ƒÈ@ˆÄ7é1Y¶¸7ƒà?ƒÈ€ˆ¬7éYÇ{8é YH� [8éúX€%ˆ7ýéîX€ |7éâX¶m7ƒàŸƒÈ@ˆa7éÊX¶U7ƒàŸƒÈ ˆI7é²X1ÒH�t$H�{ è.ÃÿÿH‹T$H‰27€:uYH…ÀxTHƒ= 7…~XHÇ7ÿÿÿÿénX1ÒH�t$H�{èêÂÿÿH‹T$H‰Î7€:u?H�PÿH…Âu6€ Ò6é8XH‹]1ÿºH�5ê{è}ÆÿÿHƒÃ H‰Ç1ÀH‰ÞèÜaë‚H‹]1ÿºH�5˜{èSÆÿÿHƒÃH‰Ç1ÀH‰Þè²aë Hƒ @7é×Wóo#7fë“c7é»Wóo7fÛgcø6éŸWóoë6fë;cÜ6éƒWH� Ô6ésWHƒ Ç6@éfWHƒ º6éYWH� ª6éIWHƒ �6é½ÿÿ…ÀtH�5·H‰ßè+½ÿÿ…Àt`H�5±H‰ßè½ÿÿ…ÀtAH�5œH‰ßè½ÿÿ…Àu€%=)é�G€ 1)@éƒGH‰ÞH�=…1Àè(UémG€ )€éaG€%¡$ûéUG€ •$éIGHƒÃH�5VH‰ß蜼ÿÿ…À„KH�5 H‰ßè…¼ÿÿ…À„%H�5§H‰ßèn¼ÿÿ…À…*ÇD$éñFH�{H�t$º è„´ÿÿH‰ÃH‹D$€8…�Cþƒø‡ ‰$é¶FÇö#é§F€ ç#é›FHƒÃ H�5¨H‰ßèî»ÿÿ…À„�H�5„&H‰ßè×»ÿÿ…Àt_H�5}&H‰ßèÄ»ÿÿ…Àu'Ç¢#éKF€ Š#é?F€ ~#é3F1ÿºH�5Snè–·ÿÿH‰ÞH‰Ç1ÀèùRéFÇV# éÿE1ÿ‰=I#éòEÇ6#éãE1ö‰5)#éÖEH�5x H‰ßè-»ÿÿ…Àu8Ç#é´EH‹m1ÿºH�5nè·ÿÿH‰ÇH‰î1ÀèvRéÊþÿÿ1ÿºH�5nèî¶ÿÿH‰ÞH‰Ç1ÀèQRéfE€ ¥"éZEL�c H�5s L‰çè­ºÿÿ…À„ H�5h L‰çè–ºÿÿ…À„öºH�5W L‰çèú³ÿÿ…À„®ºH�5C L‰çèÞ³ÿÿ…Àuq1ÒH�t$H�{芲ÿÿˆ<"H‹D$€8u'€ "@éÈD€ " é¼DE1ÀD‰ü&é­DH‹]1ÿºH�5ilè ¶ÿÿHƒÃH‰Ç1ÀH‰ÞèkQë¯1ÿºH�5{lèæµÿÿH‰ÞH‰Ç1ÀèIQé^D1ÒH�t$H�{èô±ÿÿˆ¦!H‹D$€8u2€%}!¿é2D€ q!@Æ‚!�éD€%^!¿Æo!gé DH‹]1ÿºH�5�kèkµÿÿHƒÃH‰Ç1ÀH‰ÞèÊPë¤Ç"&éÓCE1ÉD‰ #&éÄCÇ&éµCE1ÒD‰ñ%é¦C€%I%ŸéšC¶=%ƒàŸƒÈ@ˆ1%é‚C¶#%ƒàóƒÈˆ%éjC¶ %ƒàóƒÈˆÿ$éRC€%õ$þéFC€ é$é:C€ z éÏ?€=M$…Â?€ ` €é¶?€ 5 éŠC€=($…}C€  €éqC€%“$ýéÄF€ ‡$é¸FH‹¿ÿH‹;è�ºÿÿH‹‰þ%ƒø…—F1ÿºH�5ßhè´ÿÿH‰ÞH‰Ç1Àè}OérFH‹yÿH�=òH‹0èòcéWF€ $@éKF€%$¿é?FH‹FÿH‹8èvHé+FH‹=âE1äè"ÀÿÿH‹#ÿL‰%ÌH‹H…ÛuNH�DH‰H‰ß誵ÿÿH‰«éèE¶©#ƒà?ƒÈ@ˆ�#éÐE¶‘#ƒà?ƒÈ€ˆ…#é¸EH�5éH‰ßè/·ÿÿ…Àu©é E€ e#é”EH‹›þH�= H‹0ècéyE¶<#ƒàçƒÈˆ0#éaE·"#Hƒ è#f%?üf €f‰ #é>E€ # é2E€%ö"ßé&EH‹-þ·â"H�5[H‹(f�ãþf‰Ì"H‰ï耶ÿÿ…Àu€ ¹"€éêD€%­"çéÞDH�5kH‰ïèU¶ÿÿ…Àug€ �"é¿DH‹=n1íè·¾ÿÿH‰-`H‹-±ýH‹}H…ÿ„–DèW²ÿÿH…À„ˆDH�x蕾ÿÿH‹}H‰ÃH‰Æè¦\H‰édDH�5¬H‰ïèÛµÿÿ…Àuf�Ë€f‰"é@D1ÿºH�5ÀfèñÿÿH‰îH‰Ç1Àè&MéD1ÒH�t$H�{èÑ­ÿÿH‹T$H‰­"€:usH�PÿH…Âuj€ ¹!éåC1ÒH�t$H�{è›­ÿÿH‹T$H‰"€:u H�PÿH…Ât(H‹]H�5†f1ÿºè:±ÿÿHƒÃH‰Ç1ÀH‰Þè™L€ [!é‡CH‹]1ÿºH�5#fè±ÿÿHƒÃH‰Ç1ÀH‰ÞèeLéiÿÿÿ1ÒH�t$H�{ è­ÿÿH‹T$H‰!€:uH…Ày(H‹]H�5'f1ÿºè³°ÿÿHƒÃ H‰Ç1ÀH‰ÞèLHƒ=Ú …þBHÇÉ ÿÿÿÿéîB¶³ ƒàŸƒÈ ˆ§ éÖB¶› ƒàŸƒÈ@ˆ� é¾B€%† ýé²BH� =!é¢B€ j é–BÇ2!é‡B1Û‰%!ézBH�5RH‰ßèñ³ÿÿ…ÀuE1ÛD‰!éXBÆq!éLBH�5ceH‰ßèóÿÿ…ÀuÇÙ é*BH�5 H‰ß衳ÿÿ…ÀuÇ· éBH�5?eH‰ßè³ÿÿ…ÀuÇ• éæA1ÿºH�56eèi¯ÿÿH‰ÞH‰Ç1ÀèÌJéÁAÆÚ éµAHƒ C é¨AHƒ 6  é›AH� & é‹AHƒ  é~AH� énAHƒ üéaAHƒ ï@éTAH� ßéDAóoÊfëL»é(Aóo®fÛLŸé Aóo’fëLƒéð@Hƒ †éã@Hƒ%yþéÖ@€ šéÊ@€%Ž÷é¾@Ç2é¯@€ ré£@H�5UH‰ßè²ÿÿ…À„H�5<H‰ßè²ÿÿ…À„÷H�5T H‰ßèì±ÿÿ…À„ÈH�5H‰ßèÕ±ÿÿ…À„™H�5øýH‰ßè¾±ÿÿ…À„jH�5ùH‰ßè§±ÿÿ…À„GH�5éH‰ßè�±ÿÿ…À„0H�5ÚH‰ßèy±ÿÿ…À„ H�5ÝH‰ßèb±ÿÿ…À„äH�5ÄH‰ßèK±ÿÿ…À„¾H�5îH‰ßè4±ÿÿ…À„˜H�5¯H‰ßè±ÿÿ…À„rº H�5½H‰ßè�ªÿÿ…À„ÿH�5×H‰ßèê°ÿÿ…À„ÜH�5ÇH‰ßèÓ°ÿÿ…À„¹H�5´H‰ßè¼°ÿÿ…À„Uº H�5žH‰ßè ªÿÿ…À„íH�5“H‰ß艰ÿÿ…À„ÊH�5’H‰ßèr°ÿÿ…À„¤ºH�5†H‰ßèÖ©ÿÿ…À„̺H�5sH‰ß躩ÿÿ…Àt`H�5ÀH‰ßè'°ÿÿ…ÀtAH�5«H‰ßè°ÿÿ…Àu€%Lé~>€ @@ér>H‰ÞH�=”1Àè7Hé\>€ €éP>HƒÃH�5}H‰ßèïÿÿ…À„èH�51H‰ß謯ÿÿ…À„ÂH�5ÎH‰ß蕯ÿÿ…ÀuBÇOéü=H�{H�t$º 诧ÿÿH‰ÃH‹D$€8u5�Cþƒøw-‰éÉ=H�5‹H‰ßè@¯ÿÿ…Àu5Çúé§=H‹m1ÿºH�5bè&«ÿÿH‰ÇH‰î1Àè‰Fë­1ÿºH�5bè«ÿÿH‰ÞH‰Ç1ÀègFé\=Ç éM=1ö‰5“é@=Ç€é1=€ qé%=HƒÃ H�5RH‰ß蘮ÿÿ…ÀtuH�52H‰ßè…®ÿÿ…ÀtSH�5+H‰ßèr®ÿÿ…ÀuÇ0éÙ<€ éÍ<1ÿºH�5 aèPªÿÿH‰ÞH‰Ç1Àè³Eé¨<Çð é™<1ÿ‰=ãéŒ<€ Ëé€<€ ¿ét<L�c H�5­þL‰çèç­ÿÿ…À„)H�5¢þL‰çèЭÿÿ…À„°ºH�5‘þL‰çè4§ÿÿ…ÀuT1ÒH�t$H�{èà¥ÿÿˆrH‹D$€8t(H‹]H�5µ_1ÿº艩ÿÿHƒÃH‰Ç1ÀH‰ÞèèD€%!¿éÖ;ºH�5-þL‰çèȦÿÿ…Àui1ÒH�t$H�{èt¥ÿÿˆH‹D$€8u€ Ý@é’;€ Ñ@Æâ�é;H‹]1ÿºH�5[_èþ¨ÿÿHƒÃH‰Ç1ÀH‰Þè]Dë·1ÿºH�5m_èØ¨ÿÿH‰ÞH‰Ç1Àè;Dé0;€%o¿Æ€gé;E1ÀD‰}é;Çnéÿ:E1ÉD‰ oéð:Ç`éá:E1ÒD‰=éÒ:€%•ŸéÆ:¶‰ƒàŸƒÈ@ˆ}é®:¶oƒàóƒÈˆcé–:¶WƒàóƒÈˆKé~:€%Aþér:€ 5éf:USHƒìƒÿz„±&1ÀƒÿP…G H‹QóH�=²H‹0èÊWéË1À�ÿƒ� �ÿx~�ïzƒÿ ‡cH�‰CHcºHÐÿà�ÿA„ß �å �ÿ@„Á �ÿ/t�ÿ0…Å H‹ÏòH‹8èÿ;ëSH‹=nè±³ÿÿH‹²òE1ÉL‰ XH‹H…Ûu H�ÐùH‰ëH�5·H‰ßèýªÿÿ…ÀtH‰ßè!©ÿÿH‰"°éZ H‹= èW³ÿÿH‹-XòE1ÀL‰öH‹}H…ÿtÓèø¦ÿÿH…ÀtÉH�xè:³ÿÿH‹}H‰ÃH‰ÆèKQH‰Äë¨H‹òH‹;èã¬ÿÿH‹ºH�5D[‰Fƒø…{ÿÿÿé� € �éjÿÿÿ€%‘ýé^ÿÿÿH‹ÉñH�=2H‹0èBVéCÿÿÿ€%kßé7ÿÿÿ€ _ é+ÿÿÿŠSƒàçƒÈˆGéÿÿÿ€%;çéÿÿÿf‹-Hƒ óf%?üf €f‰éåþÿÿH‹Pñ‹H�5øH‹(f�ãþf‰ðH‰ï褩ÿÿ…Àu € Ý€éªþÿÿH�5›ûH‰ïè…©ÿÿ…Àu € ¿é‹þÿÿH�57øH‰ïèf©ÿÿ…Àuf�Ë€f‰šégþÿÿ1ÿºH�5KZèN¥ÿÿH‰îH‰Ç1Àè±@éBþÿÿH‹-­ðH�5oH‹]H‰ßè©ÿÿ…ÀuŠJƒà?ƒÈ€ˆ>é þÿÿH�5¾÷H‰ßèè¨ÿÿ…ÀuŠ ƒà?ƒÈ@ˆéãýÿÿH�5›÷H‰ß辨ÿÿ…Àu € ùéÄýÿÿH�5„÷H‰ßè?>„Àt^1ÒH�t$H�{èË ÿÿH‹T$H‰§€:u H�PÿH…Ât(H‹]H�5ŽY1ÿºèj¤ÿÿHƒÃH‰Ç1ÀH‰ÞèÉ?€ ‹éSýÿÿH�5"÷H‰ßèÎ=„Àt^1ÒH�t$H�{èZ ÿÿH‹T$H‰>€:u H�PÿH…Ât(H‹]H�5EY1ÿºèù£ÿÿHƒÃH‰Ç1ÀH‰ÞèX?€ éâüÿÿH�5ÃöH‰ßè]=„Àtl1ÒH�t$H�{ èéŸÿÿH‹T$H‰í€:uH…Ày(H‹]H�5Y1ÿº茣ÿÿHƒÃ H‰Ç1ÀH‰Þèë>Hƒ=³…süÿÿHÇ¢ÿÿÿÿécüÿÿH�5WH‰ßè>§ÿÿ…ÀuŠzƒàŸƒÈ ˆné9üÿÿH�5&öH‰ßè§ÿÿ…ÀuŠPƒàŸƒÈ@ˆDéüÿÿH�5 öH‰ßèê¦ÿÿ…Àu € (éðûÿÿH�5éõH‰ßè˦ÿÿ…Àu €% ýéÑûÿÿH�5ÚõH‰ß謦ÿÿ…ÀuH� ­é®ûÿÿH�5ÅõH‰ßè)<„ÀtÇ›éŒûÿÿH�5¡õH‰ßè<„Àt 1ÿ‰={élûÿÿH�5‘õH‰ßèç;„À„—H�5‘õH‰ßè0¦ÿÿ…Àu 1ö‰5Hé5ûÿÿH�5°WH‰ßè¦ÿÿ…ÀuÇ&éûÿÿH�5mõH‰ßèî¥ÿÿ…ÀuÇéñúÿÿH�5ŒWH‰ßèÌ¥ÿÿ…ÀuÇâéÏúÿÿºH�5…WéØH�57õH‰ß虥ÿÿ…Àu Æ(éŸúÿÿH�5õH‰ßèz¥ÿÿ…Àu Æ é€úÿÿH�5õH‰ßè[¥ÿÿ…Àu Hƒ _é`úÿÿH�5îôH‰ßè;¥ÿÿ…Àu Hƒ ? é@úÿÿH�5ØôH‰ßè¥ÿÿ…ÀuH� éúÿÿH�5¿ôH‰ßèø¤ÿÿ…Àu Hƒ üéýùÿÿH�5¨ôH‰ßèØ¤ÿÿ…ÀuH� ÙéÚùÿÿH�5’ôH‰ß赤ÿÿ…Àu Hƒ ¹éºùÿÿH�5{ôH‰ß蕤ÿÿ…Àu Hƒ ™@éšùÿÿH�5dôH‰ßèu¤ÿÿ…ÀuH� véwùÿÿH�5,H‰ßèR¤ÿÿ…ÀuOV =AéJùÿÿH�5ôH‰ßè%¤ÿÿ…Àu"Tƒ=éùÿÿH�5óóH‰ßèø£ÿÿ…ÀuõVf=çéðøÿÿH�5ÏóH‰ßèË£ÿÿ…Àu Hƒ ×éÐøÿÿH�5­óH‰ßè«£ÿÿ…Àu Hƒ%·þé°øÿÿH�5˜óH‰ßè‹£ÿÿ…Àu € Å鑸ÿÿH�5wóH‰ßèl£ÿÿ…Àu €%¦÷érøÿÿH�5dóH‰ßèM£ÿÿ…ÀuÇ7éPøÿÿH�5PóH‰ßè+£ÿÿ…Àu € dé1øÿÿH�5/óH‰ßè £ÿÿ…Àu €%EûéøÿÿH�5 óH‰ßèí¢ÿÿ…Àu € %@éó÷ÿÿH�5ÿòH‰ßè΢ÿÿ…Àu €%¿éÔ÷ÿÿH�5êòH‰ß询ÿÿ…Àu € èéµ÷ÿÿH�5ÉòH‰ßè�¢ÿÿ…Àu €%Éþé–÷ÿÿH�5ÙüH‰ßèq¢ÿÿ…ÀuŠ©ƒàóƒÈˆ�él÷ÿÿH�5�òH‰ßèG¢ÿÿ…ÀuŠƒàóƒÈˆséB÷ÿÿH�5WîH‰ßè¢ÿÿ…ÀuŠWƒàŸƒÈ@ˆKé÷ÿÿH�5EòH‰ßèó¡ÿÿ…Àu €%,ŸéùöÿÿH�5-òH‰ßèÔ¡ÿÿ…ÀtáH�5"òH‰ßèÁ¡ÿÿ…Àu 1ɉ •éÆöÿÿH�5òH‰ßè¡¡ÿÿ…ÀuLJé¤öÿÿH�5øñH‰ßè¡ÿÿ…Àu 1Ò‰gé„öÿÿH�5H‰ßè_¡ÿÿ…ÀuÇ5éböÿÿH�5ÏñH‰ßè=¡ÿÿ…Àu 1À‰éBöÿÿº H�5ÔñH‰ß蘚ÿÿ…À…YH�k H�5ÃñH‰ïèý ÿÿ…Àu€%’¿Æ£géüõÿÿH�5©ñH‰ïè× ÿÿ…Àu€ l@Æ}�éÖõÿÿºH�5‰ñH‰ïè,šÿÿ…ÀuZ1ÒH�t$H�{èØ˜ÿÿˆJH‹D$€8t.H‹ èH�5ªR1ÿºH‹è{œÿÿHƒÃH‰Ç1ÀH‰ÞèÚ7€%ó¿édõÿÿºH�5ñH‰ï躙ÿÿ…ÀuZ1ÒH�t$H�{èf˜ÿÿˆØH‹D$€8t.H‹—çH�5pR1ÿºH‹è œÿÿHƒÃH‰Ç1ÀH‰Þèh7€ �@éòôÿÿºH�5pR1ÿèÙ›ÿÿH‰ÞH‰Ç1Àè<7éÍôÿÿH‰ÞH�=Sñ1Àèö7é·ôÿÿ€%ß ¿é«ôÿÿ€ Ó @éŸôÿÿHƒÄ[]À=S…V.éC.1ÿºH�59ñèm›ÿÿH‰Ç1ÀèÓ6é5/ƒ{uH‹{è˜ÿÿH‹é˜0H�p7¾:+H�=FêèöH‹= H�u1Ò1ÀèkœÿÿH‰CéÀ2ZH‰Ç[]éç_L‹c1ÿºH�5ýSèðšÿÿ‰êH‰ÇL‰æ1Àè>yé?4L‹-UM…í„M2H‹½õL‰(é/3H‹®õH‰é3H�s H‰ïè’žÿÿ…À…Û0ºH�5ÆS1ÿ臚ÿÿHƒÄH‰î[H‰Ç]1ÀA\A]A^éÞ51ÿºH�5ØSè[šÿÿH‰Ç1ÀèÁ5é1H‰ßè´¦ÿÿé“2H‹0õE1É¿L‰èœÿÿºH�5´SëŒH…Ût8H‹.é"3H‹ r¶cˆH‹H‰J‹ P‰JH‹éö2[ÃH‰Öé4YL‰ï[]A\A]A^A_ÿàH�5= H‰ï褖ÿÿ…À„Å4H�5¶ëH‰ïè�–ÿÿº…À„®4H�5#H‰ïèq–ÿÿº…À„’41ÿºH�5Îkèa™ÿÿH‰îH‰Ç1ÀèÄ4éh4AˆPÿD‰âé&4AÆI‰}éF4H‹oäH‹8èçžÿÿ¹H‰âH‰îH‹ÝäH�„$ðÇ$H‰D$H�D$ H‹;ÇD$0H‰D$èw9H‹;蟞ÿÿéñ5H�ƒBé]7H�?méQ7H�›ÂéE7H�÷ÂöÝ…17¶ÏH�ôì‰Ñ÷Ñ€á„7€âH�F „7H�H éú6H�Lòéî6H�õöI u8H¿H�tI¸H!×L9Ç„·6éÓ5H�Ôžé¦6é¡6H�KJé•6H�Ÿé‰6öëuH�Òét6H�~jéh6H�ué\6H�žséP6H�=ºp èuù€ ÎH‰Ðé¬1H�÷˾¯H�=2þèUýºH�5�þ1ÿL‰T$èv—ÿÿL‰çH‰Æ1Àè©›ÿÿL‹T$é‰<L‰æH‰ÇL‰T$è�˜ÿÿL‰ÿè·£ÿÿL‹T$ég<ºéY;€y$…Z:A�zÏL�IéM:€úx„‰¾ÐH�59þL‰ç1Àè?›ÿÿéÏ9‰èL‰çM�zHkÀH‹DpH‹pH‹HH‹L‹F H�5ÕýH‹H‹P1Àèaé”9‰èM�zHkÀH‹DpH‹P0H…Òt H‹’ðH…ÒuH‹xL‰æèÏ—ÿÿé_9öBI@uéH‹HH‹H�5rýL‰ç1À謚ÿÿé<9‰èM�zHkÀH‹DpH…Àu"ˆT$èZC¶T$H‰D$H‹’‰D$DH�D$@H‹xH…ÿ•Á€úSu „Ét‹HH‰úH�5&ýL‰ç1ÀèGšÿÿé×8€úU…Î8„É„Æ8L‰æè)—ÿÿé¹8öBI@…ï:H‹H‹H�5ÂüL‰ç1ÀL‰T$èþ™ÿÿL‹T$éÞ:‰èH�5ÃüL‰çƒÃHkÀ‹Tp1ÀèÖ™ÿÿéf8‰èH�5L‰çƒÃHkÀ‹Tp1Àè³™ÿÿéC8è)—ÿÿ‰Çè"ŸÿÿL‰æH‰Çè—–ÿÿé'8H‹=ê 1ÀH‰ñ 茡ÿÿH‹=Ý 1ÒH‰Ì èw¡ÿÿ1ÉH‰ Æ éÎ7H� H�5 üL‰ç1Àè!™ÿÿé{>H�5©ûL‰ç1Àè _ée>H‹L$8éR=H‹L$8éH=H‹L$8é>=H‹L$8é4=D‰ÇéÇ7H�çȾÌH�="ûèEúÆèé\7H�5NûL‰ç1À衘ÿÿé17A¶R€údu2‰èL‰T$H�5lûHkÀH‹TpL‰ç1ÀƒÃèn˜ÿÿL‹T$M�zéõ6€úu…ûüÿÿ‰èL‰T$H�55ûHkÀH‹TpëÃA€$…‘6�iÏM�Wé…6ºH�5ã$1ÿL‰T$èÏ“ÿÿH‰îH‰Ç1Àè2/L‹T$éV;H‹©H�5’úL‰ç1ÀL‰T$èÛ—ÿÿL‹T$é»8‰Ýé(6‰èL‰T$H�5HkÀH‹Tpé3ÿÿÿH‹L$8éú;H‰êH�5)úL‰ç1Àè�]ÆD$éÊ<1ÿºH�5¤úè3“ÿÿH‰îH‰Ç1Àèƒqé @H‰ïè©’ÿÿH‰ÇI‰Æè>“ÿÿH‰ÂHcÔ9Ð}Lð€8/t2L‰÷è`Ÿÿÿé¾?1ÿºH�5eúèØ’ÿÿH‰îH‰Ç1Àè(qé®?ÆH‹=”L‰ö褑ÿÿ…ÀA”Åë´ÇD$`+A¼³é¹/ÇD$`A¼·é¦/ÇD$`/A¼¶é“/ÇD$`*A¼µé€/ÇD$`-A¼´ém/€ fÿéZ4€ Zÿé�2èpM1É1Ò1ö1ÿA¼Šèíté8/èLI‹~ÈE1ÉE1ÀP1É1Ò1öjA¼‰jjèqPHƒÄ é/èCLD‹%ŒAƒü$ºH�5›ú1ÿèÑÿÿH�ÌH‰ÁIcÄH‰ ÂAƒÄD‰%WA¼„é¼.I‹~�H‹y1ÉH�5RúA¼�èÍ+H‰D$`é“.H‹T1ÉH�5-ú1ÿA¼€è¦+H‰D$`él.I‹~�H‹)1ÉH�5üùA¼è}+H‰D$`éC.ÆL‰æH�=Pù1ÀèßÌL‰þ¿JH‰D$è]LH‹|$1ÒH‰ÆèSH‰ÇèFML‰æH�=&ù1Àè¥ÌL‰þ¿GH‰D$è#LL‰þ¿JH‰D$(èLH‹T$(¿+H‰ÆèŸPH‹|$1ÒH‰ÆèÀRH‰ÇèèLL‰çA¼Pèêœÿÿé•-I‹v�I‹¿|A¼üè^PH‰D$`ét-L�øI‹~ÈM‹¾XÿÿÿL‰ÆL‰D$(H‰|$è ”ÿÿ…À„L�×÷L‰ÿL‰Æè”ÿÿ…À„eH‹çþH‰l$(E1äˆ\$0H‰ÃL‰ðH…ÛtKH‰ÝI‰ÆH‹}M…äuH‹t$H‰|$Pè“ÿÿH‹|$P…ÀLDãL‰þ诓ÿÿ…À„2H‹mH…íuÄH‹[L‰ðë°H‹l$(H¾\$0I‰ÆM…ä„“¿èTL‰ÿH‰D$è—‘ÿÿH‹T$fHnÀAD$I‰T$A¼]ét,¿A¼›è´Qé_,I‹vÈ¿mA¼è[PH‰D$`éA,I‹6¿VA¼ènJH‰D$`é$,I‹6¿TA¼èQJH‰D$`é,I‹vÈI‹¾XÿÿÿA¼èáOH‰D$`éç+I‹VÈI‹¶Xÿÿÿ¿LA¼è¬NH‰D$`éÂ+I‹FÈA¼;Ç~H‰é¢+I‹6¹1ÿA¼uH‹Sè¶(H‰D$`é|+I‹vÈI‹¾èþÿÿA¼sè&IH‰D$`é\+I‹vÈ1ÿA¼rè IH‰D$`éA+I‹V�H‰ÐH‰ÁH‹H…ÀuõI‹†@þÿÿA¼yH‰I‹†XÿÿÿH‰T$`H‰Ôé+H‹ÈA¼xH‰D$`I‹FÈH‰²éå*I‹~�I‹6¹A¼wH‹”è÷'H‰D$`é½*I‹~�I‹61ÉA¼vH‹oèÒ'H‰D$`é˜*I‹~È1öA¼qèGHH‰D$`é}*I‹~È1öA¼pè,HH‰D$`éb*1ö1ÿA¼oèHH‰D$`éI*I‹>A¼7èÛ"é6*E1ÉA¼4L‰L$`é#*I‹6E1ÉE1À1É1ÒH�=¯A¼3è4Géÿ)I‹6E1ÉE1À1É1ÒH�=‹A¼2èGéÛ)I‹>E1Ò¾A¼1L‰Kèþüé¹)I‹>E1Û¾A¼0L‰)èÜüé—)I‹6E1ÉE1À1É1ÒH�=+A¼.è¨Fés)I‹6E1ÉE1À1É1ÒH�=A¼-è„FéO)I‹~ÈA¼XèpEH‹¡ûÆ@é0)I‹~ÈA¼HèPé)I‹>A¼9è®!é )I‹>A¼8è›!éö(I‹>¾A¼\è#PéÞ(I‹>1öA¼[èPéÉ(1ÿºH�53e è–‹ÿÿ1öH‰Ç1Àèú&éwûÿÿ1ÿºH�5Ge èr‹ÿÿL‰ú1öH‰Ç1ÀèÓ&é§ûÿÿI‹>1öA¼dè®ûéi(I‹>¾A¼bè–ûéQ(I‹VÈI‹¶Xÿÿÿ¿A¼ èKH‰D$`é,(H‹l$H¾\$(A¼^é(1ÿºH�5ÕòèãŠÿÿL‰þH‰Ç1ÀèF&é·5IƒÇéN5H‹l$H¾\$(A¼^éÒ'I‹6¿IA¼èÿEH‰D$`éµ'èÐEI‹v�I‹¾ ÿÿÿA¼¤èŠKH‰ÇèÒFé�'I‹vÈA‹¾XÿÿÿA¼Ÿè'Kér'¿A¼œè²Lé]'HÇD$`A¼HéI'¶‚ùA¶V�A¼jÁâƒà Јiùé$'¶]ùA¶V�A¼hÁâƒà ЈDùéÿ&I‹>1öA¼eè/úéê&¿A¼Lè:–ÿÿóA~F�Æ@AH‰D$`é¿&èšCM‹&E1ÀºL‹ þH‹5þQ1ÉjL‰çjjèðGHƒÄ Hƒ=äýtw¿èØ•ÿÿL‰æ¿Gó~ÈýH‰Áýâüè’DH‹5³ýH‰ÂH…öt/¿KèIH‰šýA¼Né'&I‹A¼IH‰D$`é&H‰uýëÙL‰æ¿Iè>DH‰oýépÿÿÿI‹>A¼Uètéß%I‹FÈ€8„œHƒÀëñ€ Ýø A¼Péº%ÆuøA¼Oé¨%ÆQøA¼Né–%I‹vÈ¿AA¼èÂCH‰D$`éx%I‹v�I‹¿A¼ÿèAHH‰D$`éW%I‹v�I‹¿A¼þè HH‰D$`é6%A¼Té+%èFCI‹vÈI‹¾XÿÿÿA¼tèIH‰ÇèHDé%I‹v�I‹¿<A¼øèÌGH‰D$`éâ$€=;÷I‹FÈu-H‰ãA¼JÆ!÷é¼$I‹~ÈA¼WèÝ@é¨$A¼Jé�$H�|$`I�vȹA¼{ó¥Ç„$�éw$H�|$`I�vȹA¼y󥯄$”Ç„$�éI$H�|$`I�vȹA¼|󥯄$”Ç„$�é$1ÿºH�5ý` èè†ÿÿH‹T$L‰ù1öH‰Ç1ÀèD"éA÷ÿÿL�~îL‰çL‰Æè­Šÿÿ…À…2L‹d$0é2¿H‰T$Xè“ÿÿH‹T$XfInÇI‰ÇH‹JA@é•2Hƒ¸�…|2H‹|$H‰¸�ék2H‹|$(H‰x`é>2L‰ÿèš?é�2I‹~ÈI‹6A¼nèSDH‰D$`éI#I‹61ÿA¼mè9DH‰D$`é/#I‹VÈI‹¶XÿÿÿA¼lI‹¾èþÿÿèRAé #I‹v�I‹¾ ÿÿÿ1ÒA¼kè5Aéð"I‹v�1Ò1ÿA¼jèAéØ"‹fû¾þÿÿÿƒøþt=ЇŸHcÐH� £±¶4ƒ|$ …�H�=kîƒVúèDH‰ëH�סL�%0’H�-©}IcÏH�ÿ²¿H=òüÿÿtƒÀ=Äw H˜fƒD¿;H�p¡륾éeÿÿÿƒ|$ …xÿÿÿ…À�³…jÿÿÿ1ÀM‰è¾=Šw H�Ó°¶4H�=åíL‰$èï=L‹$L�%ô|H�èíM‰ÅI9ètH¿EH‰ßHƒíA¿4Dè¿=L9íuåM‰èH‹D$8I9À… H�Ä8.[]A\A]A^A_øé: I‹A¼=Ç*ùH‰+ùéN!H�="íèb=ÇÌùþÿÿÿé¢þÿÿHcÀùI‰Øƒøþt�L‰Åé&ÿÿÿE¿A¼4èéˆ è£>I‹61ÒA¼2H�=Fóè <H‰Çè¤?é_ I‹FÈA¼EH‰D$`éK I‹†xþÿÿA¼DH‰D$`é4 1öA¼GH‰t$`é" H‹ã÷1ÉH�5¶ë1ÿA¼~è5H‰D$`éûI‹6¿JA¼è(>H‰D$`éÞÇhøé>ýÿÿI‰îH‹$M)îM‰ôIÑüI�D$H‰D$H�ú'„ÊHÒ¸'H9ÂHNÂHkø:H‰$HƒÇ7èˆÿÿI‰ÄH…À„žI�VL‰îH‰ÇH‰Ãèú†ÿÿH‹$¾8HkL$8HÀH‰D$0HƒÀ7H™H‰L$H÷þH‹t$ H‰ÊHkÀ8LàH‰ÇH‰D$(蹆ÿÿH‹D$8I9ÅtL‰ïègŽÿÿH‹D$H‹|$(K�,4L�tÈH‹D$0I�DþH9Ń€AƒÿtzH‰|$ M‰åéOH�=ÓêèB@M‰èHc\÷ƒøþ„ôüÿÿéÄüÿÿƒy…À&ƒz…¶&L‰çèž<é©&I‹FÈA¼H‰D$`é…I‹FÈA¼H‰D$`éqI‰Øë�I‹A¼H‰D$`éYH‹öA¼zH‰D$`I‹FÈH‰öé7I‹VÈI‹¶Xÿÿÿ¿KA¼èü@H‰D$`éI‹vÈ¿A¼èBH‰D$`éôI‹vÈ¿fA¼èðAH‰D$`éÖH‹—õ1ÉH�5:Ô1ÿA¼|èéH‰D$`é¯I‹F�A¼{H‰D$`I‹†XÿÿÿH‰Zõé�I‹~�H‹Jõ1ÉH�5íÓA¼}èžH‰D$`édI‹>A¼ÚèðäéQI‹>A¼ÙèÝäé>1ÿA¼ØèËäé,H‹-ìóA~FÈHƒxflÀt/ºH�5è1ÿ)D$èÜÿÿH‰Ç1ÀèBH‹óëfoD$€HaA¼Ö@éÒI‹6H‹=¨ôºA¼Õè(9é³I‹6H‹=‰ô1ÒA¼Ôè 9é—�=!õuÇõþÿÿÿè<<I‹H‹RôA¼ÏH‰P0écI‹H‹9ôA¼ÎH‰PéJI‹>A¼ÌèÌé7I‹>¾A¼ÊèT<H‰ýóéI‹vÈI‹¾XÿÿÿºA¼Àè�7H‰Çè5;éðM‹~�M‹&¿L‰þè:A‹~ÈL‰âA¼¿H‰Æè§>1ÒL‰ÿH‰ÆèZ7H‰Çèò:é­ÇD$`^A¼»éšÇD$`|A¼ºé‡ÇD$`&A¼¹étÇD$`A¼¸éaI‹>1öA¼+èáéLI‹>A¼)èÎé9I‹A¼%H‰±òé$I‹~�A‹1öA¼$èáé I‹~�I‹61ÒA¼#èìàéò€=KíI‹ucH‰'ÙA¼"Æ2íéÍI‹v�M‹E1À1É1ÒH�=HòA¼èÝ7é¨I‹v�M‹E1À1É1ÒH�=#òA¼è¸7éƒA¼"éxI‹v�M‹E1É1É1ÒH�=ûñA¼èˆ7éSI‹v�M‹E1É1É1ÒH�=ÖñA¼èc7é.I‹~�I‹6A¼è,7éI‹~ÈI‹6A¼è7éI‹~�I‹6A¼èþ6ééM‹&H�5CL‰çè§€ÿÿ…ÀtYH�5qä1ÿºè |ÿÿL‰æH‰Ç1ÀèA¼é¨I‹~ÈI‹6A¼èö8é‘I‹~�I‹6A¼èß8éz¹1ÒH�= ä1öèUë°I‹~�I‹6A¼è±8éLH�ðÐA¼H‰¨íé3M‹&ºH�5dU 1ÿèý{ÿÿH‰ÇL‰æ1ÀA¼èZéI‹wI‹|$H‰L$(èÂÿÿH‹L$(…ÀuI‹D$»I‰GM‹?és(H�|$`I�v�¹A¼„ó¥Ç„$�é­H�|$`I�v�¹A¼ƒó¥Ç„$�é‡H�|$`I�v�¹A¼‚ó¥Ç„$�éaH�|$`I�vȹA¼€ó¥Ç„$�é;H�|$`I�v�¹A¼}󥯄$”Ç„$�é I‹v�I‹¿%A¼ïèÖ:H‰D$`éìI‹v�I‹¿*A¼íèµ:H‰D$`éËI‹6¿~A¼ìèÈ;H‰D$`é®I‹A¼ëH‰D$`é›I‹6¿!A¼êè˜;H‰D$`é~I‹vÈA‹¾XÿÿÿA¼éèx;H‰D$`é^I‹6¿-A¼çè[;H‰D$`éA¿A¼â葆ÿÿóA~H‰D$`AF�é¿A¼áèj†ÿÿI‹VÈH‰D$`H‰PI‹H‰éòE1ÀA¼àL‰D$`éßH‹ÈèI‹>A¼ÜÿPéÇèâ4ƒ-Kïé¶è¡2D‹%:ïAƒü$ºH�5ÏÝ1ÿèqyÿÿH�zîH‰ÁIcÄH‰ ÂAƒÄD‰%ïA¼^éjI‹FÈA¼]H‰D$`éVI‹FóAoA¼[H‰D$pI‹F�)D$`H‰D$hé/M‹f�óAoH�5¦áI‹FL‰ç)D$`H‰D$pèÙ|ÿÿ…À„ÀH�5‰áL‰çèÂ|ÿÿ…À…ƒM‹~ÈM…ÿuCÆD$aA¼ZéÑH�T$`¹1ÀA¼YH‰×ó«éµH�5=áL‰çèv|ÿÿ…Àu;M‹~ÈH�5ýL‰çè_|ÿÿ…Àt@1ÿºH�5µS èXxÿÿL‰â1öH‰Ç1Àè¹ë‹H�5ÆL‰çè(|ÿÿ…ÀuÉM‹~ÈM…ÿtÀL‰|$péeÿÿÿIƒ~Èu…ÆD$`éTÿÿÿH�5†àL‰çèñ{ÿÿ…Àt:H�5€àL‰çèÞ{ÿÿ…ÀtOH�5zàL‰çèË{ÿÿ…ÀuP¿Såtdè�H‰D$`éR%¿Qåtdè‰H‰D$`é>%¿PåtdèuH‰D$`é*%¿RåtdèaH‰D$`é%ºH�5›R 1ÿètwÿÿL‰â1öH‰Ç1ÀèÕ1ÿè.H‰D$`éã$A¼XéiA¼Xé^I‹¾XÿÿÿóAoF˜E·N�I‹–èþÿÿA¶F�)D$@E¶f‘H‰|$(¿0fD‰L$PH‰T$0ˆD$èÈé1ÒH‹|$(1öH‰H‹T$0H� 9ßI‰ÇH‰P1Òè’4D·L$PfoD$@I‰GHƒèfE‰O”ÀD d$D!àAG L�%BêI‹$H…ÒuM‰<$A¼W骄Àu1ÀI‰ÔëÝHƒzuô¶B„Àuì¶B„ÀuäºH�5$Q 1ÿèUvÿÿ1öH‰Ç1Àè¹I‹$ë½ÇD$`‡A¼éPH‹AÒA¼fH�PH‰0Ò‹îêÇäê ‰é!è /D‹%¥ëAƒü$ºH�5˜Þ1ÿèÜuÿÿH�åêH‰ÁIcÄH‰ ÂAƒÄD‰%pëA¼déÕI‹vÈH‹=òàA¼cèŸ#éºÇD$`…A¼%é§I‹FÈA¼!H‰D$`é“Hƒ=êM‹f�M‹¾èþÿÿuQHƒ=æéuGHƒ=Ôéu=L‰%ÓéA¼.L‰=ÎééQ1ÿºH�5«O èuÿÿ1öH‰Ç1Àè‚éŒ ¾$H�=ÄèÀÙë°IcA¼®H‰D$`éIcA¼­H‰D$`éôIcA¼¬H‰D$`éáIcA¼«H‰D$`éÎI‹>A¼¥èP é»I‹† ÿÿÿ¶•éI�¾XÿÿÿA¼•I‹vÈI‰†hÿÿÿè�7é‹I‹†XÿÿÿI‹vÈfïÀE1Ò¶ZéH�¼$ D‰”$ÐA¼“H‰„$°)„$ èG7éB¶#éI‹vÈ1ÿA¼’è*7é%I‹¶éE1ÛE1äH�¼$ 1öD‰¤$ÐA¼‘H‰„$ I‹FÈL‰œ$¨H‰„$°èÜ6é×I‹¶µèE1ÿ1öH�¼$ L‰¼$¨A¼�H‰„$ 1À‰„$Ð1ÀH‰„$°è’6é�¿A¼‹èÝÿÿI‹VÈ1ÉÆ@H‰PH‰H‰D$`éb¿ è¸ÿÿI‹1É€:!u HƒÂ¹H‰PI‹V�A¼Š‰Æ@H‰PH‰D$`é#¿ èyÿÿI‹1É€:!u HƒÂ¹1öH‰PA¼‰‰Æ@H‰pH‰D$`éæH�|$`I�v�¹A¼ˆó¥Æ„$”Ç„$�é¸H�|$`I�v�¹A¼‡ó¥Æ„$”Ç„$�éŠH�|$`I�v�¹A¼…ó¥Ç„$�édI‹v�I‹¿>A¼ùè-2H‰D$`éCI‹v�I‹¿A¼öè 2H‰D$`é"I‹v�I‹¿A¼ôèë1H‰D$`éI‹v�I‹¿A¼óèÊ1H‰D$`éàI‹v�I‹¿A¼òè©1H‰D$`é¿I‹A¼±H‰D$`鬃î7ƒæA‰ðé´¿èô}ÿÿH‰Á‹óÞHÇȉAH‰L$`A¼°éoM…ät ƒ=³Þ…¥1ÉëÚIcA¼¯H‰D$`éFH‹7ÍD‹%ÈæH�PH‰%Í‹ãåÇÙå ‰Aƒü$ºH�5ŽØ1ÿèâpÿÿH�ëåH‰ÁIcÄH‰ ÂAƒÄD‰%væA¼ éÛ H‹uI‹|$è�tÿÿ…Àt0M‹$$éØºémH‹uH‹{èytÿÿ…ÀuL‹k(H‹é¿@E1íèì|ÿÿ1Ò1ÿL‰(H‰ÆI‹D$H‰F1ÀH‰F1À‰F81ÀH‰Fèc3ë˜H‹uI‹}è$tÿÿ…ÀuM‹e M‹mé¨H…Ét}L‰ò‰ÙM‰îI‰íL‰d$I‹l$L‰ûI‰ÔH‹{H‰îˆL$(èãsÿÿ¶L$(…ÀuÇC0H‹H…ÛuØL‰âL‹d$M‹$$M…äu·L‰í‰ËM‰õI‰ÖéH�5¨ß¿è +H‰ÆéeL‰òL‰%_äM‰îM‰çI‰í‰Ùétÿÿÿ¸>é.Ç�ÙS¸SéÇ|Ù+¸+éH‹=SÛè¶gÿÿééH‹=BÛè¥gÿÿH‰NÙ¸{éØH‹%ÛÇ?Ú¾é¿H‹ Û1öÇ$Ú‰5¦Ù¾éžH‹ëÚ¾é�H‹ÜÚƒ�Ù¾éyƒ-rÙy ÇÞÙH‹³Ú¾éWH‹¤ÚºH�5MÎ1ÿL‰D$èÔdÿÿH‰ÞH‰Çè¯ÆL‹D$L�Í[é‡H‹iÚºH�5Î1ÿL‰D$è™dÿÿH‰ÞH‰ÇètÆL‹D$L�’[éLÇCظéÍÇ/ØP¸Pé¹ÇØO¸Oé¥ÇØN¸Né‘Çó×B¸Bé}ƒjÎéÜÇÓ×i¸ié]ƒJθhdz×héBǤ×<¸<é.Ç�׆¸†éÇ|×"¸"éÇh×6¸6éòÇT×_¸_éÞÇ@×^¸^éÊÇ,ׇ¸‡é¶Ç×]¸]é¢Ç×e¸eéŽÇðÖd¸dézÇÜÖz¸zéfÇÈÖx¸xéRÇ´Ön¸né>Ç Ök¸ké*ÇŒÖj¸jéÇxÖo¸oéÇdÖg¸géîPè¥SºH‰ûH�5,> 1ÿèmbÿÿH‰ßH‰Æ1Àè fÿÿº1ÿH�5Z> èMbÿÿH‰ßH‰Æ1Àè€fÿÿº1ÿH�5z> è-bÿÿH‰ßH‰Æ1Àè`fÿÿº1ÿH�5ª> è bÿÿH‰ßH‰Æ1Àè@fÿÿº1ÿH�5? èíaÿÿH‰ßH‰Æ1Àè fÿÿº1ÿH�5B? èÍaÿÿH‰ßH‰Æ1Àèfÿÿº1ÿH�5j? è­aÿÿH‰ßH‰Æ1Àèàeÿÿº1ÿH�5Š? è�aÿÿH‰ßH‰Æ1ÀèÀeÿÿ1ÿºH�5²? èmaÿÿH‰ßH‰Æ1Àè eÿÿº1ÿH�5â? èMaÿÿH‰ßH‰Æ1Àè€eÿÿº1ÿH�5B@ è-aÿÿH‰ßH‰Æ1Àè`eÿÿº1ÿH�5b@ è aÿÿH‰ßH‰Æ1Àè@eÿÿº1ÿH�5š@ èí`ÿÿH‰ßH‰Æ1Àè eÿÿº1ÿH�5ò@ èÍ`ÿÿH‰ßH‰Æ1Àèeÿÿº1ÿH�5"A è­`ÿÿH‰ßH‰Æ1Àèàdÿÿº1ÿH�5zA è�`ÿÿH‰ßH‰Æ1ÀèÀdÿÿ1ÿºH�5ªA èm`ÿÿH‰ßH‰Æ1Àè dÿÿºH�5B 1ÿèM`ÿÿH‰ßH‰Æ1Àè€dÿÿºH�5lB 1ÿè-`ÿÿH‰ßH‰Æ1Àè`dÿÿºH�5ÔB 1ÿè `ÿÿH‰ßH‰Æ1Àè@dÿÿH�5ùB 1ÿºèí_ÿÿH‰ß[H‰Æ1ÀédÿÿPH�o¾_H�=Ý®è�ÅSºH‰ûH�5n; 1ÿè¯_ÿÿH‰ßH‰Æ1Àèâcÿÿº1ÿH�5œ; è�_ÿÿH‰ßH‰Æ1ÀèÂcÿÿº1ÿH�5¼; èo_ÿÿH‰ßH‰Æ1Àè¢cÿÿº1ÿH�5ì; èO_ÿÿH‰ßH‰Æ1Àè‚cÿÿº1ÿH�5\< è/_ÿÿH‰ßH‰Æ1Àèbcÿÿº1ÿH�5„< è_ÿÿH‰ßH‰Æ1ÀèBcÿÿº1ÿH�5¬< èï^ÿÿH‰ßH‰Æ1Àè"cÿÿº1ÿH�5Ì< èÏ^ÿÿH‰ßH‰Æ1Àècÿÿ1ÿºH�5ô< è¯^ÿÿH‰ßH‰Æ1ÀèâbÿÿºH�5&= 1ÿè�^ÿÿH‰ßH‰Æ1ÀèÂbÿÿºH�5†= 1ÿèo^ÿÿH‰ßH‰Æ1Àè¢bÿÿºH�5¦= 1ÿèO^ÿÿH‰ßH‰Æ1Àè‚bÿÿºH�5Þ= 1ÿè/^ÿÿH‰ßH‰Æ1ÀèbbÿÿºH�5N@ 1ÿè^ÿÿH‰ßH‰Æ1ÀèBbÿÿºH�5¶@ 1ÿèï]ÿÿH‰ßH‰Æ1Àè"bÿÿH�5Û@ 1ÿºèÏ]ÿÿH‰ß[H‰Æ1ÀébÿÿH�= A èu¿A¾é|1ÿºH�5„A è—]ÿÿH‰Ç1Àèýøéƶ4@ˆ4HƒÀéH�=ð@ è+¿‰ÉÆH‹~ÇH‹ÇH‹ ЉiE1öéÑH‹Ð1É1ö‰ žÆ‰pé“L‹-›ÆI)ýƒ} tQ‹M� …É~Y‰EƒÀHcðè*dÿÿH‰EH…Àt6McíI‹,$LèH‰`ƉØ÷ÐEé˜E1ÀD‰>ÆD‰Eé21ÿH‰}H�=|@ 辉Ⱦ™÷þÈë™H‹ÊÆH‹ËÆA¾H‹ ÐÇA8éÑùI‹|$D�,IcõèšcÿÿI‰D$L‹eIƒ|$tAƒíE‰l$éÿH�=d@ è¾H‹pÆé¢1Àé×Pè €=¢ÍH�=€Z „zH�=[@ énöÍu1H�=^Î éYöòÌ…H�=ø é@H�=�& é4H�=íQ é(H¹H�=" I9É„H¹I9Ë„H¹H�=ªu I9Ê„á€ú„Ù·­Ë‰Ñf�áf�ù…ØöXÌ…§÷Òf÷Â„Žº H÷ÐHÁâH…ÐthH�=%x f�ù„‚H�= ¤ öQË…n¶CËH�=ˆÎ ‰Â÷Ò€â„SH�=œ(¨„DH�=]û é8H�=©z é,H�=•! ö¾ËtˆéH�=ðK é H�=Ê éÿH�=  éóH�=”I éç÷Òf÷Â…5ÿÿÿH�=³õ ölË…ÆH�=ŸK éºH�=+ø é®öGËu]H¸H9ÁtBH�=§u éŠH�=›É öË…ƒH¾H¿H!ÆH9þ…fë¯H�= J éHH�=‰ô é<H�=å öÎÊ…(éSH�=ÜI éH�=ðÊ é H�=<� éÿH�=øq éóéîH�5�­édH�53…éXH�5oÖöhÊu1H¹H¾H!ÁH9ñ„Gé4H�5ÂOééH�5(éH�5íþéú€=ŒÊH�5Êk„æH�5­RéÚH�5‘éÎöåÉ…ãH�5@âéµHºI9Ó„9HºH�5XI9Ñ„ˆA€ú„ ·ÑȉÑf�áf�ù…ö|É…§÷Òf÷Â„Žº H÷ÐHÁâH…ÐthH�59Kf�ù„(H�5·töuÈ…¶gÈH�5Ôœ‰Â÷Ò€â„ùH�5 ñ¨„êH�5ÁÆéÞH�5%CéÒH�5iùöâÈtˆé½H�5d!é±H�5¨¦é¥H�5ÄÆé™H�5hðé�H�5¬‘é�H�5 NéuH�5\éiH�5¸.é]÷Òf÷Â…ÿÿÿH�5·Ïö`È…<H�5ã é0SºH‰ûH�5þ2 1ÿè?WÿÿH‰ßH‰Æ1Àèr[ÿÿº1ÿH�5,3 èWÿÿH‰ßH‰Æ1ÀèR[ÿÿº1ÿH�5L3 èÿVÿÿH‰ßH‰Æ1Àè2[ÿÿº1ÿH�5|3 èßVÿÿH‰ßH‰Æ1Àè[ÿÿº1ÿH�544 è¿VÿÿH‰ßH‰Æ1ÀèòZÿÿº1ÿH�5\4 èŸVÿÿH‰ßH‰Æ1ÀèÒZÿÿº1ÿH�5|4 èVÿÿH‰ßH‰Æ1Àè²Zÿÿº1ÿH�5¤4 è_VÿÿH‰ßH‰Æ1Àè’Zÿÿ1ÿºH�5Ô4 è?VÿÿH‰ßH‰Æ1ÀèrZÿÿºH�565 1ÿèVÿÿH‰ßH‰Æ1ÀèRZÿÿºH�5V5 1ÿèÿUÿÿH‰ßH‰Æ1Àè2ZÿÿºH�5Ž5 1ÿèßUÿÿH‰ßH‰Æ1ÀèZÿÿºH�5†8 1ÿè¿UÿÿH‰ßH‰Æ1ÀèòYÿÿH�5«8 1ÿºèŸUÿÿH‰ß[H‰Æ1ÀéÑYÿÿ1À‰Š ·Åƒá€ùu€=ëÆH�i0„#H�„À=àÆH� I„€=¸ÆH�p„óH‹dÅH¿H¸H!×H9ÇuH�©—öÆ…¼H¾H¸H!ÖH9ÆuH�¿öÒÅ…ŒIº@H¸@I!ÒI9ÂuH�±æö¢Å…\I¸H� L9Ç„BI¸H�±4L9Æ„(UH�˜\I»I¸SH‰ÓL!ÛL9ÄùI¹H�ƒI¸I!ÑM9Á„ÒI¸H�T«H½I!ÐI9è„«H�çÓ€ù„›H¸H9Çu H� ûöÁÄ…xH�„lélH¸H9Æu H�!ö’Ä…IH��’é=H¸@I9Âu H�:GöcÄ…H�î¸éH�â¸L9Û„þH¾H�ðÝI9ñ„äH¾H�ÖI9ð„ÊH�þ+€ù„º‹ 3ÉÎf�æf�þuH�ºQöÛÃ…’f�áf�ùuH�Òyö»Ãuv¸ H÷ÒHÁàH…ÂuH�±¡öšÃuUH��Èf�ùtGH�›ðf�þt9H�íö«Âu)Š¢ÂH�ß?‰Ñ÷Ñ€át€âH�Ä‘tH�£h[]Ãÿé¾ LcÀéã PH�µ¾hH�=3¡èã·¾ÑH�=.Ÿè϶é SºH‰ûH�5®- 1ÿèïQÿÿH‰ßH‰Æ1Àè"VÿÿºH�5Þ- 1ÿèÏQÿÿH‰ßH‰Æ1ÀèVÿÿºH�5þ- 1ÿè¯QÿÿH‰ßH‰Æ1ÀèâUÿÿºH�5.. 1ÿè�QÿÿH‰ßH‰Æ1ÀèÂUÿÿH�5ë. 1ÿºèoQÿÿH‰ß[H‰Æ1Àé¡Uÿÿ¾ÚH�=sžè¶é� SºH‰ûH�5‹¸1ÿè4QÿÿH‰ßH‰Æ1ÀègUÿÿº1ÿH�5¹¸èQÿÿH‰ßH‰Æ1ÀèGUÿÿº1ÿH�5é¸èôPÿÿH‰ßH‰Æ1Àè'Uÿÿº1ÿH�5 ¹èÔPÿÿH‰ßH‰Æ1ÀèUÿÿº1ÿH�51¹è´PÿÿH‰ßH‰Æ1ÀèçTÿÿº1ÿH�5a¹è”PÿÿH‰ßH‰Æ1ÀèÇTÿÿº1ÿH�5‘¹ètPÿÿH‰ßH‰Æ1Àè§Tÿÿº1ÿH�5¹¹èTPÿÿH‰ßH‰Æ1Àè‡Tÿÿ1ÿºH�5é¹è4PÿÿH‰ßH‰Æ1ÀègTÿÿº1ÿH�5ºèPÿÿH‰ßH‰Æ1ÀèGTÿÿº1ÿH�5AºèôOÿÿH‰ßH‰Æ1Àè'Tÿÿº1ÿH�5yºèÔOÿÿH‰ßH‰Æ1ÀèTÿÿº1ÿH�5™ºè´OÿÿH‰ßH‰Æ1ÀèçSÿÿº1ÿH�5Áºè”OÿÿH‰ßH‰Æ1ÀèÇSÿÿº1ÿH�5ñºètOÿÿH‰ßH‰Æ1Àè§Sÿÿº1ÿH�5!»èTOÿÿH‰ßH‰Æ1Àè‡Sÿÿ1ÿºH�5Y»è4OÿÿH‰ßH‰Æ1ÀègSÿÿº1ÿH�5‘»èOÿÿH‰ßH‰Æ1ÀèGSÿÿº1ÿH�5Á»èôNÿÿH‰ßH‰Æ1Àè'Sÿÿº1ÿH�5ñ»èÔNÿÿH‰ßH‰Æ1ÀèSÿÿº1ÿH�5¼è´NÿÿH‰ßH‰Æ1ÀèçRÿÿº1ÿH�5I¼è”NÿÿH‰ßH‰Æ1ÀèÇRÿÿº1ÿH�5y¼ètNÿÿH‰ßH‰Æ1Àè§Rÿÿº1ÿH�5©¼èTNÿÿH‰ßH‰Æ1Àè‡Rÿÿ1ÿºH�5Ù¼è4NÿÿH‰ßH‰Æ1ÀègRÿÿº1ÿH�5é¼èNÿÿH‰ßH‰Æ1ÀèGRÿÿº1ÿH�5!½èôMÿÿH‰ßH‰Æ1Àè'Rÿÿº1ÿH�5Q½èÔMÿÿH‰ßH‰Æ1ÀèRÿÿº1ÿH�5�½è´MÿÿH‰ßH‰Æ1ÀèçQÿÿº1ÿH�5©½è”MÿÿH‰ßH‰Æ1ÀèÇQÿÿº1ÿH�5Ù½ètMÿÿH‰ßH‰Æ1Àè§Qÿÿº1ÿH�5¾èTMÿÿH‰ßH‰Æ1Àè‡Qÿÿ1ÿºH�5y¾è4MÿÿH‰ßH‰Æ1ÀègQÿÿº1ÿH�5é¾èMÿÿH‰ßH‰Æ1ÀèGQÿÿº1ÿH�5¿èôLÿÿH‰ßH‰Æ1Àè'Qÿÿº1ÿH�5é¿èÔLÿÿH‰ßH‰Æ1ÀèQÿÿº1ÿH�5YÀè´LÿÿH‰ßH‰Æ1ÀèçPÿÿº1ÿH�5‰Àè”LÿÿH‰ßH‰Æ1ÀèÇPÿÿº1ÿH�59ÁètLÿÿH‰ßH‰Æ1Àè§Pÿÿº1ÿH�5©ÁèTLÿÿH‰ßH‰Æ1Àè‡Pÿÿ1ÿºH�5)Âè4LÿÿH‰ßH‰Æ1ÀègPÿÿº1ÿH�5‘ÂèLÿÿH‰ßH‰Æ1ÀèGPÿÿº1ÿH�5ùÂèôKÿÿH‰ßH‰Æ1Àè'Pÿÿº1ÿH�5qÃèÔKÿÿH‰ßH‰Æ1ÀèPÿÿº1ÿH�5ùÃè´KÿÿH‰ßH‰Æ1ÀèçOÿÿº1ÿH�5!Äè”KÿÿH‰ßH‰Æ1ÀèÇOÿÿº1ÿH�5QÄètKÿÿH‰ßH‰Æ1Àè§Oÿÿº1ÿH�5�ÄèTKÿÿH‰ßH‰Æ1Àè‡Oÿÿ1ÿºH�5áÄè4KÿÿH‰ßH‰Æ1ÀègOÿÿºH�5KÅ1ÿèKÿÿH‰ßH‰Æ1ÀèGOÿÿºH�5»Å1ÿèôJÿÿH‰ßH‰Æ1Àè'OÿÿºH�5ÛÅ1ÿèÔJÿÿH‰ßH‰Æ1ÀèOÿÿºH�5ûÅ1ÿè´JÿÿH‰ßH‰Æ1ÀèçNÿÿH�5(Æ1ÿºè”JÿÿH‰ß[H‰Æ1ÀéÆNÿÿè�ƒø*…Vëðƒø t&…À… º1ÿH�5í³èVJÿÿZH‰Ç1Àé»åƒœ´éß¾ãH�=Q—èò®é›¾ìH�=;—èÜ®éµSºH‰ûH�5S±1ÿèüIÿÿH‰ßH‰Æ1Àè/Nÿÿº1ÿH�5�±èÜIÿÿH‰ßH‰Æ1ÀèNÿÿº1ÿH�5±±è¼IÿÿH‰ßH‰Æ1ÀèïMÿÿº1ÿH�5ѱèœIÿÿH‰ßH‰Æ1ÀèÏMÿÿº1ÿH�5ù±è|IÿÿH‰ßH‰Æ1Àè¯Mÿÿº1ÿH�5)²è\IÿÿH‰ßH‰Æ1Àè�Mÿÿº1ÿH�5Y²èÿÿH‹t$H‰Ç1Àè˜Ùë’é–ú1ÿºH�5óÁè>ÿÿH‹t$H‰Ç1ÀèoÙë®1ÿºH�5ÏÁèê=ÿÿH‹t$H‰Ç1ÀèKÙé«þÿÿ1ÿºH�5¨ÁèÃ=ÿÿH‹t$H‰Ç1Àè$ÙéÐþÿÿM‹$$öEt*H‹{ºH‰îèÄAÿÿL‹8M…ÿuH‰(I‰.I‰îL‰åéûI‰mI‰íéû¶M‰ÈA3GˆL$¨8t+I‹H…Òt0H‹zH‹uH‰$è4AÿÿH‹$¶L$…ÀuI‰×ëÇH‰ïèšIÿÿé¼úH‰UI‰/é°úAƒ}+H‹-Ū…ÕI‹}èþ;„À„ÄI‹} ƒ„éèS6„À…ƒL‹k éô1ÀébH‹kºH�5cÃ1ÿè´<ÿÿAXH‰Þ[H‰ÇH‰ê1À]A\A]é ØºH�5Â1ÿè‰<ÿÿL‰æH‰Ç1Àèì×¶U¶ Ñ©‹Û©ö „-é7L‹c1ÿºH�5³ÁèF<ÿÿH‰ÇL‰æ1Àè©×é³H‹sé;ƒ=”©…pÆ·©éÝL1%“©H‰ïAY[]A\A]éKýX¾²H�=¤¥[]A\A]é§ ƒ=L©…H‹k1ÿºH�5,Âè¿;ÿÿH‰ÞH‰ÇH‰ê1Àè×éðH‹C1ÉH‹P`H‹@XHC Æ1©H‰©H‰ ©H‰©éBH‹kºH�5Â1ÿè`;ÿÿAZH‰Þ[H‰ÇH‰ê1À]A\A]é¸ÖºH�5\À1ÿè5;ÿÿAXH‰éL‰êH‰ÇH‰Þ1À[]A\A]éŠÖHƒ„déH‹-»¨é̃=g¨„1ÿºH�5£ÀèÞ:ÿÿH‰Ç1ÀèDÖéîL‹c1ÿºH�5¥Àè¸:ÿÿH‰ÞH‰ÇL‰â1ÀèÖéÂÆ<¨éb1ÀL %¨•ÀH‰ ¨1ÀH‰¨éAL %÷§H‰ïAX[]A\A]é¯ûL;%ৃL‰%ӧ鋨H‰ Á§H‰Èƒú…" éà1ÀM…ät 1ÀHƒ=Ÿ§•ÀH‰•§1ÀH‰œ§éÊHƒ… ýÿÿé—H�=ž£¾袞H�_§¹1ÀH‰×ó«é‘H�5_¾1ÿºè³9ÿÿAZH‰Þ[H‰Ç]1ÀA\A]éÕH�5o¾1ÿºè‹9ÿÿAYH‰Þ[H‰Ç]1ÀA\A]éæÔH‹RéyH‹æ©H‹’˜éfƒ=æ…H‹kºH�5¥¿1ÿè69ÿÿYH‰Þ[H‰ÇH‰ê1À]A\A]é�Ôƒ=ˆ¦„$H‹[ 1ÿºH�5Ü¢èû8ÿÿH‰ÇH‰Þ1Àè^ÔéûH‹]éü1ÿºH�52½èÍ8ÿÿH‰ÞH‰Ç1Àè0Ôƒ=)¦„³é±è© H‹5*¦H‹ C¦HƒþvH�Lÿ1ÒH‰ÈH÷öH)ÑH‰ ¦éDƒ=⥄¬H‹[ 1ÿºH�5!¢èU8ÿÿH‰ÇH‰Þ1Àè¸Óéƒ[¾¥H�=ì¡[]A\A]éH�5¿1ÿè8ÿÿYH‰êH‰ÞH‰Ç[1À]A\A]éqÓH‰L$H‰ýè”ô€=�¥H‹L$t H‹g¥é¯õƒ=C¥H‰L$„šõ1ÿºH�5 èµ7ÿÿH‹T$H‰îH‰Ç1ÀèÓépõH‰t$è„×H‹­¡H‹®¡H‹=¡H�ÐèVèH‹=—¡H‹t$H‰H…ÿ„lõH‹w¡é\õfHnÆ1Ò1ÉflÀ)¾£H‰H‹UˆXH‰PH‰HH‰EéÛ€ Ü£H‰ÂéfHnÆ1ÀH�KflÀ)~£H‰BH‹CH‰*H…À„,é5€ ž£H‰ÐéÄèœäÿÿºH�5M 1ÿè¾6ÿÿ1öH‰Ç1Àè"ÒH‹SªL‰``H‰¨�é H‰ÇèÃ6ÿÿH�xè CÿÿH‰ÞH‰Çè/4ÿÿH‰˜¡鏸ƒ=@§41Ò‰6§éSø¶�¦¨t[¨u/H‰_§éeøƒ§é=ø1ÀH�=Ì èhÒ¶Q¦ëµ1ÿºH�5±½è 6ÿÿH‰êH‰ÞH‰Ç1ÀèlÑéøH‰-§éøH‹=¼ 飸H‹�H‹8è�;ÿÿH‰ÝºH‹€=<§L‹eH�5“½uH�5x 1ÿè£5ÿÿL‰æH‰Ç1ÀèÑH‹}èýAÿÿH‰ïèõAÿÿH…Ûu°H‹A�[]A\H‹8é-;ÿÿL‹eH�5E»L‰çèJ9ÿÿ…À„í$L‹k@1ÿºH�5Àè;5ÿÿL‰âH‰ÇL‰î1Àè›ÐéÁ$Hƒ=¤tFºH�5÷Ÿ1ÿè 5ÿÿH‰Ç1Àè\H‹=ø£è›H‹=Ü£è ›éÇÆœ¦éU$Hƒ=¾£u°é¬¹é$Æ'¦éÜÆ¦é¬Æ¦é|ƦéLI‹G¶@ƒè<†;A‹wH‹=ï¤èÚ4ÿÿI‰ÆH…Àu;¶A‹wƒà<„bI‹G H‹@H‹¸àH…ÿ„lè£4ÿÿI‰ÆH…À„}E¶nAƒåA€ý„‡×Ç$A€ýtÇ$A€ý…ÃA¶ýL�-Ú£è°Í¿H‰Æèõ1ÒL‰ïH‰Æè†ìH‰ÇèðL‰î¿èï1ÒH‰ÆI‹GH‹xè_ìH‰Çè÷ïI‹è^Í‹<$H‰ÆèSôM‹o M…í„ÜHƒ=¥„E„ä„I‹GH�=3¦H‹p1Àè¹AI‹GH‹xèl3ÿÿ‰Âƒø�¿)×èÅ,I‹uH…ö„•H�={¦1ÀèzAéŸÆo¤é”H‹r£ºL‰æH‰ßH‹@H‹€xÿ�ØA¶D$i‰Âƒâ€êt ƒàüƒÈAˆD$iA€L$kA€L$PéŠI‹GA‹H‹HI‹G H‹@Hƒ¸à„ÆH‰ $è¿.ÿÿI‰ÅI‹G H‹@H‹€àH‹@ºH�5•»L‹01ÿèS2ÿÿH‹ $L‰êL‰öH‰Ç1Àè¯ÍM‹?éMA€ý„ÒI‹GºH�5Å»1ÿH‹@H‰$è2ÿÿH‹$A¶õH‰Ç1ÀèlÍÇ$éþÿÿH‹{0H�5óœèp4ÿÿ1Ò‹H$H‰P@‰Ê�ʃE…íu�ɉʉP$A½é;H‹= L�%¦¼H…Û„f H‹C0f÷@D@u öC`„U H‹[HëÛÆë¢é8ÆߢéàH‹H‹(éQH‹3H‹=¬¡1É1ÒA¸èu4ÿÿH…Àt-¶@ƒè<w"H‹[é©H‹=¥¡H‰ÞH‹Gÿ�øé=H‹+1ÿºH�5R¼èý0ÿÿH‰ÇH‰î1Àè`Ìë¹I‹G‰÷H‹HH‰ $è-ÿÿI‰ÅH‹Q¡é_þÿÿI‹G‰÷H‹HH‰ $èù,ÿÿºH�5ºI‰ÅI‹G H‹@L‹0é@þÿÿ1ÿècÊ‹<$H‰ÆèXñéDþÿÿI‹UI‹MH�=®›1ÀH‹²àèÖ>A¼H‹é{I‹UH H9Ât�J$ ¶I‹Mƒà<t`¿(H‰L$0H‰T$ èñ¢ÇtH‰D$è!ÝH‹t$H‹T$ H‹L$0‹<$H‰F‹MšÇF ‰FH‰VH‰N è®ðM‹méVüÿÿH‰Ïè�ÉóA~EA‹OfInÎfHnàAM¿PH‹°ŠflĉL$ H‰T$)D$@)L$0è\¢H‹T$E1ÒE1Û‹L$ foL$0L‰Ç@ foD$@H‹rH‰H‰B‰HL‰X8L‰X@L‰XHH@(ébÿÿÿ1ÿºH�5Nšè-/ÿÿH‰Ç1Àè“=é¿ûÿÿè™(1Òéáûÿÿ1ÿºH�5Ô¸èÿ.ÿÿH‰Ç1ÀèeÊéH1ÿºH�5ÂÃèÝ.ÿÿH‰Ç1ÀèCÊéLHƒ=æš„ºH�5ô¶1ÿè­.ÿÿL�5…¡L�-¡™H‰Ç1ÀL�%š™èþ<H‹§šH…Û„7H‹sL‰÷1Àèà<H‹{è—.ÿÿ‰Âƒø�¿)×èð'H‹sH…öt L‰ï1Àè­<H‹sL‰ç1ÀèŸ<H‹ë£1ÿèË|$\èÚ-ÿÿL‹{01ÿºH�5�¶I‰Æè.ÿÿL‰òL‰þH‰Ç1Àè`ÉérH‹s8H…ötH‹SèI7ÿÿH‹= ¤…Àx H‹[Hé¿èp,ÿÿ‰Çèy-ÿÿL‹s0º1ÿH�5Ÿ·I‰ÅèŸ-ÿÿL‰öL‰êH‰Ç1ÀèÿÈH‹{8èæ5ÿÿ1öH‹=µ£H‰s8ë©H‹=¨£è»,ÿÿE1ÀH‹ñ›L‰’£H…Ût'H‹{8è¬5ÿÿ1ÿH‰{8H‹[Hëæè;éʃÎéVéfAƒ¿¬„EI‹GHH…À„8ö@$„.Iƒ|$„"I‰íH…í…ÛL‰øL‹¨�M…í…éH‹@0H…Àuç1ÿºH�5:·è½,ÿÿH‰Ç1Àè#ÈéŽI‹|$(E1íH…ÿ…•I‹|$ E1ÉH…ÿupE1ÀIƒ|$ I‹t$D‰éA•À1ÒIƒ|$(S‹D$H‹=眕ÂPA¶D$PA¶D$Pè 1ÿÿHƒÄ „Àt M‹$$éï1ÿºH�5Ѷè,,ÿÿH‰Ç1Àè’ÇëØH� �—1Ò1öèÐéI‰ÁéxÿÿÿH� l—1Ò1öè¸éA‰ÅéSÿÿÿL‰íéÒƒâ÷‰P$écH‹C H…À„�1ÒH‹A‰Ö�RH…ÀuòLcúJ�<ýè08ÿÿ1ÒI‰ÅH‹C H…ÀtlI‰DÕH‹H‰HƒÂH‰ÈëçC�46H‰ßI‰öHÁæè{,ÿÿH‰Ãé~I‹LÅHƒÀH‰ I‹TÅA9ÆêE1öL‰ïL‰2è¿7ÿÿH‹é)é†è½$1ÒéÚüÿÿH� -›ºL‰þL‰ïèo)ÿÿI‹EH‰C 1Àë¬L‰çè»6ÿÿH‰<¡H…À…�‹|$\è²*ÿÿºH�5¾³1ÿH‰ÃèÜ*ÿÿH‰ÞH‰Ç1Àè?ÆH‹X™H…Û„aH‹{8è3ÿÿH‹[HëèÆœéH‹CH‰É•éH�½šé¬L‹5™E1íM…ötDI‹~0H�5�•èù,ÿÿI‰ÄH…ÀuwM‹vHëÝA·FÇ$f%€f=…QöÿÿÇ$éEöÿÿ1Ò1ÉH�5žy1ÿèsÄL‰ïH‰ÆèøäH‹=)š1ÒH‰Æègå鼯l›é…Æ`›é­L‹x@L‰ÿè^6ÿÿI‹~01ÉM‰øH‰ÂL‰æH‰Ãèç)ÿÿ„Àt-IßL9ûƒrH‰ÞL‰ï1É1ÒèøÃH‰ßI‰ÅèÍ)ÿÿH�\ëÖ1ÿºH�5�²èƒ)ÿÿL‰æH‰Ç1ÀèæÄë±è_1ÿºH�5i±H‰ÃèY)ÿÿH‰ÞH‰Ç1Àè¼Äéi‰ñÀéƒá@€æ@… H‰Ö¢H‹Ï¢H‰Ö„É…qH‹„H‹I‰L‰&H;p„ˆH‹BPH‹4$H‰H‹D$ H‰BPH�BPH9+•„&HƒzH‹i—„åH‹JHH‹t$HƒÂHH‰MH‰2H9Єèó~6—fHnØH‹= ˜1öºƒì•flÃ)$èfo$L‰îH‰ß)D$pèûH‹T$pH…Ò„A H‹r0I‹H‹¾ðH…ÿHE÷1ÀE1ÀH…É„ÈL‹I0I9ñ„+M…Ét HƒyHtI‰ÈH‹IPëÕ1ÉH‰¶¡H…Ò…×þÿÿ¾r H�= wˆL$0è´Œ¶L$0é¸þÿÿH‹o–H‹t$H‰UH‰5_–H9Ø…ÿÿÿH‰-W–H‰èé ÿÿÿH‰5ø“éÎþÿÿH‰×H‰T$@H‰T$0èH‹T$0H‹rPH90H‹t$@…fþÿÿH‰Æé^þÿÿL‰xéoþÿÿH…ÀtfHƒÀHH‹H…ÉtöAa@upH‹q0Hƒ¾ðubL‹L‹Ú•H�JHH…ÿtXH‹rHH…öumH‰H‹1L‰ L9ÀtQH‹‡ H…ÀtHƒéHH‰HHH‰òé¡þÿÿH‹ë•H‹AHH…ÀuL‰ÀéÓþÿÿHƒÀHëžH�AHéyÿÿÿH‰H‹rHL‰JHL9ÀuÃH‰ b•H…ÿu£ëµH‹1L‹V0I9ºðuƒH�NHH‹vHéqÿÿÿH‹HH�PH…Ét H‹2ƒ~uCH‹p(H‰H‹H H‰ H;P…“ H‰péŠ €%›–¿éjÆÍ—é¦èrãé� H‹H‰òë§A�L$$€ éÖûÿÿé¨H‹¨�H…í„›ôÿÿHƒ}`tH‹mëêöE&uôL‹k0L‰æ1ÿºèü%ÿÿH‰îH‰ÇL‰ê1Àè\ÁëϾ=H�=ðtè�ŠéX¾=H�=Út臊ézL‹s1ÿºH�5$±è§%ÿÿH‰ÇL‰ö1Àè ÁéhH‹GH‰BŸéè@'ÿÿƒøt%1ÿºH�5m±èh%ÿÿL‰îH‰Ç1ÀèËÀézH‹§”1ÿºH�5É�è<%ÿÿH‰ÇH‰Þ1ÀèŸÀë²H‰ÆH�=U€è^+ÿÿH‰ÆH…À„1Òƒ=픕Â9P „H‹€pH…Àt 9P „­H�=tƒè+ÿÿH‹íšH…À„ H‹H‰”éÂ1ÿºH�5�¹èª$ÿÿH‰Ç1ÀèÀé&1ÿºH�5ݰèˆ$ÿÿL‰îH‰Ç1Àèë¿éà1ÿºH�5�°èc$ÿÿL‰îH‰Ç1ÀèÆ¿é•¾Á H�=Wsè‰éÎH‹H‰‰“é11ÿºH�5ίè$ÿÿH‰Ç1Àè¿éƒ{t H‹[HépçöCatñH‰ßèmH‹{0H…ÿtà¾èj.ÿÿ„ÀtÒH‹C0H‹@H‹H…ÀtÂéFç‹5Ë™‰Â1ÉöÂu Ñê¹ëòó¼Àð„Ét‰©™ƒê„¾ò H�=–rXéBˆÃ1ÿºH�5/©èj#ÿÿH‰Ç1Àèоédè[ÃL‹31ÿºH�5ð¯èC#ÿÿH‰ÇL‰ö1À覾é•èL‹31ÿºH�5˜¯è#ÿÿH‰ÇL‰ö1Àè~¾é èºL‹{H�5ѯ1ÿèò"ÿÿH‰ÇL‰þ1ÀèU¾H‹æ}H‹L$H‹PH‰ H‹T$H‰PéùH‹CH‰qœé¤Æ”éÑ1ÀH‰GœéŠL‰ÿèëH…À…kH‹ÂŽH…ÒtpH‹zH…ÿtaL‰þH‰$èX!ÿÿH‹$…ÀuM¶Baƒà<…31öH‰×èÇé$Hƒ=ê›…ÊéHƒÄ(H�=^Œ1À[]A\A]A^A_都H‹RPë‹H‹NŽ1ɾL‰ÿH‹ý|L‹H°HƒèPL‹BH‰BH‹–‘L‰ $L‰D$è�’L‹ $L‹D$H‰ÂH‹Å|H‹HL‰ Iƒ8…LÿÿÿL‰@éCÿÿÿH�ìØH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH�„$àH‰þH�T$1ÉH‰D$H�D$ H‰D$H‹`lÇD$H‹8ÇD$ 0è˜ÁH�ÄØÃº1ÿH�5 ®èí ÿÿH‰ÞH‰Ç1ÀèP¼·% €äþf‰%  1ÿºH�5E®è¸ ÿÿL‰îH‰Ç1Àè¼é H‰ÞH�=?Œ1ÀèòþÿÿH‹{0¾è+ÿÿ„À…téTH‹k0ºH�5Š®1ÿèc ÿÿH‰ÇH‰î1ÀèÆ»D¶saAÐîAƒæéãºH�5‰­1ÿè2 ÿÿL‰îL�-ênH‰Ç1À莻L‹d$ I‹4$H…öt6L‰ï1ÀIƒÄèr»ëçH‰ßÿЄÀ„7Aƒü …�H‹|$ èO,ÿÿérH‹|$ è@,ÿÿH�=ãl1Àè2»é"I‹<$èäÿÿH‹}I‰Åè#ÿÿM‹<$H�5E‹I‰ÆL‰ÿè‚#ÿÿ…Àu €MIéIMcíL‰öL‰ÿL‰êèÔ ÿÿ…À…ÅC¶.„À… €MIéH�D$(A¾E1äH‰D$L�-l�L‰æH‰ïèÑ)ÿÿI‰ÄH…À„§¾H‰Çè¨)ÿÿ„À„c€=Ë�…ÕL‰d$(H‹L$L‰æL‰ïH‹<�H�Þ~ÿ„À„•H‹|$(L‰îH‹Gÿ�È„ÀtZH‹k0ëƒ<.uC€|.au C€|.„HÿÿÿM‹d$éXH‹k0éïºH�58¬1ÿè�ÿÿH‰îH‰Ç1Àèä¹H‹k0黺H�5¬1ÿE1öèUÿÿL‰æH‰Ç1À踹ë�H�WV¾c H�=EmèõƒI‹L$XI‹”$ðH‹ �H…À„LÿÿÿƒxuFL‹xH‹(H‰L$H‹:H‰T$I‹‡ðH‹0èØ!ÿÿH‹T$H‹L$…ÀuI;OX„Íþÿÿ‚ÿÿÿH‰èë«H�®U¾²'H�=ÄlètƒH‹k0º1ÿE1öH�5€«è“ÿÿL‰âH‰îH‰Ç1Àèó¸énþÿÿ¶CaD‰òƒâÒƒàý ЈCaé€c`ûH‰ké7H‹aŒH‹€ÐH…À…ÐH‹méðH‹sH‹{èÿÿH‹k…À…ÄH�5áˆ1ÿºè ÿÿH‰îH‰Ç1Àèo¸€Ka€ UŒéÎH‹köC`…‹L‹%JˆM…ä…-H�5“ˆ1ÿºè¾ÿÿH‰îH‰Ç1Àè!¸öC` „ÂH‹-ð…L�-e›L�%¤™H…ítŽH‹}L‰éL‰âH‰Þ軄ÀuHH‹mëßH‹}H‰ÞÿÐ…À„ÿÿÿé6L‹c1ÿºH�5õ‡èDÿÿH‰êH‰ÇL‰æ1À褷é0ÿÿÿH‹{è–ÿÿL‹cº1ÿH�5«H‰Åè ÿÿH‰éH‰êL‰æH‰Ç1Àèi·H‹{0è°$ÿÿ1ÀH‰C0éæþÿÿH‹kH�5ukH‰ïèbµ„À„#ÿÿÿ1ÿºH�5„ªè·ÿÿH�uH‰Ç1Àè·éýþÿÿ1ÒL�-š‡L‰d$€=/‹L‰l$H‰l$ H‰T$(ujH�L$H�T$ L‰çH�t$è÷WH‰ÅH…Àu}H‹ké…þÿÿL‹%/�M…ä„eþÿÿ€}/…[þÿÿ1ÿºH�5‡è)ÿÿL‰âH‰îH‰Ç1À艶écþÿÿºH�5P©1ÿèÿÿL‰æH‰éL‰êH‰Ç1Àè^¶L‹%W†édÿÿÿL‹%K†º1ÿH�5]©èÈÿÿH‰ÇL‰æ1Àè+¶H‰ïèƒ#ÿÿéýýÿÿ€=|Šu{H‹{0è\#ÿÿ1ÉH‰K0éºH�5�†H…ÀtH�5Ÿ†1ÿèrÿÿH‰îH‰Ç1ÀèÂøÿÿH‹C0H…À…ðéÆH‹[X1ÿºH�5‰©è<ÿÿH‰ÇH‰Þ1À蟵é«L‹c1ÿºH�5€©èÿÿH‰îH‰ÇL‰â1ÀèsµéYÿÿÿèyÊ=‰D$…:L‹5³�è^ʃø,uèTÊ=„L‰ï‰D$è-&ÿÿL‰÷è%&ÿÿ‹D$…À…öéH‹=u�è&ÿÿé×H‰ßÿЄÀ…ìé|M…ÿL‰ïIEÿéoI‹D$ƒxtQ€=5‰uqH‹{0è"ÿÿ1ÀH‰C0é˺H�5Þ¨1ÿè7ÿÿH‰îH‰Ç1Àèš´H‹{0èá!ÿÿ1ÒH‰S0é—H‹�‰H‹@ƒxužH‹{0¾è‡#ÿÿ„À…Uë†L‹c1ÿºH�5C¨èÖÿÿH‰îH‰ÇL‰â1Àè6´écÿÿÿL‹=ŠŒè5Éé�L‰ïè%ÿÿ‹D$éîþÿÿM…öL‰ïIEþé�M‰,$H…Òt=L‰"é¸Þƒ{u;H‹CL9pXrIH‹€ðL‰ÿH‹0èMÿÿ…À…�àI‰ÝH‹éàL‰%3‡éwÞH�‡O¾(H�==gèí}H‹é^àL‰êH…Ût I‰ÝéößH�WO¾ø'H�= gè½}H‹ç†L‰ L‰%݆éÞH‹[0H�5õ¥1ÿºèÉÿÿHƒÄH‰ÇH‰Þ1À[]A\A]A^A_é³H�O¾ì*H�=­fè]}H‰ÞH�=/ƒ1ÀèâõÿÿéÞÞH�éN¾ã*H�=fè/}H�O¾+H�=gfè}H�ùN¾+H�=Ofèÿ|1ÀÃ1ÿºH�5פè"ÿÿL‰æH‰Ç1Àè…²éžH�-f¾ÉH‰ïèÀ{H‹{0H9=q‡H�‡…åH‰ï¾Ëè›{H‹{0H�‡éÈH�-ÒeëÚ1Àé €?/…H‰þH‹=„ˆ1Ò1ÀèëÿÿH‰ÞH‰ÇH‰ÅèÍ„Àt H‰kéÐH‰ïèè"ÿÿéïH‹WH�5˜†H‰ÇH‹’ÐÿâH‹åaH� H‰V`é]·EJfÁèƒà<…À1öH‰ïè8ÜH‹C0éÅH‹D$0H‹€ðö@I@„*L‰öH�=¢�1ÀèUôÿÿéI‹}(A¸1É1ÒL‰æè ÿÿH‰ÃH…À„ĶC<‡á<‡õƒè<wL‹{(€=K�„íH‹…ðH‹UH…Àt ö@I@„üH�=cˆH‰Ö1Àèê#H‹}è¡ÿÿƒø�¿)ÇèüM…ÿtL‰þH�=O€1Àè¶#H…Û„ðH‹sH�=9€1Àè›#é#H‰ßèŽ!ÿÿ¿ èôÿÿ1Àé3Aƒ½¨tH�5‡•L‰çè„®„À…õE1ÿé2ÿÿÿ<…*ÿÿÿH‹C(H‹@L‹¸àéÿÿÿH‹C(L‹¸àéÿÿÿºH�5ä¤1ÿè¥ÿÿH‰Ç1Àè #Æ4ŽéêþÿÿH‹0H�=z{1Àèî"H‹…ðH‹8èŸÿÿH‹}I‰Åè“ÿÿA�DéèþÿÿèÔ 1ÀéåþÿÿL‰æH�=L‡1Àè¬"é4€=Ñ�uƒÈ@ˆCaH‹C0I‰é€=µƒu €caßéöþÿÿL‰öH�=¤1ÀèVòÿÿëäI‹}(1É1ÒI�t$A¸èÿÿH…À„êþÿÿH‰Ãéýýÿÿ€=<…„ŒAVH‰ðAUM‰ÅATUSH‰Ó‰Ê¶NL‹fƒùuH‹v(L‹p0H‹vH‹®àë�qýƒþwH‹@(E1öH‹¨àëE1ö1í�Býƒøvƒúu3ƒùt¾ªH�=•èxºH�5¸£H…íu@H�5ô£éÛ�AýƒøvƒùuRƒút¾·H�=UèÐwºH…ít)H�5û£1ÿèôÿÿH‰éL‰âH‰ÇH‰Þ1À[]A\A]A^éI®H�5¤ë|ƒùuƒút¾ÂH�=þ~èywºM9õsH�5,¤H…íu¤H�5h¤ëBM9îsH�5š¤H…íuŠH�5Ö¤ë(H…ít1ÿH�5¥èiÿÿL‰áH‰êH‰ÇépÿÿÿH�5$¥1ÿèMÿÿL‰âH‰Þ[H‰Ç]1ÀA\A]A^饭À=«ƒtÆ•ƒÿ%„H‹8H‹nH‰ËH…ÿ…Ä€=Ö�uHƒ=��„c€=Ä€L�-•€„ä1ɺH‰îL‰ïL‰D$èˆÿÿL‹D$H…ÀI‰Ä„•I‹l$ H…í…t¾L‰ïL‰D$ègÿÿL‹D$H…ÀH‰Å„*I‹D$ H‰EI‰l$ €eøH‰]H‹ù\HI9À„­Aö@%…‚€Mé¶1É1ÒH‰îL‰D$èõÿÿL‹D$H…À„ÿÿÿH‹°\ºH�5j}HI9ÀtL‰D$ºH�5h}1ÿèñÿÿH‰êH‰ÞH‰Ç1ÀèQ¬L‹D$éÍþÿÿD¶§D‰ËE„À„3E…É…öL‹KŠL‹<Š1ö1í‹jL‹-KD‹%dL‰ÙL‰Ò9ƃI‹|õH…ÿ„%L‹O L�rM…É„.M‹ L‰òD‰ÅëèºH�5Û|1ÿèIÿÿH‰Ç1À诫L‹D$é¯þÿÿH;]„»þÿÿH‹mépþÿÿºH�5N£1ÿèÿÿH‰Ç1Àèu«L‹D$éDþÿÿº(H�5˜L‰ïL‰D$è¢ÿÿL‹D$„Àt5ƪ~éîýÿÿ€Mé4Aƒùt>Aƒù„*1Àé"€MéºH�5˜¢1ÿè‘ÿÿH‰Ç1Àè÷ªL‹D$ë§H‹5ùˆH…ö„»fnÔˆfn ȈE1äL�-~H‹׈H‹=¸ˆfbÁH‹ÕˆH�,H‰=â}fÖò}HëèÒÿÿH‹{ˆH‰œ}D;%Õ}snI‹UD‰àH‹ ÂH…É„­‹Á}H‰îH‰Ïè–ÿÿH‰Á‹­}HÅH‹A H…À„ŒóoHƒÃH‹SøH‰PH‹ëßH�=^}èÉÿÿÆz}é H‹5ˆH‹=O}èšÿÿH‹=ˆèîÿÿ1öH‰5õ‡éàE„Ét H‰ ü‡I‰Ë@„ít H‰å‡I‰ÒHÁàL�-÷|H‰ȇLØJ�<è´ÿÿ¾L‰ïH‰¥‡èðÿÿH‰‘‡H…À„\þÿÿH‹-‘‡H‹ ‚‡H‹5«|H‰ÏH‰êè ÿÿL‹%�‡H‰ÁH‹�|HéH‰E‡‹—|Ỉ2‡‹Œ|‰"‡H‹;|H‰ ‡;n|syI‹U‰ØH‹,ÂH…íto‹_|H‰ÏH‰îè4ÿÿH‰Á‹K|HÁH‹E H…ÀtQóoIƒÄAD$èH‹PI‰T$øH‹ëßHƒÆé¼üÿÿAƒÄé-þÿÿH‹ é9þÿÿH‹?LáE‰Áéªüÿÿé–ƒÃérÿÿÿH‹mé{ÿÿÿAWAVAUATUSH‰ËHƒìŠOöÁ…’H‰ð@ŠvH‰ÕM‰ÅH‹tX@€þt@€þt*H�ñC¾JH�= yè‡rL‹`(L‹p0M‹¼$àë E1öL�¢0E1ÿH�º @€þ@”ÆH9ûA”ÀD!ÆI9ü@”Ç@„þt M9î„ öÁuOI‹|$`H�² H…ÿA•ÀH9÷@”ÇA„øt I9ô…àH‹s`H…ö@•ÇH� H9Ö@”Æ@„÷t H9Ó…¹H‹@H‰D$H…ítI‡ïëM‰õL‰ã€áºH�5WŸuH�5~Ÿ1ÿèç ÿÿL‹D$L‰éH‰ÚH‰ÇL‰þ1Àè?§H…ít&ºH�5fx1ÿè· ÿÿL‰ñL‰âH‰îH‰Ç1Àè§1ÀH�=¬ˆè§ƒ=×{u'ºH�59Ÿ1ÿèz ÿÿH‰Ç1Àèà¦Ç®{HƒÄ[]A\A]A^A_ÃUH‰ÕSH‰óQH…ÿu¾(H‰ßè ÿÿH…Àuë$H‰øH‰êH‰ÞH‰ÇèœÿÿH…ÀtHÿ yWÀ@Z[]ÃÐèH‹=”{H�Ä8H�5Øw‰Â[]ƒâA\A]ƒÊA^A_éŸÿÿH‹D$H‹@ƒxuwH‹D$ÆD$#H‰D$¶îzÇD$ƒàçƒÈˆÚzéSL‹D$L‹l$D‰øºƒèH�5M L‹|$(MEè1ÿL‰D$èp ÿÿH‰ÇL‰î1ÀèÓ¥L‹D$é/ÆD$#ë‘A¿é½�H$€é®H‹›é¾èšÿÿ1ÒH‰IuH‹=:uè…ÿÿ1ÉH‰ ,uéñ ºH�5#ž1ÿèô ÿÿH‰Ç1ÀèZ¥H‹= uèNÿÿ1ÀH‰ýté+ºH�5$žëÇH‹D$L‹°�M…ö„ñéÇ 1ÿºH�5"Ÿè• ÿÿH‰ÞH‰Ç1Àèø¤é£ H‹ƒH…À„“ éÚ 1ÿºH�5xŸè[ ÿÿH‰Ç1ÀèÁ¤é61ÿH�5syè>ÿÿ„À…21ÿºH�5�Ÿè# ÿÿH‰Ç1À艤éèÿÿH‹ˆyH‹=ÙxH‹@H‹0èeÿÿH‰vyH…À…± H‹¶x1ÿºH�5МèËÿÿH‰ÇH‰Þ1Àè.¤é… ÇD$ÆD$#éY L‰çèÏÿÿºH�5C�H‰ÅH…À„èL‰çH�T$01öèØÿÿH‰ÇH…À„�H‹@HƒÀt ðHƒouèõ ÿÿHƒÅº+@H�5uH‰ßHƒåüèÿÿH…À„…H‹©xfHnÐó~ºH�5Xœ1ÿ1íè¿ÿÿH‰Ç1Àè%¡é H‹AH‰ÕpéI1ÿºH�5òœè�ÿÿH‰Ç1Àèó éÎÐ1ÿºH�5 r)$ègÿÿfo$L‰òH‰Ç1ÀÈfH~Îèªãÿÿé¾ÑI‹|$E1öè»ûH‰ÅI‹GI9D$„¨H‰ïè‘ÿÿM‹$$é�Òè“ûD‹D$H‹t$(‰ÚH‰Ç¹I‰ÄèwÞL‰çA‰Æè\ÿÿE„öuSHƒ=ßt… ÒHƒ=Ét…ÿÑH�=rèßÿÿH‰ÇH…À„çÑD‹D$H‹t$(¹‰ÚèÞ„ÀuéÈÑL‹$$H‹l$H‹\$ é¨ÏD‹D$H‹t$(‰ÚH‰ï¹èèÝD¶ðé6ÿÿÿöEDtJL‹ÒtºH�5&œ1ÿI‹@L‰D$H‹H‹EL‹(H‰ $è(ÿÿL‹D$H‹ $H‰êH‰ÇL‰î1À蟀=Üs„ÀH‹={tèvÿÿH‰ïH‰$èjÿÿ1ÿºH�5$œI‰ÅèÔÿÿH‹ $H‰êL‰îH‰Ç1Àè0Ÿéy¨„ÆH‹ L‹21ÿºH�5›H‰ $è–ÿÿH‹ $M‰èH‰êH‰ÇL‰ö1ÀèïžöC`…3‹EDé€H…À…"éPÿÿÿH�={^èóÿÿI‰ÅéÝ€=su L‰ïèÚÿÿéó1ÿºH�5¿›è"ÿÿH‰îH‰Ç1Àè…ž€=âr…ÆëÄH�}è}ÿÿI‹T$H�5rL‰ñH‰ÇH‰Å1Àè1 ÿÿH‰ÞH‰ïèþ„À…æéľØH�=>pè|g¶C`éÿH‹[ºH�5o›1ÿè˜ÿÿH‰ÇH‰Þ1À1Ûèù�éüÒÇCLòÿÿÿHÇC0éôÒH�5a›1ÿº‰L$èYÿÿ‹t$H‰Ç1Àè»�¸é_ÒI‹D$¹H‰CH‹¼MéfÒ1ÉH�5‚1ÀègÿÿH‰ÇéöÑ1ÒH�=˜o1À‰L$èKÿÿL‰ÿH‰ÆH‰D$è{ÿÿH‹t$‹L$H…Àu9º�"L‰ÿ‰L$è¬ÿÿ‹L$H…À…þÑéoÿÿÿ¾úH�=ÌNèmfé(ÑH‰÷H‰D$‰L$èÿÿ‹L$H‹D$éÄÑ€…{¿ èñ ÿÿ‹ $H‰Â1ÀH‰ƒù/vQH‹D$H‰ÁHƒÀH‰D$H‹ H‰JH‰ÁHƒÀH‰D$H‹ H‰JH�HH‰L$H‹H‰BH‹7mH‰H‰-mé$H‹|$‰Î�A‰$H‹47H‰rƒø/vH‹D$릉Æ�A‰$H‹47H‰rƒø/vH‹D$ë�ƒÁHø‰ $뛸é—Ò¸é�Ò€ú-t€ú:uHƒÃéÈÒ1ÀésÒ1ÀélÒH‹A(H‹@H‹€àH…À„ö@F„ éDH‰ñH‹òKH��0I9Є×éA€Mé~H‰i(éuöED@tpA€MéÄH‹s1É1ÒL‰L$L‰$èÔÿÿL‹$L‹L$H…À…’é²€y….H‹A(H‹@H‹€àH…À„ö@F„ ÆAH‰A(éÿA€MéT¾šH�=ÀNèmdéõH‹-KH‹{0H�L$L‰îH�� èÒ€=mtBH‹ýlH‰C8H‹C‹ wu¶@ƒàÓèHD$é¥H‹B@‹ ZuHÓèHðH‰D$é@ƒ=£luÀ1ÿºH�5K˜èÿþÿH‰Ç1À脚ë¡H‰Çé´H‹“JH�L$H‰ÞH�� èoÑH‹D$é1ƒ=Nl…³1ÿºH�5vlèÅþþÿH‰Ç1Àè+šé‘H��5¾GH�=µMèedUSHƒìƒøu4¸H�WH�l$ ‰D$ H‰êH‰Þ…ÀtUèoÿÿ‹D$ H‹=¼nƒèëÝ1ÀH�&H�l$ ‰D$ ƒøwH‰êH‰Þè=ÿÿ‹D$ H‹=ŠnƒÀëÜÇD$ ÿÿÿÿH‰êH‰ÞèÿÿHƒÄ[]ÃH‰ßèÛé½H‹{01öè›ÿÿH…À„©H‹¸ H…ÿtH‰D$è¬H‹D$H‹{0H‰ÆèkÿÿëÎAWM‰ÏAVI‰þAUI‰ÕATM‰ÄUH‰ÍSH‰óAS€= ouH�5ikH‰ßèƒÿÿ…À„òM…ät<ºH�5¾g1ÿèsýþÿAZI‰ÙL‰ù[I‰ÀL‰âH‰îH�=Ak]1ÀA\A]A^A_麘H…íu3ºH�5}g1ÿè2ýþÿAYH‰Ú[H‰Æ]H�=kA\1ÀA]A^A_邘M…ít>H‰êL‰îH‰ßè „ÀubM‹f`M…ät#I9ìu M‹¤$ëìL‰âL‰îH‰ßèß„Àu8ëâºH�5g1ÿè¼üþÿAXH‰ÙH‰î[H‰Â]1ÀA\H�=£jA]A^A_é ˜X[]A\A]A^A_ÃH‹€ H…À„gH‹xH…ÿ„ZL‰îèXûþÿ…À„ØéE€ tiH‰Ðé»1ÒK�47K�<4è½ýþÿ…À…éWH‹D$1ÒL‰ïH‹pè�ýþÿ…À…ÿéˆH‹T$L‰ïè˜^„À…séàATI‰üH‰×UH‰õSH‰ÓHƒì èýùþÿ„Àu H�5ÚŒ1ÿºèÆûþÿH‰ÞH‰Ç1Àè)—H‹ƒÈH‰âH‰ßH�5ÍL‰d$H‰l$H‰D$Æ$è�ÿÿŠ$HƒÄ []A\ÃH‰ÃH‹¯tH9xqu)HƒÀH‹=cqH�HÁàH‰ÆH‰‰tèLüþÿH‰EqH‹FqH�PH‰;qH‹,qH‰Âéë€=Lt„ÊH‹sH‹=‹kºèñÿÿI‰ÄH…À„ïH‰ÆH�=Êm1ÀèT L‰çè ûþÿL‰ç‰ÃèBÿÿƒû�åL‰òH‰çH�5Ow1ÀèÿÿºI‰à1ÀH‹=M…ÿtkI‹H…Àt]H‹H…ÀtUH‹sH‹xH‰T$èøüþÿH‹T$…Àu:L‹sºH�53c1ÿèèøþÿI‹OL‰êH‰îI‰ÀM‰ñH�=g1Àè:”ÆëIƒÆëˆHƒÄL‰ç[]A\A]A^A_éÿÿHƒÄ[]A\A]A^A_ÃÃH‹0H‹;èNÏ…À…B¸éCH‰êè [„À„(ëä¾mH�=pGè]éËHƒ=ŒeSH‰ûu¾ƒH�=XEèù\‹s0ƒþÿtH‹{èDüþÿÇC0ÿÿÿÿ1À[ÃE1ÿI9Ý„¡é˜H‹=�hºH‰ÞèäÿþÿH‰D$H…À…>é4D‰ïI‰Üè÷þÿ‹E¨téôI‰Ýé H‹|$è(ÿÿéRH‹}H�t$L‰l$è�ÿÿI‰ÇM…ÿ…‹‹E¨„îH‹D$H‹}H�t$H‰D$èaÿÿI‰ÇM…ÿ„ÊI‹H‹t$èGûþÿ…À…´A¶Gƒà8< „sM‹?ëÌA¶Vö„׉ÐÀè$uF‹E¨…pé‰H‹t$é&I‹L‰îèíúþÿ…À…aÿÿÿA¶Gƒà8<„M‹?é@ÿÿÿ<t <…sé8ÿÿÿ‹Eé:H‹t$éîL‹}é#H‹t$éÄH‹t$éÑM‹?M…ÿ…‚‹Eéÿ‹Eé÷¸é#ËH…Ò„©‹BD%ƒøÀƒÀé˸éûÊH‹@ézÊH‹cºH�5�1ÿD‰D$XH‹@ˆL$PH‰D$Hèöþÿ¶T$PH‹t$HH‰Ç1Àèv‘D‹D$Xé!ÊH9ÑtFI9Õ„QÊH…Òt.‹RD¸÷Â…�ʃâ@ƒúÀƒÀéqʸégʸé]ʸéSʸéIÊL‰úL‰îH�=Àeè þþÿH…À•ÂE1ÀI9ÇA•ÀA!Ðé}ÉA¸érÉH�1,¾*H�=sBè[¾üH�=bBèZéçÈI‰ÇA¸é6Éfo,$fod$H�jD‹{L‹ Â)d$`)l$pAƒÿ‡D‰øL‹DÄ`fot$0fo|$ H�ScD¾{H‰„$€)t$`)|$pAƒÿ‡“J‹Lü`L‹;1ÿºL‰L$XH�5ÏŽL‰D$PH‰L$Hè˜ôþÿL‹L$XL‰úL‰îL‹D$PH‹L$HH‰Ç1Àèé�é0ÉI‹wH‹=©eè´ùþÿ„À…ÉH‹­dƒx@…žA¶Giº ƒàH£Â‚ÉéÖȺH�5šb1ÿL‰L$PL‰D$HèôþÿD‰úL�=¸lH‰ÆL‰ÿ1ÀèKþþÿL‹L$PL‹D$HL‰ùé,ÿÿÿºH�5å�1ÿL‰L$HèÑóþÿD‰úL�=·lH‰ÆL‰ÿ1Àè þþÿL‹L$HM‰øé·þÿÿƒ{†…ÈéEȾ¡H�=°@èQXéêȸéÉ€<*…TÊ€|…IʶM1À8 tƒðZ[¶À]ÃYH‰îH‰ß[]é7÷þÿ¶M8Kuß¶M8KuÖ¶M8Ku͸¶€ú*t¶LHƒÀ8Ñtê1À뮸ë§H‹{è ÊéSʾIH�=þAé«WE1íA¾ éçD‰öL‰çƒÎè[I‹D$HéáH�5‰aL‰ÿA½èœöþÿ…À„²H�5uaL‰ÿè…öþÿ…À„¶H�5iaL‰ÿènöþÿ…À„”H�5aaL‰ÿA½èQöþÿ…À„gH�5SaL‰ÿA½è4öþÿ…À„JM‹l$@ºH�5ÃŒ1ÿè$òþÿH‰ÇL‰î1ÀE1íè„�éM‹l$@ºH�5–Œ1ÿè÷ñþÿH‰ÇL‰î1ÀE1íèW�éðA½éåA½éÚIƒ|$H…P1öL‰çèFéAL‰âH‰ßèVÖ1ÀHƒ=éçL‰øM…ÿu´é¢‹@$¨t8L‰õé4H�5FSH‰ßD‰L$èå|D‹L$„À…AöÁ„Ëé¾I‹FHéôH�5 SH‰ßD‰L$è¬|D‹L$„À„ÈéhH�¶R÷Æt!H�²R@öÆt@€æH�»RuH�¤RH‹‡€ˆ� éU‹Z$1ó‰Ú�â…$‹Y,A9X,…H�xI‰À1É1ÒL‰æH‰D$è/H‹D$é9H‹=þX1Ò1öD‰L$èðUD‹L$H…À…ïéâ€{aÇD$t.H�òQéãýÿÿL�|Yé%H‹�XH…ÀuE‹L$$éH�ºQéµýÿÿH�xI‰À1É1ÒL‰æH‰D$è�H‹D$é§1Ûë H‹EHH…À„ ‹@$‹<$1øöÄ HDÝH‹m0H…íuÛésÂD‹½¨éyÂD‹½¨é€ÂD‹½¨éÝÂD‹½¨é#ÃD‹<$1ÛA�çH…í„�H‹uHD‹µ¨H…öt"D‹v$M…ítI‹”$àH‹=×QL‰áAÿÕ„Àt‹$D1ð©…ŠH‰ëH‹m0ë«‹4$1Û1À�ÎH…ít_H‹UHH…ÒtN‹R$‰ñ1Ñ÷Át„À…¯Á�áHDÝH‹m0ëË€ât/H‰ë¸ëëé]ÁH‰ëéLÁ‹…¨éëþÿÿ‹•¨ë­ékÁö$tËé`ÁA�æ@„lÿÿÿE…ÿHDÝé`ÿÿÿD)ðL‹2téƒÃH�E¾1H�=‹/è;FéÄL‹2é�ÃH‹3L‰D$èJäþÿL‹D$H� êé5ÃI‹� L‹@ M…À…<ÄM‹é4ÄI‹‚ L‹p M…ö…öÃM‹2éîÃL‰ÈL Ðt{M…ÒtI‹E0H‹° L‹v M…ötjM…ÉtI‹ƒàH‹° L‹F M…ÀtSA€|$aH‰T$tKL‰öL‰Çè¬ÞþÿH‹T$H� LL‹2…ÀF„ÂI�VéåÁH‹HƒÂéÙÁL‹2éåÁL‹0ë‘L‹ë¨L‰ÆL‰÷èaÞþÿH‹T$H� ë³I�Vé¥ÁL9OH…ŠA‰Àé’L‰çéhI‹:H�5÷KL‰\$8DˆD$7H‰L$(L‰L$ H‰T$L‰T$èãþÿL‹T$H‹T$…ÀL‹L$ H‹L$(D¶D$7L‹\$8„—é¯H‹CH‹SH…ÀtDH‰PH…ÒtVH‰BH‹�˜E1ÒL‰SH…À„³H‰CH‰XH‰™˜ébH‰±�é H‰‘�ë·H‰XéDH‰FéÿH‰�˜ë¥H‹‚Ѓx…ËöB$„ÁHƒ=GZ„•H‹BH‰×H…À„oH‹Â)H� H9Є]H‹�Ѓz„QH‹@ëÉL‰Òé³E1ÉL‰KH‰™�éBÿÿÿA‰Àé.è~ÿÿH‹¼$�1É1ÒM‰ðL‰îèlM…ä„ÛéOè„‹ÿÿH‰Xé}I‹AfInáfHnÀflÄCI‰YH…ÀtLH‰XéUH‹��1öH‰sH…Àt=H‰CH‰XH‰™�é/H‰‘�é×I‰üéH‰BéÖH‰™˜é1ÒH‰SH‰™˜ë¼I‹L$XH�5ÔDH…É„ÐH‹ éÈH‰¹�H…ÿ„“H‰wH‹BfHnÂfHnèflÅCH‰ZH…À…’H‰™�éŠé éö@$HEøé¢þÿÿè^ÁésÁL‰âH‰ïèNÁé‡ÁèDÛþÿ‰ÇèMÜþÿºH�5Éz1ÿI‰ÆèwÜþÿL‰öH‰Ç1ÀèÚw1ö�K$€H‹=’RH‰s@éáÁH‰Þé"þ¡H�=O+èü@étÃE1À1öéÃH‹@HH…À„`ÃHƒ¸ð„RÃö@$…HÃé@ÃH‹@@H�xH‰D$èmèþÿI‹|$01ÉL‰îL‹D$H‰ÂH‰D$èñÛþÿ„ÀtbH‹D$H‹L$1ÒE1ÉE1ÀL‰÷ÆH‰ÆH‹úKI‹L$0ÿP(H‹|$èèþÿI‹U`H…ÒtH‹BHI‹M@H9ȃo1ÀA�M$€ I‰E@é¬I‹D$01ÿºH�5 zH‰D$ èNÛþÿH‹t$ H‰Ç1Àè¯vémÿÿÿ1ÉE1ÿ1íH‰ $H‰L$éyóo@(Æ@H‰Å1öH‹ &H‰u0)$H H‰E(é:fo $Dˆ}M(éW1ÿºH�5qyèÔÚþÿH‰Ç1Àè:vé,€?tQèÛÜþÿ¾?LH‰ÁH‰Ï‰ÖH‰L$‰T$è.ÛþÿH‹L$H…ÀuP€9t 1ÒH�|$(H‰Î‰T$H‰D$èwŠ‹T$…ÒuM‹¤$M…ä…ÞM‰êé ¾ÚKH‹D$H�Hë“Æ€9‹T$tîºë¤1ÿºH�5»xèÚþÿH‰Ç1Àè„uéH)ÈH‰BHé…þÿÿƒú tƒú…¥ÁH�{é‘ÁH�{éˆÁƒ=LG„Ù1ÿºH�5 ´èÃÙþÿH‰êH‰ÞH‰Ç1Àè#u鱃ÀHÒé´�΀‰r$H‹RH…Ò„ÐÃé•Ã1ÀÃÇCGèvȉÞH‰ïèüŶ˜IéGž°H�=f(è>éuÅL‰-GëÆ¾èH�=G(èô=éUH‹D$IÀéX"L‹s@ºH�5fy1ÿèÙþÿH‰ÇL‰ö1ÀèjtH‹CH‹p$‰ñƒáé9"I‹x@‹ ïNHÓïHúE…ö�( é‘M‹vM…ö„Þé–I‹D$HH‰MI�H$ éY¾°H�=§'èT=é!H�Ô¾fH�=Š'è:>¾KH�=y'è&=é«"I;F@„»$I‹F`º1ÿL‰T$PH�5DyDˆ\$HH‰D$8è-ØþÿH‹T$8L‰öH‰Ç1Àè‹sD¶\$HL‹T$Pés$I‹F`º1ÿL‰T$PH�5œxDˆ\$HH‰D$8èå×þÿH‹t$8L‰òH‰Ç1ÀèCsD¶\$HL‹T$Pé$I‹q0H)ðI‰FXAöA%u H‰ÐH)ðHÓàI‰A@M‰ŽM‰N`éGI‹D$HH‹t$X‹ ”MH‰÷H+x0H‹CH‰{HI‹T$H¶@H‰S@ƒàÓøH˜HðH‰D$XöB%…H+B0HÓàH‰B@é÷H‹C@º1ÿL‰D$@H�5HwH‰D$8è×þÿH‹t$8L‰úH‰Ç1Àè|rH‹CHL‹D$@é0¾ßH�=&è±;é1ÿè±pH‰ChH‰ÇH…À„ïé H‹EGH‹@ƒx„æ!L‹D$héœ1ÒH‰ßè“#éVÆEévºH�5w1ÿL‰T$8Dˆ\$èxÖþÿH‰Ç1ÀèÞqD¶\$L‹T$8é"L‹D$héC¸D‰ñHÓàN�DÿH÷ØI!ÀésM‹vM…ö… éGH�áFL‰æL‰T$PDˆ\$HL‰L$@L‰D$8èÔL‹L$@L‹D$8A‰F|D¶\$H‰ÁA‰A|L‹T$Pé7I‹F0I+A0L‰D$XI‰FXé‚I‹D$HH‰C H‹CH‰D$ék¾H�=¹$èf:éUƒ=ŠQ…€=_EL‹2ºtwH�5u1ÿèqÕþÿL‰öH‰Ç1ÀèÔpL‹sPH‹SHéØƒ=ÀB„hL‹{@L‹sh1ÿºH�5H‰ÆèÌØþÿ„À…©¾1ÿºH�5Þpè‘ÍþÿH‰Ç1Àè÷h釾H‹S81ÿºH�5qèhÍþÿH‰ÇH‰Þ1ÀèËhé[¾1ÿºH�5�pèCÍþÿH‰Ç1Àè©hé9¾L‹`0H‹81ÿºH�5ƒpèÍþÿL‰âH‰ÞH‰Ç1Àèvh銾H‹méž¾1ÿºH�5ÚpèåÌþÿH‰Ç1ÀèKhéw½H‹O=H‹@ƒx…í¾H�T$H�5UÑH‰|$èÉþÿH‹|$…À‰Ê¾èIËþÿ‰ÇèRÌþÿ1ÿºH�5ÄpH‰Ãè|ÌþÿH‰ÞH‰Ç1Àèßgé–¾E1ÉE1ÒH‹B0H‰T$(D‰L$\E1í1ÛH‰ÕL‰T$L‹²ð1ÉA‰ØD‰d$ÇþÿH‰Ç1Àè¤b‹C$%"=…ÒH�,DÇEH‰E(ÇE óoCPóoK@fÆÁEéOH‹i7I‹t$(H‰ïH‹@ÿPh¸éþ¾ÙH�=ò7èƒ+A‹D$$öÄ…4霾òH�=Î7è_+ë‘H‹o@H‹7H9…àt¾¤H�=§7è8+‹E$öÄu ÷Щ…¾H‹=Ø6H‰îè`ÑþÿH‰ÅH…À„tH‹CHH‹=¹6¾H‰EH‹C¶@ƒàH‰Eè,ÆþÿH‰E H…À„a‹SH‹E H‹K(‰H‹S8H‰PH…É„eÇEH‰Hé@¾H�=7è”*éã1ÿºH�5�jè¸ÅþÿH‰Ç1Àèaéä1ÿºH�5{jè–ÅþÿH‰Ç1Àèü`ém1ÿºH�5YjètÅþÿH‰Ç1ÀèÚ`é÷Щ„òé²¾3H�=u6è*éʾjH�=_6èð)é:öQ5 …‹C=„´‡Î=„æ=†ÃL�t$H‰ïL‰öèpÌþÿL‰÷èXÅþÿH‰ÅéÏ1ÿºH�5¢iè½ÄþÿH‰Ç1Àè#`éjþÿÿ1ÿºH�5€iè›ÄþÿH‰Ç1Àè`é}þÿÿH‹K ÇEH‹5ú4H9±à„ƒþÿÿH‹q`HQXH‰PH‰pé·L�t$H‰ïL‰öèÈÍþÿL‰÷èÀÉþÿH‰Åé7=„,H�V¾fH�=H5èÜ)L�t$H‰ïL‰öèuÉþÿL‰÷è=ÍþÿH‰ÅéôH‹S8HÐH!è„TéCH‹k8H‹C(1ÿA¸HC L‹#H�ºiH�5ãiH)ÅH‰éèPÌþÿH‰êL‰æH‰Ç1Àè_éNL‹H‹Eº1ÿH�5>iL‰T$L‰L$ L‰\$L‰D$H‰$èiÃþÿL‰éH‰ÚH‰ÇPL‹\$1ÀASL‹L$0L‹D$H‹t$è²^ZYL‹T$é¯H‹D$H�5¢hº1ÿL‰T$L‹H‹H‰L$(L‰\$ L‰D$H‰$èÃþÿVH‰Ç1ÀAUL‹\$0H‹L$8L‹L$ L‹D$H‹t$L‰ÚH‰L$ L‰\$è=^L‹T$(AÆB_AXL‹\$H‹L$éBHƒÄ8L‰ÿ[]A\A]A^A_é ÏþÿL‹#1ÿºH�5Êgè…ÂþÿH‰ÇL‰æ1Àèè]éâL‹#1ÿºH�5jgè]ÂþÿH‰ÇL‰æ1ÀèÀ]éºH‹I‰øI‰ñH‹@H‹�àH‹J1ÒƒyuH‹€ÐH‹��I‹H‹@H‹ˆàH‹Iƒyu$H‹€ÐH‹¸�H…ÒtH…ÿu#ƒÈÿH…ÿ…“¸H…Ò……A‹@A+AÃUƒÈÿSH‹Z`L‹_`H‹JXL‹S8H‹wXI‹k8IÊHõI9êrQL9ÕrGDŠÆ1AƒâA€útH‹R@H‹@H9úr.¸H9×r$HK0Is0ƒÈÿH9ñrH9Îr A‹@A+Aë¸[]ÃÃH‹CH‹;H‰�.èªÍþÿH‹{è¡ÍþÿH‰ßè™Íþÿéµ´‹Wf�âÿ fƒúuuH‹O€9.u.€yiufH‹W(‹ 7H‹R@HÓêH‰W0H‹{ H� H‰W(ÃH‹X1H‹w(H‹RH‹v`€zH‰w(•¶҃ÂHcÒ€<ouH‹V@‹ ¸6HÓêH‰W0ÃH‹5y+H‹=z+éMýH‹1H‹@ƒx•À¶ÀøH9÷sËI‹RƒÈÿ9Ñrò1À9Ê’ÀøH9÷r ‹I‹RƒÈÿ9ÑsÃ1À9Ê’ÀÃA€|-þ t\HíL‰ïH‰îè!ÁþÿI‰ÅIÆé�´IƒÀéù´L‰ñI‰îH‹,$I9Í…¸´L‰ïèbÌþÿL‰ç芿þÿ¸H�Ĉ[]A\A]A^A_ÃI‰îH‹,$é…´HƒéI9Èt€yÿ/tñH‹}L)ÁI‰ÏH…ÿtuH‹EH‹MI�tH9Îs=H�HH‰M¶ 1ˆ H‹EHEL‰ÆL‰ùH‰Çó¤H‹MH‹ELùH‰MÆé\´J�´9L‰$H‰uèEÀþÿL‹$H‰EH‰ÇH‹Eë�H�¹L‰$H‰}è ËþÿL‹$H‰E1ÀH‰Eë‹ÆA¶„À…Ñ´M‰àéz´H‹|$¾/L‰$èö¿þÿL‹$I‰ÇL‰ÇL‰D$(è¿þÿI‰ÆH‹D$I)ÇK�|7IƒÇè9ËþÿH‹t$L‰úH‰ÇH‰$èUÃþÿH‹$H‹t$(I�VJ�<8è?ÃþÿL‹$éd´M�`é|ÿÿÿ1Àé‘þÿÿèñ·1ÀéìµH‰-3:骶HƒÄHL‰÷[]A\A]A^A_é¸ÊþÿH‹@(H‹€àH…À„ò¶‹@D÷Щ…â¶éd·I‹E1ÒH‹ b,H‰I‹EH‰ÊH+I,HÁàH9‚]fo,,H-,foÈfI~ÆflÈ) $L9ð„ÏH‹$,H‰ÏHÐH÷ÒH!ÐH‹é+H‰ÆH)ÖH)×H9÷HBÁ1ÒfHnÀflÀ)Ï+I‹EH…À„’H‹0‰ÑH‹@ƒÂI‰4ÎëåL‰ï蘽þÿ�xè·L‹kH1ÿº‹ _3H�5ž.IÓíè@½þÿL‰îH‰Ç1Àè£Ëé+µH‹=-H‰ÚH�5´èÄþÿéFµL‹%Ü8E„í…º´1íé³´€ u+é%ÿÿÿI‹uºL‰÷E1ÿH� ½è%»þÿD‰øI;EsI‹<ÆH‰ÞAƒÇèSëåL95ë*s=L;5ú*s4fo$)Ü*éÊ´H‰ÆH�=½*H‰$èöH‹ Í*H‹$é€þÿÿL‰öH�=š*èu÷é“´S�?H‰ûuH‹w1É1ÒH�=u+èÁþÿH…Àu1Àƒà[ö@ 8Š)uíH‹SH‹=�,E1À1ÉA¹H�5;,èºþÿH…ÀtÆ·Pf�âÿ f�ú u¶H‹zH� H9P(u¢Hƒx0”À¶Àë—ŠGƒè<‡UH‰ýSVH‹G(H‹�àH9*,„ÞH…Ò„ÕH‹˜˜H…Ûu$¿èU.1ÉH‰ÃH‹E(H‰˜˜H‰[H‰Kë Hƒ{uH‰[H‹©)H+š)Hƒøw¾H�=p)èËôH‹|)H‹m)HƒÀH9Ðu€ �)H‹ v)H‹5G)HÈH÷ÑH!ÈH‹ O)H‰ÇI‰ÈH)÷I)ðI9øHBÁfHnÀflÀ))H‹CH‰*H‰HƒÂHÿCH‰SZ°[]ðúH�5 a1ÿ½襺þÿH‰Ç1Àè Vé–µ1íévµI^XéÇ´ÃH‹(H‹-ÿ'H…À„�·é”·Æ(H�,é±·H‹pH‹=£*1Ò1ÉA¸èl½þÿH�Ô+H…À„‡·¶Hƒé€ù‡w·H‹H(H�l$H‹=Œ*H�t$fÇD$[0H‹QXHP0ÆD$xH‹A`HP0èæÂþÿH‰ïèºþÿfÇD]é*·H‰-›5H�l$é·ƒx„UÿÿÿH�\+é·H‹ 4H�± éZ¶€A”ÄéD¶E1äH…öt9éL¶€H‹WH�55+tH�5%+HƒÄ8H�=•,1À[]A\A]A^A_éºÇH‹ÓH�° é¶H‹oºH�5…+1ÿè ¹þÿH‰ÇH‰î1ÀèƒÇH‹{芾HƒÄ8[]A\A]A^A_éw²ºH�5·*1ÿèä¸þÿH‹=u*D‰âH‰Æ1Àè½þÿHƒÄ8¾áH�=Ò[]A\A]A^A_éuH�=&+HƒÄ81À[]A\A]A^A_éÇHƒ=­.„Ú´€=8,…äH�=c*1ÀèÜÆH‹….H…Û„³H‰ßH‰îèq³H‹ëçH‹ Ý)º ¾H�=V+è¯ÂþÿH‹[H…Ût^H‰ßH‰îè;³H‹ëëH‹ §)º ¾H�=’*H�-™*èrÂþÿH‹[L‹#IÜH‹=y)I9Üt?¶SH‰î1ÀHƒÃè ¼þÿëàH‹ Y)HƒÄ8º ¾[H�=Ú*]A\A]A^A_éÂþÿHƒÄ8H‰þ¿ []A\A]A^A_éâ¹þÿH‹WH�5z*H‹=)HƒÄ81À[]A\A]A^A_é›»þÿH‹@è‚«¿èè°H‹C@L‹cHH…ÀtL`0H‹S‹ =-L‰æH�=Ú)¶BH‰ÅH‹B ƒåH‰êHÓêH‰Á1ÀèuÅH‹s(H…öt71ÀH�=¼)è^ÅH‹{0èe¼è`°‹ ê,H‰èHÓèLàH‰š2é³H‹C H‹0ëÀH‹ èãª1ÀH�=w)èÅ¿ è;°H‹C L‹cH…ÀtL`0‹ ”,H‹SL‰æ1ÀH�=I)HÓêèÜÄH‹k(L‹mM…íuYèÚ¯H‹C‹ `,HÓèLàH‰2鑲H‹w1ÀH�=@)èœÄH‹5}%H…ötH�=Û1Àè‚ÄH�=»3é\ýÿÿHƒÅL�5�(¶UH‹=ˆ'L‰ö1ÀHƒÅè"ºþÿIƒíuáéxÿÿÿH‹(èþ©¿èd¯H‹C(L‹c0H…ÀtL`0‹C-ƒøw¿èÕ§H‹C(H�=!H‹pXH‹@`Hs0Hp01À胼H‹sH�=e!1Àèq¼°[úH�5¹U1ÿèê­þÿH‰ÃÇEºH�5_!1ÿèÍ­þÿHƒÄL‰êH‰ÞH‰Ç[1À]A\A]A^A_éIºH�5!1ÿ蜭þÿH‰Ãë°L‰öH‰ßH‰L$è'ªþÿH‹L$H…À„Z°I‹WƒH ƒz…H°H‹“ÐH‰‚°é5°HƒÇu#è ¯þÿƒøuI‹F1É1ÒL‰îL‰÷ÿ�€éó°èæ®þÿ‰Çèß¶þÿH‰ÅH‹ºH�5Ò 1ÿè­þÿHƒÄ(H‰îH‰ÇH‰Ú1À[]A\A]A^A_éXHºH�5„ 1ÿèÕ¬þÿH‰Åë´‰ÁL‰âL‰îL‰÷AÿÐé…°QH‹=5H�5Þèy¯þÿ…Àyº1ÿH�5'Nè’¬þÿZH‰Ç1Àé÷G@•ÇX@¶ÿéÙ™HÇFé%±1öH‰s1Àéa±AWI‰ÿAVM‰ÆAUI‰ÍATE‰ÌUH‰ÕSH‰óHƒìHH‹HH…ÿu€=¥t!H‰ÞL‰ÿèùë1É1Òè×°þÿH…À…ëÖL‹=Í'M…ÿtL‰þH‰ßèå¯þÿ…Àuÿ¯'ë1ÒL‰ÿ‰¢'èI¸þÿH‰ßèñ­þÿH‰’'L‹=3M…ÿ„¹ƒ=w'‡¬1ÀL�©L‰|$ €=8L‰D$(H‰\$0H‰D$8t-ºH�5Ã91ÿèt«þÿL�rH‰ÙL‰þH‰ÇL‰Â1ÀèÊFH‹=ÃH�L$H�T$H�t$ èÏçI‰ÇH…Àt6H‹ ºH�5´91ÿH‰D$è«þÿH‹t$H‰Ç1ÀèyFL‰ÿèѳþÿ‹¿&M…ítgƒøwCºH�5ÍRE„äuH�5éR1ÿèÒªþÿHƒÄHI‰ØL‰ñ[H‰ÇL‰êH‰î1À]A\A]A^A_éFƒøu$ºH�5ÝRE„äu¿H�5 S붃øv&ƒøt;E„ätsHƒÄHH�=²1À[]A\A]A^A_éÔEºH�5SE„äu!H�54SëºH�5VSE„äuH�5‚S1ÿè+ªþÿHƒÄHH‰ÚH‰î[H‰Ç]1ÀA\A]A^A_é}EHƒÄH[]A\A]A^A_Ã1öèǰH‹SH…ÒtUH�56H‹=x1ÀY[]é®þÿH‹{èM¯H‹5^¿?è¬þÿH‹{ è3¯H‹5D¿:è¬þÿH‹[(é&¯X[]Ã1ö¿5èY°ºH‹ ¾H�=©èì³þÿH‹{ è㮺H‹ ï¾H�=‡èƳþÿH‹{è½®H‹5ο)AZ[]鈫þÿ‹;1öèï¯Hƒ{„{ÿÿÿH‹ ¥º¾H�=Bë¯H‹=‹H‹SH�51Àè!­þÿH‹{ ë™H‹ lº¾H�=è>³þÿH‹{è5®H‹S H�5óé¾þÿÿH‹sH�=L[1À[]é·H‹CH‹°àH…öt1ÀH�=Fèâ¶H‹CH‹S H‹0H�=�1ÀA[[]éŶZ¾H�=þ[]é ]H�=O[1À]é ¶H‹ñóH‹H‰·éµ­‰êH�5f1ÀèJ¬þÿé8¯ƒ=>üÿAVAUI‰ÕATUH‰ÍSH‹T$0H‹L$8„\1ÀI‰þH‰óL‰ÎH�=-M‰Äè6C‹ü…Àx&�Pÿ‰óûu1ÿºH�53Qèž§þÿH‰ÇéH…Û„ºŠC�Pú€úwH‹[(ëï<w4„À„…H‹[1ÿºH�5.QèY§þÿH‰îH‰ÇH‰Ú1Àè¹B锃è<wRH‹ÆòL‹k(H I9ÅuM‹vPëM‹µàH‹[1ÿºH�5Qè§þÿM‰ðL‰éH‰îH‰ÇH‰Ú1Àè]Bë;H�Lã¾\H�=èš ºH�5/Q1ÿèÀ¦þÿL‰êH‰îH‰Ç1Àè BM…ätL‰æH�=1Àè BH�=¤#[1À]A\A]A^éôA[]A\A]A^ÃAWAVAUATUSHƒìH‹‡H‹ïñH‹€˜ H� H‹h@L‹p8H‹E`H9Ðu%ºH�5ÌP1ÿAµè*¦þÿH‰Ç1Àè�AéìL‹¸ÐI‰üH‹}@I‹_HH…ÛtH]XëH‹� H…Ûuèm²þÿH‰ÃH‹E@H�SH‰ÞH‰×H‰T$L�hð1ÀL‰éóª¿I‹D$ÿ�˜I‹D$L‰ïH�sE1íÿ�˜I‹D$H�s¿~þÊÿ�˜ÇC FDOL‰÷è´¥þÿH‹|$L‰ö1ÒH‰Áó¤L‰çH‹uXIwL‹u@èÁ±þÿ…ÀuL‰âL‰öH‰ßè£þÿL9ðA”ÅIƒHuHƒ½ uH‰ß蟱þÿHƒÄD‰è[]A\A]A^A_ÃH‹H‹P0H‹H‹H0ƒÈÿH9Êr1ÀH9Ñ’ÀÃ1À¶„ÒtH‹ �ðŠˆHÿÀëæÆÃÃÆFÿ%¿ÃPH‹?赨þÿZ…À”À¶ÀÀ=tH‹H‹t H‹rH‹xé�¨þÿH‹rH‹x邨þÿAUI‰õ1ÿH�5lOATM‰ÄUH‰ÍSH‰ÓºPèl¤þÿAYM‰èL‰áH‰ÇH‰êH‰Þ1À[]A\A]é¾?AUI‰õ1ÿH�5HOATM‰ÄUH‰ÍSH‰ÓºPè(¤þÿAYM‰èL‰áH‰ÇH‰êH‰Þ1À[]A\A]éz?AWA‰÷AVI‰þAUI‰ÕATM‰ÄUH‰ÍSAQH‹H…Ût L9st@H‹ëð¿(èN°þÿfInÎ1öó~ïD‰xH‰ÃflÁH‰ÝH‰pH‰p éƒD9{tI‹^ºH�5ÏNëLH‹S H…ÒtbH‹…àH…ÀtVH‹RH‹’àH…ÒtFH‹RH‹@H‹2H‹8è=§þÿ…Àt/I‹^ºH�5©N1ÿè2£þÿYH‰Þ[H‰Ç]1ÀA\A]A^A_éŠ>¿ è�¯þÿ1ÒL‰hH‰hL‰`H‰H‹K H�S H…ÉtH‹H‹ ëóH‰HÿCX[]A\A]A^A_ÃAWAVM‰ÎAUM‰ÅATA‰ÔUH‰ÍSH‰óW€=*t$L‹~1ÿºH�5JNè�¢þÿH‰ÇL‰þ1Àè>€=üt!1ÒM‰ðL‰éD‰æH‰ßèjþÿÿ€{uÆCH‰k(X[]A\A]A^A_ÃUH‰õSRèo®þÿH…Àt#H‰ïH‰Ãèo¢þÿ1ÒHØŠ „Étˆ HÿÂëñÆX[]ÃAUI‰ýATI‰ôUSQèA¢þÿH�x舮þÿL‰çH‰Åè-¢þÿH�xèt®þÿL‰îH‰ïL�-VH‰ÃèáüÿÿL‰æH‰ßL�%UèÏüÿÿL‰îH‰ïèhÿÿÿL‰æH‰ïè]ÿÿÿL‰îH‰ßèRÿÿÿL‰æH‰ßèGÿÿÿ1ÀŠTA‰Ä:u HÿÀ„ÒuíEkä H‰ïèð­þÿH‰ßèè­þÿZD‰à[]A\A]ËKATUH‰õSH‰ûƒøu ƒ t餃øu ƒ …•‹E9C…‰L‹#H�5‘L‰çè¥þÿ…ÀtsH�5ˆL‰çèý¤þÿ…Àt`H�5L‰çèê¤þÿ…ÀtMH�5yL‰çèפþÿ…Àt:Hƒ=óu H‰êë'H‹uL‰çè¡þÿÿH‹uA‰ÄH‹ÎH‹8è‹þÿÿA9ÄÐ[1À]A\ÃUH‰ÍSHcÚPHƒÃCH‹9HÁãH‰Þ膡þÿH�5Ͻ¹H‰EH�„ ÷ÿÿH‰Çó¥Z[]ÃPºH�5ï1ÿèQ þÿ1öZH‰Ç1Àé¡~ÿÿPºH�5â1ÿè0 þÿ1öZH‰Ç1Àé€~ÿÿAWA‰÷AVM‰ÎAUM‰ÅATI‰ÔUH‰ÍSH‰ûHƒì€=pt H�5›K1ÿºèçŸþÿL‰æH‰Ç1ÀèJ;€=F„ H‹{P¾bè/ þÿH…Àu:Šƒà<u1ÿºH�5{K螟þÿH‰Ç1Àè;ë¾bH‰ïèõŸþÿH…ÀtÏH‹EH�t$Š@„Àt ˆD$H�D$ëH‰ðE„ÿtH¹__CTOR_LH‰H¹_LIST__H‰HëHº__DTOR_LH¹_LIST__H‰H‰HH‹{(A¸¹ºè<¢þÿH‰ÃH…Àu1ÿºH�5¶$èñžþÿH‰Ç1ÀèW:€{uÆCH‰k(M‰ðL‰éL‰â¾bH‰ßè¹úÿÿHƒÄ[]A\A]A^A_ÃP¹è¹q1ÀZÃAUL�-bATUH‰õ¾SH‰ûH�=BRL‹%Fêº I‹ $èð¨þÿI‹<$H9Ýr¿L‰î1ÀHƒÃè–¢þÿëäXH‰þ[¿ ]A\A]é  þÿPH‹êH‰úH�5ñóH‹81Àèd¢þÿ¿芨þÿATUH‰ýSH‰óHƒì€==tA¿ èÙŸþÿ‹³H�\H�5õIƒøƒÐÿ1ÿL‹$ºèÏ�þÿH‰ÇL‰æ1Àè29¶ H‹ éH‰ÊöHuH�\$ H�5m1ÀH‰ßèé§þÿºH�5½I1ÿè†�þÿH‰éH‰Ú1öH‰Ç1Àèä8HƒÄ[]A\ÃATI‰ÔUH‰ýS€~H‰óu I‹T$0H…ÒuëUH‹rH�{èÿs…Àtã1ÀëGH9ë”ÁHƒºð•À8Átç°H9ët+H‹‚ðH‰ïH‹0ÆèÆsŠ; …Àˆ”Àë°H9ëuµ[]A\ÃUSH‰ûHƒì(H…öu!H�l$ H�5˜1ÀH‰ïè§þÿH‰ïèßžþÿH‰ÆHƒÄ(H‰ÙE1ÉE1À[1ÒH�=U]éïVHƒ=? tkU¿ H�-gSRè©þÿH‹=" H‰ÃèB�þÿH‹  º ¾H‰ßèùšþÿH…ÀtÆH‰ÞH‰ï1Àè zÿÿëÏH‹=â è�þÿXH‰ß[]隨þÿÃUH‰õSH‰ûQHƒHuH¿(è�¨þÿ¹=ºH‹5VçH‰CHH‰ÇèRŸþÿ„Àu1ÿºH�5KèÛ›þÿH‰Ç1ÀèA7H‹{H¹ºH‰îè{ þÿH…Àu º1ÿH�5øL裛þÿZ[H‰Ç]1Àé7X[]ÀuCH‹çSH�˜ H9_(t1Àë(°öG t H‹w1É1ÒH�=Œ è þÿH…ÀtÛH9X”À[Ã1ÀÃH‹O ÿ`U‰õºH�5ýSH‰û1ÿPè!›þÿY‰êH‰ÞH‰Ç[1À]é6UH‰õSH‰ûQHƒt¾KH�=ˆéè²ÿÿÿH‹sH‹=c ºèÉ¢þÿH‰CH…ÀuH‹CH‰CH‹EH‰HƒÀH‰E°Z[]ÃHƒ=ëSH‰ûu¾°H�=·çèXÿÿÿH‰ß謜þÿ1öH‰Çèâ ºH…Àt€Ha€1Ò‰Ð[ÃHƒ=¦SH‰ûu¾¾H�=rçèÿÿÿH‰ßègœþÿ1öH‰Çè�11À[ÃATI‰ÔºU‰õH�5…FSH‰û1ÿèšþÿL‰á‰êH‰ÞH‰Ç1Àèx5ºH�5è1ÿèõ™þÿH‰Ç1Àè[5¿èq¢þÿ1ÿéz‰ATL�%“èUH�-ÓSH‰ûH…ÛtF‹C…ÀtÿÈt(H�þÕ¾™'H�=´èèdÿÿÿH‹sL‰ç1ÀèìwÿÿëH‹sH‰ï1ÀèÜwÿÿH‹ëµ[H�=ƒ]1ÀA\éÅwÿÿS1ÿHƒì‹_÷‰|$ ƒøÿueH�\$ E1À1Ò1öH‰ÙH�=yïèw¤þÿH…ÀuE1ÀH‰Ù1Ò1öH�=1è\¤þÿ‹D$ ƒøÿuH�LÕ¾¡H�=èÂþÿÿ…À•À¶À‰ñöHƒÄ[ÃPèyÿÿÿ¾H�=sèè°!H�î € " H‰#ôH‹ì5Æ H‰~ ZÃAWL�=Æ AVAUI‰õATUH‰ýSHƒìèÿÿÿL�5�ö1ÛM‰ôIƒ>„€I‹FH‰D$1ÀA€~$t èïþÿÿÿÈ•À¶ÀH‹t$H‰ïIƒÆ(HÆè+œþÿ…ÀuBHcÛH�5e H‰ïHkÛ(IÜM‰l$AÇD$ èœþÿ…Àu6èŸþÿÿH�-, …ÀIEïélÿÿÿÿÃévÿÿÿH�Ô¾­H�=õ è�ýÿÿHƒÄ[]A\A]A^A_ÃUH‰ý1ÒSHƒìH‹-ãH�t$H‹;è8•þÿH‰ïH‰ÆèùþÿÿH‹+H9l$u H�5D1ÿº耗þÿH‰îH‰Ç1Àèã2H‹D$H‰HƒÄ[]ÃUH‰õSAPè‘ÿÿÿH‹ÉâH‹Š<,uHÿÃH‰ïH‰Y[]épÿÿÿ„Àt#ºH�5çC1ÿè —þÿZH‰Þ[H‰Ç]1Àé€2X[]ÃAWAVAUATUS‰ûHƒìè�ýÿÿ�û¾„’�ë/1À�û­‡¶H�@ÐHcšHÐÿàH‹8âH�5ÄúH‹;è!ŸþÿH‰ZH…À…gH‹1ÿºH�5€Cè‹–þÿH‰ÇH‰Þ1Àèî1é?H�5¹ H�=Ê èÿÿÿé'H�5Ò H�=ä èêþÿÿéH‹-ºá¾:L�d$L‹mL‰ïè¼–þÿH…ÀH‰Ãu L‰ïèL–þÿ‰Ãëm1ÒH�xL‰æè:’þÿH�=® H‰ÆèWýÿÿH‹|$€?.uHÿÇL‰æ1Òè’þÿH�=¤ H‰Æè1ýÿÿH‹D$€8t1ÿºH�5ÍB踕þÿH‰Ç1Àè1D)ëH‹}1ÒL‰æèÍ‘þÿH‹T$Š €ù:”„É”ÁÊtH=ÿÿvnL�%H²L‹mHcÛ1íM‰çM‹4$M…öt!H‰ÚL‰öL‰ïèÅ’þÿ…ÀuA€<t-ÿÅIƒÄëÖ1ÿºH�5|Bè/•þÿL‰îH‰Ç1Àè’0éãHcíHÁåA‹D/HcðH�=ê ‰éòèXüÿÿé½H�=á è$ýÿÿé¬H�=å èýÿÿé›H�=y èýÿÿéŠH�=„ èñüÿÿéyH�=Ç èàüÿÿéhH�=Î èÏüÿÿéWH�=Õ è¾üÿÿéFH�=× è­üÿÿé5¾H�=× èºûÿÿéH�=Š è†üÿÿéÇþéÿE1ÛD‰3òéðÇ$òéáÆòéÕÆòéÉH‹tßH‹8è–þÿH‰¥é®ÇŽéŸH‹Jß1öH‹8èçšé‰ÇeézH‹%ß¾H‹8迚éaH‹ ß¾H‹8覚éHÇ é9Ç é*ÇVñéE1ÒD‰Gñé ÇÜéýÇÉéîǶéßE1ÉD‰ §éÐH‹{ÞH‹8è•þÿH‰„éµE1ÀD‰Ýðé¦Ç®é—1ÿ‰=¡éŠÇ–é{1ö‰5‰énÇ&é_ǃðéP1ɉ vðéCfƒ eð fƒ ]ð@ÇOðé$1Ò‰Bðfƒ%>ð¿fƒ%6ðßéf� (ð€éùf�%ðÿéëf� ðéÝf�%þïÿþéÏf� ðïéÁf�%âïÿýé³f� Ôïé¥f�%Æïÿûé—f� ¸ïé‰f�%ªïÿ÷ë~f� Ÿï ësf�%”ïÿßëhf� ‰ï€ë]f�%~ïÿëRH‹= èð�þÿ1ÀH‰÷ H‹èÜH‹H…Ûu H�ÿH‰ëH�5÷ìH‰ßè=•þÿ…ÀtH‰ßèa“þÿH‰º ·5#ïH�=¨èƒøÿÿ°ë1ÀHƒÄ[]A\A]A^A_ÃL‹«Ü1Ò¶¾ A¶9Èt)ÈÃHÿÂ…ÀuåÃ1Ò1À¶ H�r…ÉtiÉHÈH‰ÂHÁêH1ÐH‰òëÜiÒHÂH‰ÐHÁèH1ÐÃSH�5LþH‰ûè‘”þÿ…Àt6H�5EãH‰ßè~”þÿ…Àt#H�5*þH‰ßèk”þÿ…ÀtH‰ßH�5 [é÷)°[ÃSH‰û€;_uHÿÃëöH�5âH‰ßèÖ)‰ÂƒÈÿ„Òt9ŠK 8Ku1ŠS€úIt€úDu$¶K H‹…ÛƒÈÿöJtH�{ º 1öè$•þÿ[ÃAUATUSQL‹/L‹&I‹}H…ÿuH�=÷ I‹l$H…íuH�-æ èlÿÿÿH‰ï‰Ãèbÿÿÿ‰Â¸9Ó|¸ÿÿÿÿI‹ $I9M|ŸÀ¶ÀZ[]A\A]Ã1À‰ŠÁÿƒà<u€=öH�”VtOH�#=À=ïH�Ìit7€=ËH�ô”t'ƒ=#H�dëuƒ=H� ÀuH�KëÃAVAUATUSèµõÿÿŠGÿƒãƒ==íue1À€ûtPHƒ=Díu¸HÁà€ûu8¸HÁàƒ=t t&H‹=;êèáýÿÿºÿÿHÁâHÁàH!ÐH�êÿ?HÐH‰ÍìH‰í€û„ôH‹îûH�ŸìE1äH�xè³=Hƒ;„˜H‹kH‰ïè=(L‹kI‰Æ1À€{$t èñôÿÿÿÈ•À¶À1ÒI�|L‰öèGH‰ÇèšJ‹SƒúuH‹f‰*ë1ƒúuH‹‰*ë%ƒúuH‹H‰*ëH� Ͼ›H�=èÀóÿÿE…äuH‰ý AÿÄHƒÃ(é^ÿÿÿèœA‹ 9s%1ÿºH�58è»�þÿ[]H‰ÇA\1ÀA]A^é)[]A\A]A^ÃUSRöÆýt1ÿºH�56è��þÿH‰Ç1Àèç(Š¡ýH�.÷Шt1ƒ=-‹?ëH�€ÀuH‹XH…Ût HƒÀ9PðuîëH�ÎèÆóÿÿ…Àu)H‰ëöLýu€=Û÷uH‰ßèÉ"X[]é¡OH‰ßè)�þÿH�xèp™þÿH‰ÞÆ_H‰ÅH�xH‰ë苊þÿ므°upAUI‰õATUSH‰ûQH‹oH‰÷èèŒþÿ€}@LcàuA€}_uÿÈI�uH�}HcÐèŠþÿ…ÀtL‰âL‰îH‰ïèô‰þÿ‰Â°…ÒuB€|%@°u H‰s 1ÀZ[]A\A]ÃÃSH‹6H‰ÓH�= º踉þÿ…ÀuÇ[ÃëÚ€°upAUI‰õATUSH‰ûQH‹oH‰÷èIŒþÿ€}@LcàuA€}_uÿÈI�uH�}HcÐèg‰þÿ…ÀtL‰âL‰îH‰ïèU‰þÿ‰Â°…ÒuB€|%@°u H‰1ÀZ[]A\A]ÃÃPH‹w1ÀH�= èNŒþÿ°ZÃPH‹w1ÀH�=òè7Œþÿ°ZÃAWAVI‰öAUI‰ÕATUSH‰ûHƒì8ƒ=ýH‰L$t H‹H‹OH‹WH�=ÒH‹H‹p1Àèî‹þÿH‹CH‹KI‹¾à‹@fÁèƒà<„°w <t<tZé< „™<@„ÓéþH�T$(A¸L‰öè‹þÿ„À„ã¶l$(H‹SH‰èöB„ƒÀ€¶ÀH�h€éñH�l$(A¸L‰öH‰êèÓŠþÿ„À„ I‹†àH‹SH‰ïH‹@öBt ÿP`H‰Åé°ÿPXH‰Åé¥H�l$(A¸L‰öH‰ê臊þÿ„ÀtXI‹†àH‹SH‰ïH‹@öBtÿPHH‰ÅëkÿP@H‰ÅëcH�l$(A¸L‰öH‰êèEŠþÿ„ÀtI‹†àH‰ïH‹@ÿP(H‰Åë3I‹®àL‹cº1ÿH�5 èí‰þÿH‰îL‰áL‰òH‰Ç1À1íèH%ƒ=YtMH‹KH‹SH‰î1ÀH�=èVŠþÿH‹Cö@tH�=61Àè>ŠþÿH‹CH�=+‹p1ÀfÁîƒæè"ŠþÿL‰îH‰ßè:£ƒ=LúH‰D$„I�uö1É1ÒA¸H¸__nm_thnI‰EöfÇFk_H‹=”ùègŒþÿH…Àt €x„�‹ªH‹5›H�=º1ÀL‹%‹ùèÖÄÿˆL‰æI‰ÇH‰Çèâ‹þÿL‰ÿI‰ÄèW•þÿH‹XL‰æH‹xèô’þÿL‰çè,†þÿ¾L‰çèO�þÿH‹01ÒL‰ç‹p$I‹D$ÿ�˜1ÿ‰= ¿è•þÿºH�5;L‰çH‰åè¡óA¹L‰êH� zI‰ÀH�5L‰çI‰ÇèòóH‹ÜÓL‰êL‰çA¹H� KH�5úL�€èÅó¾L‰ÿèé�þÿ¿è�”þÿWÀ¹1öI‰‡ º?L‰çH‰D$èë“L‰ÿè ”‹KH‹5<L‰ç謋þÿH‹T$1ÉL‰þA¸L‰çè$‰þÿL‰ç茅þÿI‹4$L‰çèhòH‹øÆù�`DÿÿÿH…ít ƒ=[ø…"‹ûH‹5ìH�=31ÀL‹%Ü÷è'ÃÿÙL‰æI‰ÇH‰Çè3ŠþÿL‰ÿI‰Ä訓þÿH‹©L‰æH‹xèE‘þÿL‰çè}„þÿ¾L‰çè ‹þÿH‹�1ÒL‰ç‹p$I‹D$ÿ�˜1ö¿0‰5Yèd“þÿºH�5²L‰çH‰6èòñH�5L‰êL‰çI‰ÇH‹BÒA¹L�€H�°H‰Áè5òH�¡H‰ÆH‹ý€x(tH�5ýH‹ÒH‹T$A¹L‰çH� ?L�€èïñH‹ÙÑH‹T$L‰çA¹L�€H�?H‰ÁH‰ÆèÁñ¾L‰ÿèå‹þÿ¿è‹’þÿ¹º?1öI‰ÁI‰‡ 1ÀL‰ÏL‰L$ó«¹L‰çèÞ‘¹º?L‰ç¾ èÇ‘¹º?L‰ç¾è°‘L‰ÿèe’‹H‹5L‰çèq‰þÿH‹T$L‰þ1ÉA¸L‰çèé†þÿL‰çèQƒþÿI‹4$L‰çè-ðH…ít ƒ=5öt ƒ=,ö…Aƒ=ËtH‹t$‰êH�=³ 1ÀèÌ…þÿH‹C‹ªH�=H‹5”L‹%�õ‹@fÁèƒàˆD$1ÀèÈÀL‰æÿwI‰ÆH‰ÇèÔ‡þÿL‰÷H‰ÃèI‘þÿH‹JH‰ÞH‹xèæŽþÿH‰ßè‚þÿ¾H‰ßèA‰þÿH‹"1ÒH‰ß‹p$H‹Cÿ�˜ƒ=mõ¿u€=ƒ¿0t¿1ÉL�5€‰ Øèã�þÿºH�5NH‰ßH‰µèqï¾H‰ßI‰ÄH‹CH‹€xÿPxL‹=¸ÏL‰ñL‰öH‹T$A¹H‰ßM�‡è§ïƒ=Ýô…Ù€=ô½ u Ææ½A¹L‰êL‰ñH‰ßM�‡H�5Oè^ïH‰îL‰ç脉þÿH‰ïè,�þÿH‰éH�uøº?I‰ÅI‰„$ 1ÀL‰ïóª¹H‰ßèƒ�H�uôH‰ß¹º?èm�H‹C¶|$I�t-üÿPPHƒý tH‹CI�u¿ÿPPL‰çèû�‹¦H‹5—H‰ßè‡þÿI‰èën¾L‰çèåˆþÿ¿è‹�þÿ1ÒH‰ïI‰„$ I‰ÅH‰H‹CL‰îÿPP¹º?H‰ß¾èÙŽL‰çèŽ�‹9H‹5*H‰ß蚆þÿA¸L‰ê1ÉL‰æH‰ßè„þÿH‰ßè|€þÿH‹3H‰ßèYí‹��P‰†…À…‹üH‹5íH�=yþH‹ßòè*¾ÿÜH‰ÞH‰ÅH‰Çè6…þÿH‰ïH‰Ã諎þÿH‹¬H‰ÞH‹xèHŒþÿH‰ßè€þÿ¾H‰ß裆þÿH‹„1ÒH‰ß‹p$H‹Cÿ�˜1À¿‰]èhŽþÿºH�5ýýH‰ßH‰:èöìH�"ýH‰ÅH‹4€x(tH� ýE1ÉM�‡L‰ñL‰öH‰ßè6íH‰ï¾èZ‡þÿ¾¿è[�þÿ¹1öH‰ßH‰… º?I‰Äè_�H‰ï莋¿ÿH‹5°ÿH‰ßè …þÿH‰îL‰âH‰ßA¸1Éèš‚þÿH‰ßèþÿH‹3HƒÄ8H‰ß[]A\A]A^A_éÑëH…ítLH‹H‹kº1ÿI‹žàH�5  H‹L‹`èÜ€þÿHƒÄ8H‰éL‰òH‰ÇM‰àH‰Þ1À[]A\A]A^A_é(HƒÄ8[]A\A]A^A_ÃAVI‰öAUATI‰ÔU1íSH‰ûHƒìL�l$1ÒH‰îH‰ßèàŒþÿ…Àu'H‰Ú¾L‰ïèL†þÿ…À~L‰â¾L‰ïHÿÅAÿÖëÈ1Àë°HƒÄ[]A\A]A^Ãë—AWAVAUATUH‰ýSH�ìˆL‹·L‹§�M…ät.M‹¬$ðM…ítAƒ}u I‹] I;žÐt1M‹mëáM‹d$ëÍ1ÿºH�5 èØþÿH‰Ç1Àè>°é†Hƒ» uH‹{@è4ŒþÿH‰ƒ I‹†ÐI‹¾ÈH‹€ H‰$èQH‰ÇH‰ÃèŒþÿI‹¶ÈA‰ØH‰ïH‰ÁH�ÄþÿÿI‰Çè¥~WÀH�t$@H‰ïI‹†)D$@(÷H‰D$1ÀH‹L$‰D$P¸D$XI‹UH)ÈID$0HÐH‰D$hI‹„$€H�DH‹$H‰D$pè¾…þÿI‹u1ÒH‰ïI´$€èH‹þÿ…Àt1ÀéœH‹<$H‰ê¾èœ|þÿHƒøuâ¹H�D$ WÀL‰þH9ËH�T$D$ H‰ÇHFËH‰$HÇD$RSDSHÇD$8‰Éó¤L‰ÿèðŠþÿH‹$H‹t$p1ÉH‰ïè†þÿ…Àt…H‹\$I‹EID$0IdžÈH)ØI‰†ÀésþÿÿH�Ĉ[]A\A]A^A_ÃöYƒ=óî„‘Sè§äÿÿH�cù…ÀuH�YùH‹=vîA¹E1À¹H�5îèì{þÿH‰ÃH…Àu1ÿºH�5†èÁ}þÿ[H‰Ç1Àé&€xu&Æ@1ÀHƒ{ H‰C(uH‹=ðíH;_0tH‰Þ誀þÿ€K[ÃÃAVAUI‰ýATUH�-‚ÛSI‰ì1ÛèÿãÿÿHƒ}t?1À€}$L‹ut èçãÿÿÿÈ•À¶ÀI�<L‰îHƒÅ(è'�þÿ…ÀuHcÛHkÛ(A‹D ëÿÃëº1À[]A\A]A^ÃPè¨ãÿÿZéjeAWAVAUATUSVH‹o¾.H‰ïèþ}þÿH…Àu1Àé H�xH�5‰ôèÀëÿÿ‰Ã…ÀuãH‹5½üH‰ïè�~H‰®üH‰ÅH…ÀtÅD‹h@E1äE9å~ IkÄ(HEHH‹xèÁ|þÿ�P9Ú|�XIÿÄëÛHcûE1äL�=‡ùèðˆþÿL�5 ÏL�-"H‰ÅH‹PüD9c@Ž•IkÄ(HCHH‹XèÕâÿÿH�ÐòL‰öH‰ï…ÀH‰ÙID×1Àèp†þÿH‹=qìA¸H‰î¹ºè1þÿH‰ÃH…Àu1ÿºL‰îèê{þÿH‰Ç1ÀèP€{u1ÉÆCH‹=%ìH‰ÞH‰K(èá~þÿIÿÄéZÿÿÿH‰ïè!ˆþÿƒ{u€ ÔëH‹{HƒÿÿtXH‹ìHƒ=›ûH‰=¤ÙH‰=¥õH‹€ÇœÙH‰¸t!è.H‹gû1ÒH�=†ðH‰Æè4H‰CH‹3ûƒx ÿt2H�=¿ðè¦ýÿÿ…Àu"H‹ûHcP Hc@$H‰gõƒøÿtH‰cõH‹ôúƒx(ÿt2H�=Nðègýÿÿ…Àu"H‹×úHcP(Hc@,H‰8õƒøÿtH‰4õ°Z[]A\A]A^A_ÃAWAVAUATUSHƒìH€=bìtÆXúè+áÿÿèîËŠ¸ê¨u%ƒ=iØuƒà<„ˆH‹aúƒx@„wL‹-ØêI‹EH‹8è…€L‰ï蛜I‹…H‹€H‰ßùH‹PøH…À„7H‹¨ÅH� H9P`„H‹�ê1ÿH…ÀtH‹��H…Òt zxH‹RëòH‹€ëÝHcÿE1äHÁçèL†þÿL‰l$L‹=PêH‰D$M…ÿ„ÔL‰ÿèÊwþÿ„Àu*1ÿºL‹l$H�5› èŽyþÿL‰þH‰Ç1Àèñé”I‹‡ÈM‹¯�H‰D$M…í„vI‹E`H‹åÄH…ÀuH�‚ I‰E`éMH� H9Є=ö@$„3H‹@0H…À„&L‰îIEXL‰ÿ1íH‰D$ èãƒþÿHcøè{…þÿH‹L$L‰îL‰ÿH‰ÂH‰Ã赂þÿL‰|$0‰D$,9l$,ŽÒƒ=SôtH‹ëH�=æôH‹H‹H‹p1ÀèMyþÿH‹ ëH‹Aö@…“‹H‹ ÷;P„�;Pr 9Pƒs;P„jH‹H‹|$E1ÉE1À1ÉH�5‹èL‹8I‹Wè_vþÿA�€I‰Æ…âH…À„-Š@<…ÅfA�~Bi…I‹FHI‹VPH‹€‹H‹€€H‹ÐH…À„ð€x„æH‹wÃH� H9P(„ÎH‹D$IcÌH‹T$ HÁáHÁH‹ëHPD‰a H‰H‰ÐH‹ÑõH‹R`H;B0‚âI‹E`º1ÿH‰L$8H�5üL‹0è|wþÿH‰ÇL‰ö1ÀèßH‹L$8é¬<t‹éTH‹åÂI‹W H H9B`uI‹}H�5<äè%{þÿ…À…Wÿÿÿé M…ö„IÿÿÿL‰÷è…Ûÿÿ„À„9ÿÿÿAöF„üM‹wH�51ìL‰÷èázþÿ…À„ÿÿÿH‹ZõH�5ì€x(tH�5ùëL‰÷è¶zþÿ…À„èþÿÿé±H‹ëH‹pD‹v‹VfAÁîÁê Aƒæƒâ?AiÆè Ð=’etO=�>t7=Â]tH=€>uLÆAAÿÄëc=}t=úu5ÆA AÿÄëLÆAAÿÄëCÆAAÿÄfÇA ë4ÆAAÿÄë+‹…Àt%ƒøt H�5Ùÿ1ÿºèvþÿD‰öH‰Ç1ÀèxHÿÅé$ýÿÿH‰ßL‹|$0èc‚þÿM‹mé�üÿÿM‹¿é#üÿÿL‹l$E…ä„èH‹|$IcôºH� þSètþÿH‹5Xõ1Ò1ÉH‹\$IƒÈÿH‰÷H‰ØA9Ì~5H‹HÁê L9Ât HƒÇHƒçüHƒÇ€xtHƒÇëHƒÇI‰ÐÿÁHƒÀ²ëÆ„ÒM‰ïI‰ÝHDþIƒÎÿHƒÇHƒçüH‰=ìôè¿�þÿ1É1ö1ÿH‰ÒôHƒÊÿH‰ Ïô‰t$‹L$H‹¸ôA9ÌŽïI‹]H+´ôH‰ÝH�åðÿÿH9Õt_1Ò÷Çt Æ8²HÿÇëí„ÒtH‰=}ôIƒþÿtJ�t0I‹GL)÷ÿPPI‹GH‹5]ôH‰ïH5KôÿPPL‹5IôI�~H‰=>ôH‹5/ôI‹G�ãÿHþA¾}Áç HcÿHßÿPhH‹ôA€}H�xH‰=ôu(H‹5ñóI‹GHþI¿} ÿPhH‹ãóH�xH‰=ØóÿD$IƒÅH‰êéýþÿÿM‰ý1Ò÷Çt Æ8²HÿÇëí„ÒtH‰=¥óIƒþÿtJ�t0I‹EL)÷ÿPPH‹5‰óH‹=òH…öt<è yþÿèËb¾1ÿè_^èÚ`¿èðDH‹ÑñH‹BóH‰� ë(H…ÿt#¾Àèú~þÿH‹¿H‹¤ñH� H‰P`Hƒ=™ñ„�H‹=¬ñè×þÿ‹-)óH‹ šñH‰ÆH‰øòH�@(H‰D$‹óD�$­H‰÷Mcäí�…H‹D$HcíHcÛHØIÄH‰D$1ÀóªLåI‹…Hc¸¬ƒÿÿu!1ÿè#uþÿH‰ÇH‹‘òH�pI‹Eÿ�˜ëI‹EHƒÆÿ�˜H‹¬òHcxhƒÿÿt/H‹\òH�pI‹EÿPhH‹JòH�p H‹òHcxlI‹EÿPhH‹¥ðH‹&òE1öH‹R`H�p H‹z0H‰êH+=òH)ÂI‹EH×ÿPPH‹5™ðH‰ïèéoþÿH‰ïèarþÿHc= òH�lH‹ÖñH�pI‹EÿPPH‹ÄñHc=ÕñH�pI‹EÿPPH‹«ñHc=ÄñH�pI‹EÿPPH‹ ðH‹‹ñH‹R`H�pH‹z0H‹T$H+=kñH)ÂI‹EH×ÿPPH‹×ïH‹XñH‹R`H�p H‹z0H‹T$H+=8ñH)ÂI‹EH×ÿPPH‹¤ïH‹%ñH‹R`H�p$H‹z0L‰âH+=ñH)ÂI‹EH×ÿPPH‹;ñD9p@Ž¢Mkþ(H‹@HJ‹|8èWqþÿH�xèž}þÿH‰ÃH‹ ñH‹PHJ‹t:H‹|ï€z(t€>@tÆ_H‹@HH�{J‹t8è”nþÿëH‰ßèŠnþÿH‹=+á1É1ÒH‰ÞA¸èñsþÿH…Àt€xuH‹P0H‹›ðJ‰ðH‰ßIÿÆè }þÿéMÿÿÿ1ÒE1ÿ‰T$D9x@Ž�Mk÷(H‹pHLö‹^ƒûÿ„nH‹ Nð@Š~$N� ýJ‹ ù@„ÿu H…É„I‰ÞI‹E+5ðH‹T$ÁæL‹ÝïHcöH‹@PHÖ@„ÿtXH‹ GîH‹I`H‹y0H‰éH+ ½ïL)ÇHÏÿÐH‹ îïH‰ïH‹AHH‰L$ J‹t0è�mþÿH‹L$ H‹AHJ‹|0èýoþÿH�lëH‹=¯ïJ‹<L)ÇHyXH‹I`Hy0ÿÐH‹›ïH‹HHLñ€y"…“H‹AH…ÀuH‹H‹ ¯íH‹t$H‰D$ H‹I`H‹y0H‰éH+=ïH+ ïHÏI‹MÿQPH‹t$ H‰ïHƒD$èïlþÿH‰ïègoþÿ+ïL‰æIƒÄH�lI‹EHcûÿPhH‹ ï‹\$H‹HHB‰\1‰ÙÿÁ‰L$IÿÇéiþÿÿH‹ íH‹¡îH‰� Š ߉Â÷Ò€âuI‹•Ç‚`H‹-“ÞH…í„ÊL‹-£îAƒ}@u¨„´H‰ïè¤tþÿ1öH‰ïèúuþÿH‰ÃH…Àu%1ÿºH�5TøèonþÿH‰îH‰Ç1ÀèÒ éu€=öÝt H�5~ê1ÿºèAnþÿH‰îH‰Ç1Àè‘Lÿÿ¾H‰ßE1äè´rþÿ€KI H‰ßèE{L‹5¡ÞH‰l$I‰ÇL‰õI‰ÞH…í„cH‹+ì1ÀH…Ût#„Àu'1Àƒ{uH‹uH‹;èÄlþÿ…À”ÀH‹[ëØ„À„H‹…ðH…ÀtH‹8ëH‹}1öè%mþÿH‰ÃH…Àu)H‹]1ÿºH�5×éè†mþÿH‰ÇH‰Þ1ÀèééŒHƒ½ðH‰Â„¶1Ò¾H‰Çè´vþÿ„Àu9I‰î1ÿH‹mºI‹†ðH�54÷H‹è,mþÿH‰êH‰ÇH‰Þ1ÀèŒé/1ÒH‰ÖH‰ßèªwþÿH‹uH‰ÂH…ÀtH‹:H‰T$èákþÿH‹T$…ÀuÓë9H‹…ðH‰t$1ÿºH�5÷H‹èÄlþÿH‹T$H‰ÇH‰Þ1Àè"éÅL‰¢øI‰ÔH‹­é”þÿÿ1ÀH‹l$L‰|$H‰D$H‰l$L‰õ‹D$A9E@Ž/H‹aìHk\$(H‹@H€| … I‹EHH‹=¡ÜE1À1ÉHØH‹L‹pH‰PL‰ö1Òè\oþÿH…Àt€xBjuH‹ª·H�ÂH9P(„¾H‹zê€x(u0I‹}H1ÒH‰îH߀#”ÂèE~I‹UHL‰ øI‰ÄL‰té�A€>@tÊL‰÷èîkþÿH�xè5xþÿL‰òH�5ÔI‰ÇH‰Ç1ÀèîuþÿH‹=ïÛ1É1ÒE1ÀL‰þè¸nþÿL‰ÿH‰D$ èëwþÿH‹D$ H…À„qÿÿÿ€xBj…gÿÿÿH‹ì¶H�ÂH9P(…OÿÿÿHÿD$éÃþÿÿH‰ëL‹|$H‹l$H‰ßèX{M‰§øH‰ßL‰¸øH‰Æèãiþÿ„Àu H�=põèsH‰ßè»sþÿ„ÀuH‰îH�=QçèXL‹%™æM…ä„EH�5ÜÎL‰çè9sþÿH‰ÃH…Àu H�5Bõ1ÿºè®jþÿL‰æH‰Ç1ÀèH‹’êH…À„²Hƒ8„†ƒxH‰Ùtº¾H�=éæèètþÿ뺾H�=ÚæèÐtþÿH‹AêºH‰ÞH‹8èŒuH‹²ÚH‹€H‹�H…ÒtH�5£æH‰ß1ÀèNnþÿH‰Þ¿ èalþÿH‹òéHƒxt>H‰Ùº ¾H�=væèZtþÿH‹ËéH‰ÞºH‹xèuH‰Þ¿ èlþÿH‹¦é‹Hl‹PhƒùÿtH�5@æH‰ß1ÀèÒmþÿëƒúÿtH�57æH‰ß1ÀèºmþÿH‹kéƒx ÿuƒx(ÿt H‰Þ¿ èºkþÿH‹Ké‹H$‹P ƒùÿtH�5æH‰ß1ÀèwmþÿëƒúÿtH�5ýåH‰ß1Àè_mþÿH‹é‹H,‹P(ƒùÿtH�5êåH‰ß1ÀèH…ÿt/1Ò1öL‰L$è{ÖL‹L$H…ÀI‰Ftƒ¸¨u A‹V‰�¨IƒÆ0IƒÁ0M9îu¯Æ†âŠðÒD‹k$H‰Þƒà<tgH‹¾àè–hþÿH‰ÆH…ÀtSHƒ~`uå‹F$‰Â‰ÁD1ê�ဃâ ÊuÎH‹–àöBD@uÁH‹’ H…ÒtöB`u¯E‰éƒðAƒñA ÁAƒñE‰Íë™E1öA÷Å„ŽL�5¤áA÷Åt=Iƒî0A÷Åt0I�î�A÷Åu ºH�5ŸßH‰ïIƒÆ`èf_þÿ…ÀuIƒî0M‹~M…ÿu8I‹>1Ò1öèYÕI‰FI‰ÇH…Àu I�V1ÉD‰îH‰ßèÌ@I‰ÇH…ÀuL‹=ÝÍH�5Ø¿èü¿H‰Æè¿"L‰ùM‰ðH‰îI‰ÁPH‰ßÿt$‹T$è"—ZYI‰ÇŠ—Ñƒà<u‹K|¿Óçè!û‹S|I‰GxI‹GH‰P|I‹_I�oH…Ût=ƒ{u/H‹C¾$L‹0L‰÷è¬aþÿH…ÀtHƒ<$tL‰öL‰çèõdþÿ…ÀxH‰ÝH‹ë¾Hƒ|$ tH‹D$(H‰H‹D$ H‰EHƒÄ8L‰ø[]A\A]A^A_ÊB`ƒàþÈ…ƒ=YßAVL�5@“AUATI‰ôUH‰ÕSL‹jtLI‹|$èÄ`þÿL‰ïI‰Æè¹`þÿH‹=ÜH‰Ã‹ßM�t1ÀH…ÿt+è˜`þÿë$è‘`þÿH9Ãs‰öÞIƒÆI‹>‹éÞH…ÿuÞë¤J�<3HÇè¶lþÿI‹t$L�%º’H‰ÇH‰Ãèÿ_þÿÆ/L�pI‹4$H…ötKA€|$t!H‹�ÛH…ÒuIƒÄëÝL‰éL‰÷1Àè8jþÿë L‰êL‰÷1Àè)jþÿH‰îH‰ßè[„ÀtÏH‰]ë H‰ßè,lþÿ1À[]A\A]A^Ã1ÀÃPH�¸ÜH� {ÞèÚ^Z¶ÀÃUH‰ÍSHcÚPHƒÃEH‹9HÁãH‰Þèy`þÿH�5b‰¹(H‰EH�„`÷ÿÿH‰Çó¥Z[]ÃAWAVI‰öAUI‰ÕATUH‰ýSHƒì8ƒ=.ÝH‰L$t H‹H‹OH‹WH�=—ÚH‹H‹p1Àè³_þÿH‹MI‹¾àH�\$,L‰öA¸H‰Úè_þÿM‹¦à„Àu/H‹]ºH�5ïæ1ÿèÐ^þÿL‰æL‰òE1äH‰ÇH‰Ù1Àè*úëI‹D$H‰ßÿP@I‰Äƒ=—ÜtMH‹MH‹UL‰æ1ÀH�=åæè(_þÿH‹Eö@tH�=Ú1Àè_þÿH‹EH�=ýÙ‹p1ÀfÁîƒæèô^þÿL‰îH‰ïèÈă=ÏH‰D$„I�uö1É1ÒA¸H¸__nm_thnI‰EöfÇFk_H‹=fÎè9aþÿH…Àt €x„¬‹$ÚH‹5ÚH�=ŒÙ1ÀH‹]Î訙ÿÚH‰ÞI‰ÇH‰Çè´`þÿL‰ÿH‰Ãè)jþÿH‹ÒÙH‰ÞH‹xèÆgþÿH‰ßèþZþÿ¾H‰ßè!bþÿH‹ªÙ1ÒH‰ß‹p$H‹Cÿ�˜E1É¿D‰ �ÙèäiþÿºH�5 ÙH‰ßH‰^ÙèÆA¹L‰êH� KÚARI‰ÀH�5êØH‰ßjI‰ÇèC€E1ÛL‰êH‰ßH‹ ¨A¹D‰$H� ÚH�5ÀØL�€è€¾L‰ÿè¯bþÿ¿èUiþÿ¹1öH‰ßI‰ÁI‰‡ 1Àº?I‰L‰L$(èÏ‚L‰ÿ脃‹·ØH‹5¨ØH‰ßèp`þÿH‹T$(1ÉL‰þA¸H‰ßèè]þÿH‰ßèPZþÿH‹3H‰ßè-ÇH‹ÞÌÆÛÍ�`DÿÿÿXZM…ät ƒ=Í…0‹fØH‹5WØH�=ö×1ÀH‹ŸÌèê—ÿDØH‰ÞI‰ÇH‰Çèö^þÿL‰ÿH‰ÃèkhþÿH‹ØH‰ÞH‹xèfþÿH‰ßè@Yþÿ¾H‰ßèc`þÿH‹ì×1ÒH‰ß‹p$H‹Cÿ�˜1É¿0‰ Å×è(hþÿH�5{׺H‰ßH‰¢×è\ÄH‰ßA¹L‰êI‰ÇH‹§VH�5,×jL�€H�qØH‰Áèz~H�bØ_AXH‰ÆH‹c×€x(tH�5ÐÑPH‹¾¦A¹H‰ßjH‹T$ H� úÖL�€è.~1ÀH‹T$H‰ß‰$H‹‡¦A¹L�€H�õ×H‰ÁH‰Æèû}¾L‰ÿè›`þÿ¿èAgþÿ¹º?1öI‰ÁI‰‡ 1ÀL‰ÏL‰L$ ó«¹H‰ßè´€¹º?H‰ß¾ è�€¹º?H‰ß¾膀L‰ÿè;�‹nÖH‹5_ÖH‰ßè'^þÿH‹T$ 1ÉL‰þA¸H‰ßèŸ[þÿH‰ßèXþÿH‹3H‰ßèäÄXZM…ät ƒ=êÊt ƒ=áÊ…Vƒ=ì×tH‹t$D‰âH�=gâ1Àè€ZþÿH‹E‹ÖH�=¹ÕH‹5ðÕH‹AÊ‹@fÁèƒàˆD$1Àè|•H‰ÞÿÓÕH‰ÅH‰Çèˆ\þÿH‰ïH‰ÃèýeþÿH‹¦ÕH‰ÞH‹xèšcþÿH‰ßèÒVþÿ¾H‰ßèõ]þÿH‹~Õ1ÒH‰ß‹p$H‹Cÿ�˜ƒ=!Ê¿u€=Ã׿0t¿E1ÉL�53ÖD‰ 2Õè•eþÿºH�5ÕH‰ßH‰ÕèÉÁ¾H‰ßH‰ÅH‹CH‹€xÿPxL‹=j¤L‰ñL‰öARA¹H‰ßjH‹T$M�‡èÙ{ƒ=‹ÉA[X…â€=+×A¼ u Æ×A¼VM�‡L‰êL‰ñjA¹H�5øØH‰ßèˆ{L‰æH‰ïè*^þÿL‰çèÒdþÿL‰áI�t$øº?I‰ÅH‰… 1ÀL‰ïóª¹H‰ßèI~I�t$ô¹H‰ßº?è2~H‹C¶|$ K�t%üÿPP_AXIƒü tH‹CI�u¿ÿPPH‰ïè½~‹ðÓH‹5áÓH‰ßè©[þÿM‰àëm¾H‰ïè‡]þÿ¿è-dþÿ1ÉL‰çH‰… I‰ÅH‰H‹CL‰îÿPP¹º?H‰ß¾èœ}H‰ïèQ~‹„ÓH‹5uÓH‰ßè=[þÿA¸L‰ê1ÉH‰îH‰ßè·XþÿH‰ßèUþÿH‹3H‰ßèüÁ‹¾Õ�P‰µÕ…À…Æ‹GÓH‹58ÓH�=ÓH‹‚ÇèÍ’ÿ'ÓH‰ÞH‰ÅH‰ÇèÙYþÿH‰ïH‰ÃèNcþÿH‹÷ÒH‰ÞH‹xèë`þÿH‰ßè#Tþÿ¾H‰ßèF[þÿH‹ÏÒ1ÒH‰ß‹p$H‹Cÿ�˜1Ò¿‰¨Òè cþÿºH�5 ÒH‰ßH‰…Òè?¿H�ÅÑH‰ÅH‹Ò€x(tH�­ÑPE1ÉM�‡L‰ñjL‰öH‰ßèZyH‰ï¾èú[þÿ¾¿èûaþÿ¹1öH‰ßH‰… º?I‰Äè|H‰ïèÔ|‹ÒH‹5øÑH‰ßèÀYþÿH‰îL‰âH‰ßA¸1Éè:WþÿH‰ßè¢SþÿH‹3HƒÄHH‰ß[]A\A]A^A_éqÀM…ätMH‹EI‹žàº1ÿH‹mH�5?ÞH‹L‹`è{UþÿHƒÄ8H‰éL‰òH‰ÇM‰àH‰Þ1À[]A\A]A^A_éÇðHƒÄ8[]A\A]A^A_ÃAWAVAUATUH‰ýSH�ìˆL‹·L‹§�M…ät.M‹¬$ðM…ítAƒ}u I‹] I;žÐt1M‹mëáM‹d$ëÍ1ÿºH�5ÞèàTþÿH‰Ç1ÀèFð°é†Hƒ» uH‹{@èH‹¨ÂfHnØó~›ÍH� ÔÑÿÿH‹’flÃH‰ŠÀ‚ÈHÇ@@5ë2ºH�5•Ü1ÿèÞQþÿH‰Ç1ÀèDíH‹=MÍè8^þÿ1ÀH‰?ÍH‹8ÂH‹CƒxuH‹ƒH…Àt€xuu H�5�Ü1ÿºè‰QþÿH‰ÞH‰Ç1ÀèììH‹õÁH‹¶¯¹dH�5RËH‹€H�¸Ðó¥‰�`¶E¯ƒˆ¸ ÷Úƒ=)¯‰�¬yY€=WÁ?wPŠNÁH‹§¿H�-°Äÿÿƒà<u0Çó®ë)H‹{0E1ÉH�T$0H‰îD‰L$0èä[þÿƒ|$0uÔH‹[HH…Ûu×H‹=MÁèsH‹AÁH‰$H‹@H‹8èêVH‹¢ÐH…À„F1ÿH�ªÍH�5/L‹x`‰=ÏÎH‹=ØÀè{WþÿHc=¼ÎHÁçèë\þÿH‹=¼ÀE1ÀH�lÍH�5p1H‰ŒÎD‰�Îè@WþÿHc5�κH‹=mÎH� &0èqNþÿH‹ÐL‹hPH‹ÐM…í„|‹PX1À9Â~H�HHkñ(M9l7àtH‰Èëè‰Ã9Ð�LI�}H‰=,ÎèïQþÿH‰Hζ„ÒtH‹ "›öQŒuÆ_HÿÀëäHcÃE1ÉL‰|$(Hkè(H‰D$L‰l$ D‰L$LýH‹|Ï‹L$9HXްH‹D$ H;E…¡H‹}DŠ/èŒOþÿH�xèÓ[þÿL‹uI‰ÄA€ý@t0¾@L‰÷èÉOþÿH�DÌH…ÀH‹ Í”Àx(tH�²ÅëL‰öH‰Ç1Ûè¹LþÿëL‰ñH�5¡¡L‰ç1ÀèCYþÿH‹=D¿E1À1É1ÒL‰æè RþÿH…Àt €x„BL‹EA€ý@uL‰ÁH�EÏL‰ç1ÀH�5R¡èùXþÿë3H‹ÍH� «Ë€x(tH� &ÅH�ÏH�5 ¡L‰ç1ÀèÄXþÿH‹=žE1À1É1ÒL‰æèŽQþÿH…À„¼Š@„Ûu E1íþÈ”ÃéÁE1íþÈ„¶M�l$L‰ïèYNþÿH�xè ZþÿL‰îH‰ÃH‰ÇèÂKþÿ1ÿ€;@¾@@”ÇHßèŒNþÿI‰ÅH…ÀtÆ@Hc1ÌL‹="ÌH‰l$H‰ÝH‰ÓH…Ût.I‰ÞH‰ïIÑîIÁæMþI‹6èªQþÿ…À„®~M�~HÿËHÑëëÍH‰ëH‹l$ЏÿÆEH‰E0I‹F(H‰E(I‹FH‰EuP1ÿºH�5vÒè9GþÿL‰êL‰þH‰Ç1Àè†%ÿÿ€=ãÆu$ºH�5„Ò1ÿè GþÿH‰Ç1ÀèsâÆ½ÆH‹m éýýÿÿL‹d$ H…ÛtH‰Ú1öL‰ÿè!°H‰ßèôGþÿH‰ßèþÿƒ=ç»uH‹2ÀE1í1íL‹`HL‰ãéˆ1íL�%«ÀH‹ÀH‹PH9h@~ÏLkí(L‰æJ‹*H‰ßè�Ù„À…„¾@H‰ßèx@þÿH…ÀtrÆD$01À€;@”ÀH�<èíAþÿ¾@H‰ÇH‰ÃèM@þÿH‹5®¿1ÿH‰ÚÆèVG…Àu H‰ßè Lþÿë*H‹=Œ¿E1ÀƒÉÿH‰ÞL�L$0H‹GHJ‹T(èV.€|$0uÌHÿÅéIÿÿÿ…í„ûH‹sØH‹;èECþÿ…À…çIcÅHkÀ(M�t؋ۺE‹~Aƒÿÿ„ž‹Kƒùÿ„’A9Ï„‰…Àt3I‹º1ÿ‰L$H�5GÌH‰$èö>þÿ‹L$H‹4$D‰úH‰Ç1ÀèQÚ‹CƒøÿtA‰FfnC fAnV VÐfA~V H‹;è)KþÿH‹{è KþÿH‹{èKþÿÿÅHƒÃ(H‹’¾;h@Œ(ÿÿÿëJ…ÀtªM‹>1ÿºH�5Ìèu>þÿH‰ÇL‰þ1ÀèØÙë…D9ítIcŹ H‰ÞHkÀ(LàH‰Çó¥AÿÅëžD‰h@IcýE1äHÁçè²JþÿH‰¾H‹¾Hcx@HÁçè—JþÿÇí½H‰ÂH‰ë½H‹ô½H‰×1ÒHcH@1À‰ϽHÁáóª1ɉ ¹½‰ ¯½‰ ¥½H‹½D9`@Ž«IkÜ(H‹@HL‹tL‰÷èëL‰÷èÓ=þÿH�xèJþÿI‰ÅH‹¼€x(t)A€>@t#AÆE_I�}L‰öè#;þÿL‰ïè‹?þÿH‰Çè£ë L‰öL‰ïè;þÿH‹=§­1É1ÒL‰îA¸èm@þÿH‰ÅH…ÀtOŠP�Bý¨ýuEH‹½ÿú¼HXH€{"uÿæ¼H‹ ï¼H‹E(J� á€útH‹@H‰‹CƒøÿuDéÁ¾.L‰÷èi=þÿH…ÀtQH‹żÿ£¼HXH€{"uÿ�¼‹CÆC$ƒøÿ„‚;…¼~‰}¼;s¼}‰k¼ÿY¼ë^H…ít9Š]ºH�5Ê€ût11ÿH�5AÊè\<þÿ¶Ó¹L‰öH‰Ç1Àè·×ë ºH�5QÊ1ÿè2<þÿL‰öH‰Ç1Àè•×L‰ïIÿÄèŠHþÿéDþÿÿH‹¼ƒx@uö1¬„rƒ= ·…eƒ=»»‹½»t$‹=½»9×~‰ø)Ћ«»ÿÀ9Ð}!‰Ÿ»‰ÂëÇ‘»‰×‰�»º)×ÿlj=j»HcÿHÁçèHþÿ‹ X»1ÒH‰G»9Ñ~ Ç�ÿÿÿÿHÿÂëðE1ä1íH‹ [»H‹=D»D9a@ŽÃMkü(H‹QHJƒ<çJ�:u €{$„‹D‹sAƒþÿt^H‹ìºE‰õD+-úºMcíJc¨ƒøÿt6HkÀ(H‹H�5HÉ1ÿH‹ ºH‰ $èì:þÿH‹ $H‰ÚD‰öH‰Ç1ÀèHÖH‹™ºF‰$¨H‹¾ºÿÅH‹XHLûH‹{H…ÿuH‹;èÜ:þÿÅ€{$t H‹{èË:þÿ�lIÿÄé%ÿÿÿLchºL‹Iº1ÀL‰Ó9A@~GHkÐ(HQHHƒ<Çu€z$t-ƒzÿu'H‰ÞL)ÖI�4³I‰ñI‰ØHƒÆHÿÃAƒ9ÿuíA‰IcØD‰BHÿÀë´D‹% ºA�üÿÿ�ûÿÿ~&1ÿH�5‡Èºè:þÿA9܉ÞAMôH‰Ç1ÀèbÕH‹=C¸‹½¹è:þÿ¿H‰Â‹¢¹�D �C�DEH˜H�DH‰ ¸èºCH‹= ¸èÿ[H‹1¨H…Û„ãH‹C0Hƒ¸ðuH‹[HëãL‹ �E1ÿE1ö1íM‰åM…ít>I‹}H�5<µH‰<$èI=þÿH‹<$H�5ë¶…À”À¶À ÅèÏÒEuxM‹m¶ÀA Ç뽃õD!ýƒåtšE…öt•M…ät�H‹{0L‰æèîCþÿH‰ÅH…ÀŽxÿÿÿH‹{0è7þÿL‹{0„Àu.H�5òÉ1ÿºèÞ8þÿHƒÄhL‰þ[H‰Ç]1ÀA\A]A^A_é3ÔH‰ïM‹¯Èè4EþÿH‹{0L‰æL‰éH‰ÂI‰ÆèoBþÿ‰Å…Ày3L‰÷èEþÿ1ÿºH�5+Çè~8þÿHƒÄh[H‰Ç]1ÀA\A]A^A_éÖÓE1íD9펓K‹îH‹H‹ö@u{H‹pH‹=—¨1É1ÒA¸è`;þÿH…Àt\€xuVH‹@(H‹S0H‹ˆàH‹’ðH‹�ðH9Ðt4H…ÀtL‹8ëL‹9H‹:L‰þèÛ6þÿ…ÀtH‹C0H‹€ðH‹€ L‰x ëIÿÅédÿÿÿL‰÷è/DþÿM‹d$é–þÿÿH‹->¦H…í„ÒL‹m0Iƒ½ð„ñM‹e¾.L‰çè’8þÿH…À„×H�XH�5¹H‰ßèT¦ÿÿ…À„¼H�53µH‰ßè=¦ÿÿ…À„¥I‹��E1ÿE1öE1íH…ÛtHH‹;H�5³H‰<$è;þÿH‹<$ºH�5¬´…À”À¶ÀA Åèo4þÿ…À”ÀDsxH‹[¶ÀA Çë³E…ÿtC³aE…íu E…öžÃƒÃbL‰çèý6þÿH�xèDCþÿ¾ËH�5š´I‰ÄH‹E0L‰çH‹1Àèö@þÿL‰e H‹mHéëþÿÿE1í„Û„ëÿÿéSèÿÿƒ=n”„Ôüÿÿ1ÿè{@H‹=δèÀXé¼üÿÿI‹uH‹=±¦E1À1É1Òè}9þÿ€xI‰Æ„šêÿÿé¥èÿÿH‰ÚH‹=‰¦E1À1ÉH‹r1ÒH‰ëL‰íL‹l$èF9þÿ€xI‰Æ…Ééÿÿé^êÿÿI‹vH‹=Q¦E1À1É1ÒH‰ëH‹l$è9þÿ€xI‰Æ…<èÿÿé-êÿÿHƒÄh[]A\A]A^A_ÃAWAVAUATUSH‰ûH�ìˆèCœÿÿH�=á‹èØ;H‹S0ÆD$kŠBHƒàþÈ…H‹‚ŠHuˆL$k„É„ƒ¸`ÆD$k„îH‹CH‰D$H‹ȳH‹|$H‹0èÃ4þÿºH�5$³I‰ÆH…Àt+H‹|$èuã¾L‰÷è¨?þÿˆD$k„Àu'ºH�5ÔÃ1ÿèý4þÿH‹t$H‰Ç1Àè^ÐérH�l$v¾<L‰÷ÆD$vH‰êè‡O€|$v‰Ãu¶�³„H‰êL‰÷èmO€|$vuž…À„/�³ˆH‰êL‰÷èMO�³ŒH‰êL‰÷A‰Äè9O€|$v‰ÀH‰D$…_ÿÿÿH…À„ï�sH‰êL‰÷èÊN�sH‰êL‰÷‰ÀH‰D$XèµN€|$v‰ÀH�\…!ÿÿÿD‰àI‰ÝE1äH‰D$H�D$wH‰D$0H‹D$XI9ă¼A�u H‰êL‰÷è´NA�uH‰êL‰÷A‰Çè¢NA�uH‰êL‰÷‰D$ è�N€|$v‰D$(…¸þÿÿ1ÒL‰îL‰÷è@þÿ…À…£þÿÿH‹|$0L‰ò¾è�9þÿHƒø…‡þÿÿL9|$r5‹D$ LøH9D$s'H‹L$D‹d$(H‹T$IÌHÊM)üH9ÐsH)ÈH‰D$ëIÿÄIƒÅ(é6ÿÿÿE1ä1ÿE1ÀE1ÉL‰d$`H‰|$0E1íHÇD$PL‰D$(HÇD$HL‰L$ HÇD$@H‹D$XI9Ń}L�d$v�sL‰÷L‰âè©M�s L‰âL‰÷A‰Çè˜M�s$L‰âL‰÷‰ÅèˆM€|$vÆD$‰ÀH‰D$8…©ýÿÿ1ÒH‰ÞL‰÷è ?þÿ…À…”ýÿÿL�d$wL‰ò¾L‰çèo8þÿHƒø…uýÿÿH�5B¢L‰çèf6þÿ…Àu?I�/ƒ=ï­H‰D$ t#L‹L$8I‰ÀH‰éL‰âH�5»rH�=DÁ1ÀèÝ2þÿH‰l$@é H�5M®L‰çè6þÿ…Àu@I�/ƒ=�­H‰D$(uH‰l$HëtL‹L$8L‹D$(H‰éL‰âH�5`rH�=éÀ1Àè‚2þÿëÒH�5’¡L‰çèÁ5þÿ…Àu:I�/ƒ=J­H‰D$0t#L‹L$8I‰ÀH‰éL‰âH�5rH�=ŸÀ1Àè82þÿH‰l$PIÿÅHƒÃ(éuþÿÿL‹d$`H‹|$èø=þÿ1ÒL‰æL‰÷H‰ÃèÈ=þÿ…À…PüÿÿH‹t$L‰òH‰ßè07þÿH9D$…5üÿÿH‹D$L‹-1±I‰ÜI)ÄM…íuèÉH‰±I‰Å‹k I‹}PLåH‰î膟H…Àt#ƒ=‰¬„‰H‰îH�=ñ®1ÀèŠ1þÿés‹CH‰éL‰ïH‰D$H‰Æ‹CH‰D$‹C Là‹H‰D$Lâè�A‰Æ…ÀyE1öéNE1ÿH‹D$I9ǃ%H‹D$F‹,¸H‹D$LàF‹¸H‹D$@I9ÀrH‹D$ ºI9Àr3H‹D$HI9ÀrH‹D$(ºI9ÀrH‹D$PH‹L$0I9À“À1ÒI9È’Â!ÂC�>H‰î‰T$lMåL‹ °HcÛL‰D$`HkÛ(L‰ÏIY`L‰L$Xè¨.¹ H‰ßH‰D$81Àó«L‰ïè 2þÿH‹t$8L‹L$XD‰{ ‹T$lH‰CH‰s1öH‰H‰sAÿAXƒ=E«‰S$t4…ÒL‹D$`L‰éH‰êH�¶¬L� ƒ­LDÈH�5pH�=³¾1Àè$0þÿIÿÇé×þÿÿH‹D$H�58«F‹<°MçL‰ÿèñÈ„ÀtIÿÆH‹D$I9ÆrÔéÙH‹D$ÆD$wLàB‹°H‹D$@H9ÃrH‹D$ A½H9Ãr7H‹D$HH9ÃrH‹D$(A½H9ÃrH‹D$PH‹L$0H9ÓÀE1íH9ËA’ÅA!ÅPH‹=Ù®E1ÉE1ÀD‰ñH‰êL‰þH�D$PèœZY€|$wuD‰h$ƒ=;ª„PÿÿÿL� ¸«E…ítL� €¬I‰ØL‰ùH‰ê1ÀH�5ønH�=©½è/þÿéÿÿÿÆD$kŠD$kH�Ĉ[]A\A]A^A_ÃS1ÿHƒì‹�‰|$ ƒøÿueH�\$ E1À1Ò1öH‰ÙH�=\„èk9þÿH…ÀuE1ÀH‰Ù1Ò1öH�=+¬èP9þÿ‹D$ ƒøÿuH�`n¾šH�=¬è¶“ÿÿ…À•À¶À‰�HƒÄ[ÃPèyÿÿÿ¾H�=6„褶H�⢀ � H‰‰H‹èÊÆŸH‰ržZÃAWL�=º¢AVAUI‰õATUH‰ýSHƒìèÿÿÿL�5ÁŽ1ÛM‰ôIƒ>„€I‹FH‰D$1ÀA€~t èïþÿÿ…À”À¶ÀH‹t$H‰ïIƒÆ HÆè1þÿ…ÀuBHcÛH�5Y¢H‰ïHÁãIÜE‰l$ AÇD$èô0þÿ…Àu6èŸþÿÿH�- ¢…ÀIEïélÿÿÿÿÃévÿÿÿH�#m¾µH�=íªè‘’ÿÿHƒÄ[]A\A]A^A_ÃUH‰ý1ÒSHƒìH‹!xH�t$H‹;èÌ(þÿH‰ïH‰ÆèùþÿÿH‹+H9l$u H�5Ù1ÿºèt,þÿH‰îH‰Ç1Àè×ÇH‹D$H‰HƒÄ[]ÃUH‰õSAPè‘ÿÿÿH‹½wH‹Š<,uHÿÃH‰ïH‰Y[]épÿÿÿ„Àt#ºH�5ÛØ1ÿè,þÿZH‰Þ[H‰Ç]1ÀétÇX[]ÃAWAVAUATUSHƒì�ÿ¾„’�ï/1À�ÿ«‡üH�;iHcºHÐÿàH‹3wH�5¿�H‹;è4þÿH‰UœH…À…­H‹1ÿºH�5{Øè†+þÿH‰ÇH‰Þ1ÀèéÆé…H�5´ H�=Å è ÿÿÿémH�5Í H�=ß èñþÿÿéUH‹-µv¾:L�d$L‹mL‰ïè·+þÿH…ÀH‰Ãu L‰ïèG+þÿ‰Ãëm1ÒH�xL‰æè5'þÿH�=© H‰Æè^ýÿÿH‹|$€?.uHÿÇL‰æ1Òè'þÿH�=Ÿ H‰Æè8ýÿÿH‹D$€8t1ÿºH�5È×è³*þÿH‰Ç1ÀèÆD)ëH‹}1ÒL‰æèÈ&þÿH‹T$Š €ù:”„É”ÁÊtH=ÿÿvnL�%ãSL‹mHcÛ1íM‰çM‹4$M…öt!H‰ÚL‰öL‰ïèÀ'þÿ…ÀuA€<t-ÿÅIƒÄëÖ1ÿºH�5w×è**þÿL‰îH‰Ç1Àè�Åé)HcíHÁåA‹D/HcðH�=埉‹è_üÿÿéH�=ÜŸè+ýÿÿéòH�=àŸèýÿÿéáH�=tŸè ýÿÿéÐH�=Ÿèøüÿÿé¿H�=Ÿèçüÿÿé®H�=ÉŸèÖüÿÿé�H�=ПèÅüÿÿéŒH�=ÒŸè´üÿÿé{¾H�=ÒŸèÁûÿÿéeH�=…žè�üÿÿéTÇY§éEE1ÛD‰ZŠé6ÇKŠé'Æ;ŠéÆ/ŠéH‹otH‹8è+þÿH‰§éôÇí¦éåH‹Et1öH‹8èXKéÏÇĦéÀH‹ t¾H‹8è0Ké§H‹t¾H‹8èKéŽÇ¦éÇl¦épÇ}‰éaE1ÒD‰n‰éRÇ;¦éCÇ(¦é4H‹”sÇ®¦H‹8H…ÿ„€?„H�t$1Òè!$þÿH‰ ‰éöE1ÉD‰ w¦éçH‹GsH‹8èç)þÿH‰¸¥éÌE1ÀD‰Ɉé½Çz˜é®1ÿ‰=m˜é¡Çb˜é’ÇS˜éƒ1ö‰5F˜évÇO¥égƒ ?¥ é[ƒ%3¥ßéOÇHˆé@1ɉ ;ˆé3fƒ *ˆ@Ljé1Ò‰ˆfƒ% ˆ¿éf� ý‡€éùf�%ï‡ÿéëf� á‡éÝf�%Ó‡ÿþéÏf� ŇéÁf�%·‡ÿýé³f� ©‡é¥f�%›‡ÿûé—f� �‡é‰f�%‡ÿ÷ë~f� t‡ ësf�%i‡ÿßëhf� ^‡€ë]f�%S‡ÿëRH‹="¤è¥2þÿ1ÀH‰¤H‹�qH‹H…Ûu H�¹“H‰ëH�5¬�H‰ßèò)þÿ…ÀtH‰ßè(þÿH‰×£·5ø†H�=]œèDøÿÿ°ë1ÀHƒÄ[]A\A]A^A_ÃAWAVAUATUSQè[÷ÿÿŠá•‹‡ƒã…ÀuM€ût<ƒ=‡u ¸@€ûu)ƒ=!¤¸tH‹=߀è…”ÿÿHÁà%üƒ†‰¹†‰ó†€û„ùH‹Ÿ’H��†1íH�xèeÔHƒ;„›Lcs L‰÷M‰ôèì¾L‹kI‰Ç1À€{t è¬öÿÿ…À”À¶À1ÒI�|L‰þè±ÝH‰ÇèIá‹Sƒúu H‹fD‰"ë2ƒúuH‹D‰"ë%ƒúuH‹L‰2ëH�çd¾²H�=É¢èmŠÿÿ…íuH‰{¢ÿÅHƒÃ é[ÿÿÿèKØ‹¡9¡s(º1ÿH�5ç«èj$þÿZ[H‰Ç]1ÀA\A]A^A_éÅ¿X[]A\A]A^A_ÃUSRöo”t1ÿºH�5³è*$þÿH‰Ç1Àè�¿ŠJ”H�;¢÷Шt1ƒ=ž¢‹…H�éLuH‹XH…Ût HƒÀ9PðuîëH�ücè{õÿÿ…Àu)H‰¬�öõ“u€=„ŽuH‰ßèr¹X[]éJæH‰ßèÒ#þÿH�xè0þÿH‰ÞÆ_H‰ÅH�xH‰ëè4!þÿë¯ö¬“„žƒ=F”„‘SèõÿÿH�¶ž…ÀuH�¬žH‹=É“A¹E1À¹H�5d“è?!þÿH‰ÃH…Àu1ÿºH�5Ù¨è#þÿ[H‰Ç1Àéy¾€xu&Æ@1ÀHƒ{ H‰C(uH‹=C“H;_0tH‰Þèý%þÿ€K[ÃÃATƒ=õƒÿUSH‹F0H‰óÆGH‰G0H‹F(H‰G(uuL‹fH‹oº1ÿH�5T²è—"þÿL‰âH‰îH‰Ç1Àè÷½€=¡uAºH�5â®1ÿèk"þÿH‰Ç1ÀèѽºH�5ý®1ÿèN"þÿH‰Ç1Àè´½ÆÑ H‹{[]A\épë€uÿL¤°ÃÇŠE’ƒà<u€=z“H�¡t?H�ë À=s“H�¡t'€=O“H� ¡tƒ=§’H�!¡uH�¡ÃH‹H‹¸H9ÊrƒÈÿH9Ñr‹V ¸9W œÀ¶À÷ØÃëЀuÿÊŸ°ÃH‹5¢‹¢H‰ùH…öuH�5Ï H�=× 1Àéż‹5c‚…öx3QH‹GH‹€xÿPx„Àuº1ÿH�52±è%!þÿZH‰Ç1À銼XÃÃPHƒÇè�-þÿH‹†¡H‰¡HƒÀH‰PøZÃH‰ðH øtH…ÿtH…öu HƒÿÀƒÈÃéÄ$þÿ1ÀÃATI‰ÔUD‰ÅSH‰ûH‰÷H‹sH…öuH‹3H…ÉHEùè´ÿÿÿ…ÀuH‹sL‰çè¤ÿÿÿ…Àu‰è+C[]A\ÃAUI‰õATI‰ÔUD‰ÅSH‰ûH‰ÏAQH‹sH…ötHƒÆèmÿÿÿ…Àu1H‹sL‰ïè]ÿÿÿ…Àu!H‹3L‰çèNÿÿÿ…Àu9k t ¸ºÿÿÿÿOÂZ[]A\A]ÃH‹GH…ÀuH‹H‹VH…ÒuH‹H‰ÖH‰Çéò#þÿëÛH‹6H‹?éå#þÿëóH‹=l H…ÿuÃPH‹H‰[ èF,þÿH‹=O H…ÿuåZÃAVAUI‰ýATUH�-�SI‰ì1ÛHƒ}t?1À€}L‹ut è=ñÿÿ…À”À¶ÀI�<L‰îHƒÅ èq#þÿ…ÀuHcÛHÁãA‹DëÿÃëº1À[]A\A]A^ÀutATUH‰ýSHct¡H‹HÁãH]¡èX!þÿ¾@H‰HcQ¡1ÀI‰ÜHÁãH9¡H‹;€?@”ÀHÇè˜þÿH…ÀtÆ@H‹EAÿÄD‰%¡H‰C°[]A\ðÀutATUH‰ýSHc�H‹HÁãH�èÛ þÿ¾@H‰Hcôœ1ÀI‰ÜHÁãHÜœH‹;€?@”ÀHÇèþÿH…ÀtÆ@H‹EAÿÄD‰%¼œH‰C°[]A\ðÃUSH‰ûQH…ÿtè†þÿH�hH‰ïè3ýÿÿH‰ÞH‰éH‰ÇH‰Ãó¤H‰ØZ[]Ãé�AWI‰ÿAVE‰ÆAUI‰ÍATI‰ôUSH��Hƒì(H…ÒtH‰ÓL‰çL‰L$ÆD$è%þÿH‰ßH‰ÅèþÿH�|è`*þÿH‰ÙL‰âH�5]�H‰ÅH‰Ç1Àè(þÿM‰øD‰ñH‰êPH‹=…žL‰îH�D$'PL‹L$èÜŠHƒÄ8H‰ï[]A\A]A^A_éü)þÿAWAVAUATI‰ôUSH‰ûHƒì8Š¢�‰T$ ƒà<t=¾$L‰çL‰åèçþÿH‰$H…Àt-I‰ÇM)çI�è¿)þÿL‰æL‰ùH‰ÇH‰Åó¤BÆ8ë 1ÿH‰õH‰<$1öH�D$ ƒ|$ H‰t$ H‰D$H‰D$(ud1Ò1öH‰ïE1íèu�I‰ÇM…ÿt\I‹GHH…Àt,‹@$…Àt3C$¨u!H‹|$M‰ø1É1ÒH‰ÞèbBÇD$ …ëM‰ýL‰ÿè­ÇD$ …I‰Çë®E1íE1ÿM…ÿ…"M…ítI�}M‰è1É1ÒH‰ÞM‰ïèBéeM…ÿ…ù€=yžumL�5H�L� �„M�®ð¹ L‰÷L‰Îó¥I‹>H…ÿt/1Ò1öL‰L$è§�L‹L$H…ÀI‰Ftƒ¸¨u A‹V‰�¨IƒÆ0IƒÁ0M9îu¯Æ žŠŒD‹k$H‰Þƒà<tgH‹¾àèÂ!þÿH‰ÆH…ÀtSHƒ~`uå‹F$‰Â‰ÁD1ê�ဃâ ÊuÎH‹–àöBD@uÁH‹’ H…ÒtöB`u¯E‰éƒðAƒñA ÁAƒñE‰Íë™E1öA÷Å„ŽL�5�A÷Åt=Iƒî0A÷Åt0I�î�A÷Åu ºH�5˘H‰ïIƒÆ`è’þÿ…ÀuIƒî0M‹~M…ÿu8I‹>1Ò1öè…ŽI‰FI‰ÇH…Àu I�V1ÉD‰îH‰ßèøùI‰ÇH…ÀuL‹= ‡H�50‘¿è(Ö¿H‰ÆèëÛL‰ùM‰ðH‰îI‰ÁPH‰ßÿt$‹T$èNPZYI‰ÇŠÊƒà<u‹K|¿ÓçèM´‹S|I‰GxI‹GH‰P|I‹_I�oH…Ût=ƒ{u/H‹C¾$L‹0L‰÷èØþÿH…ÀtHƒ<$tL‰öL‰çè!þÿ…ÀxH‰ÝH‹ë¾Hƒ|$ tH‹D$(H‰H‹D$ H‰EHƒÄ8L‰ø[]A\A]A^A_ÊB`ƒàþÈ…ƒ=ÉšAVL�5lXAUATI‰ôUH‰ÕSL‹jtLI‹|$èðþÿL‰ïI‰ÆèåþÿH‹=¦—H‰Ã‹‰šM�t1ÀH…ÿt+èÄþÿë$è½þÿH9Ãs‰fšIƒÆI‹>‹YšH…ÿuÞë¤J�<3HÇèâ%þÿI‹t$L�%æWH‰ÇH‰Ãè+þÿÆ/L�pI‹4$H…ötKA€|$t!H‹$—H…ÒuIƒÄëÝL‰éL‰÷1Àèd#þÿë L‰êL‰÷1ÀèU#þÿH‰îH‰ßè:„ÀtÏH‰]ë H‰ßèX%þÿ1À[]A\A]A^Ã1ÀÃé'¹ÿÿATL‹%œ™UH‰ýSA‹D$0‰ó�Pƒâü9Ð|0�pI‹|$8ƒæüHcöHkö(H…ÿt èšþÿI‰D$8ë H‰÷è %þÿI‰D$8H‹O™¹Lc`0MkäL`81ÀL‰çó«H‰ïèþÿI‰$öÃtAÆD$öÃtAÆD$öÃtAÆD$€ãtAÆD$H‹ø˜ÿ@0[]A\Ë5¢˜95ĘS‰ûu8H‹=°˜�F2ƒÆ3‰„˜HcöH…ÿtèïþÿH‰�˜ëH‰÷è^$þÿH‰˜Hc€˜H‹ q˜�Bˆ‰m˜H˜Æ[ÃAWAVAUI‰õATA‰ÔUSHƒì€?„×H‰ýèþÿH‰ÃH9ÅtQH� lpE…ätH� —D‹=˜L‹5ÿ—º1ÿH�5™§H‰L$èOþÿH‹L$I‰èD‰úH‰ÇL‰ö1Àè§²H‹-˜H‹}è—#þÿ¾.H‰ßèªþÿH…ÀuHL�54ŒE…ätL�5ñ•H‰ßè*þÿH�xèq#þÿL‰ñH‰ÚH�5ˆiH‰EH‹©—H‹81Àè!þÿë H‰ßèåþÿH‰EH‹Š—L‰hD‰`HƒÄ[]A\A]A^A_ÃH‹Ü–H…Òt ƒÈÿH;—rÃQH‹=Ê–èmþÿƒø u Ç"—ZÃH�BH‰¡–¾ƒø u Ç—ÃÃUH‰õSH‰ûQHcVH‹6è˜þÿ…ÀuAHcUH�<Š€ú-u&¶wH‹ ‚aH�WöqtŠJHÿ€ù.t„Éuñë 1À€ú.•À÷ØëƒÈÿZ[]ÃAUATL�%‘zUM‰åH‰ýS1ÛHƒìI‹<$H…ÿ„˜H‰îè®þÿ…Àu$‹äv‰D$ ÿÀu/H�L$ E1À1Ò1öH‰ïèØ þÿëI‹|$H‰îIƒÄ8èuþÿ…ÀtÇÿÃ몋D$ ƒøÿuH�ýX¾ÚH�=ù”è#{ÿÿ…ÀHcÛ•ÀHkÛ8IÝAˆE(¶ÀL‰-_‘‰ivHƒÄ[]A\A]úH�5š¥èþÿH‰îH‰Ç1À耰¿èvþÿAWAVI‰öAUATI‰üUH‰ÕS1ÛHƒìHH…ÿtH‹ŸðH…Ût H‹;èDþÿH‰ÃMcn@H‰l$(H‰l$E…ítHH�D$M‹~HH‰D$M‰îH‹|$IÑîMkö(MþL‰öèqôÿÿ…Àt~M�~(IÿÍIÑíuÔë M…öt1À麃=‡uuL‹-v–L�5€é=ƒ=G’t6I‹Œ$ð1ÀL‰âH‰îH�=Ú¤èÕþÿH…ÛuI‹<$L�-5Lè�þÿI‰ÆëCH…Ût#L�-ßLëL‰îH‰ßèµýÿÿ…Àt�IƒÅIƒ}uæM…ätë¼L‰÷èÔþÿ…À„_ÿÿÿIƒÅI‹uH…öuãH‹è�L‹h0ëH‰ïèªþÿ…À„5ÿÿÿIƒÅI‹uH…öuãL�-.KI‹uH…ötIcUH‰ïèùþÿ…À„ÿÿÿIƒÅëÝH‰ïL�=ÁJèœþÿLcèM‰îI‹7H…ö„íþÿÿIcGD9ðL‰ï�PH)ÇHcÒHïè­þÿ…À„¸þÿÿIƒÇëÉA‹Eƒøu9H…Ûu M‹mM…íuéëUI‹uH‰ßèúþÿ…À„…þÿÿI‹uL‰÷èæþÿ…ÀuÑépþÿÿI‹uƒøuI‹<$èËþÿ…Àu¶éUþÿÿH‰ïèºþÿ…Àu¥éDþÿÿ¸HƒÄH[]A\A]A^A_ÃAU¾ATL�%G’U‰ýL‰çSQèð‚H‹5 ƒL‰çH‰ÃènþÿH‰ç”H‰C0H…ÀuºH�5’ëlH‹@H‹=Õ‚L‹¨˜èþÿH‹=‚I‰ÄèšþÿH‹=£”L‰â‰ÆAÿÕ„Àt¹@„ítgH‹=‹”H�5æ‘è¯þÿH‰”H‰ÇH…Àu$ºH�5Ì¢1ÿèíþÿZ[H‰Ç]1ÀA\A]éL­¾A èBþÿ„ÀtÎH‹5÷“H‹=È“è‹þÿH‹=$”H�5†‘èHþÿH‰‰“H‰ÇH…ÀuºH�5•¢ë—¾A èñþÿ„ÀtäH‹=^“1öè?þÿXH‰ß[]A\A]éP¿ˆèÕþÿ¹"fvÀH‰Â1ÀH‰×ó«H‰ÐB ÇBÿÿÿÿHÇBÿÿÿÿHÇBhÿÿÿÿZÃAWAVM‰ÎAUI‰ýATI‰ôUH‰ÕSL‰ÃHƒì(‰L$H…ÒtH…ötëH…öt H…íIDìëI‰ÔA‹E@M‹}HAƉ$…Àt D‹D$H‰ÙH‰êL‰æL‰ÿèêïÿÿ…ÀuAÆE1Ééƒ<$A¹„‹$D‹D$H‰ÙH‰êL‰æ�xÿ‰|$Hkÿ(Lÿè¤ïÿÿD‹ $…À�ßD‹L$t E1Ûƒ<$u…À…ÇAÆé¾L‰l$H‰ÙM‰åE‰ÌL‰t$I‰îD‰ÝB�\%D‹D$L‰òL‰îÑëH‰L$‰ßHkÿ(Lÿè9ïÿÿH‹L$…ÀuL‰õL‹t$A‰ÚM‰ìH‰ËL‹l$E‰ÑAÆëXyD�cÿë�kD9år£‰ïM‰ìL‹l$L‰õ‰|$Hkÿ(D‹D$H‰êL‰æH‰ËL‹t$LÿèÑîÿÿD‹\$…À~E�Kë uAÆE‰ÙD‰ÊHkÒ(A€>t M�4é˜A‹uD94$r,ƒÆ@L‰ÿH‰T$A‰uDHkö(D‰ $èOþÿH‹T$D‹ $I‰EHI‰ÇM�4A‹U@D9ÊtD)ÊI�~(L‰öHkÒ(èïþÿ1À¹ L‰÷ó«L‰çè+þÿH‰ïI‰è þÿI‰FH…Ût H‰ßèþÿH‰Ã‹D$I‰^A‰FAÿE@HƒÄ(L‰ð[]A\A]A^A_ÃAWE1ÛAVAUATUS1ÛH�ìXÇŠ�þÿÿÿH�¬$H�D$HD‰\$ H‰l$0I‰íH‰D$H‰D$HÇD$ÈH‹D$H‹L$ˆH‹D$H�DÿH9D$‚ÆL‹l$H‹D$I)ÅI�mH�ù'„— H‰Ê¸'HÊH9ÂHNÂH�<ÀH‰D$HƒÇèºþÿI‰ÄH…À„g H‰ÇH‹D$H‰éH‹t$ó¤¹HÁåH‹t$0HƒÀH™H÷ùH‰éM�4ÄH�D$HL‰÷ó¤H9D$t H‹|$è3þÿK�,M�l.øH‰D$H‹D$I�DÿH9D$ƒ L‰t$0L‰d$ƒûI„ù LcûH�“WB¾8‰D$$ƒø«„V‹-KŽƒýþ…�L�5;�D‹% ŽE…ät E1ÒD‰åD‰ú�éeƒø uƒ=å�t?è‡öÿÿ‰Åƒøÿuæé=ƒø táƒ=Æ�t ƒø;uècöÿÿƒøÿtƒø uñ럃ø tšéH‹ QX@¶ÅE1ÉD‰ ��f‹A¨t\E1ÀD‰y�H‹ *X@¶ÅöDAt@¾ýèŽôÿÿèöÿÿ‰ÅƒøÿuÙë ƒýxtä‰ïè‚|H‹=5�½èîÿÿH‰T�éŸf%ˆf‰D$(u‰îL‰÷èò þÿH…À„ä1ÿ‰=�@¾ýè(ôÿÿè õÿÿA‰Æƒý@u'H‹5œW¶Àf‹F¨…M¨t D‰÷è|é<H�-ô‹AƒþÿtéÉI‹UØM‹EÆD$GE‹uðA‹MàI‹uÐH…ÒuH…öHEÖH‹=(ˆL�L$Gè,öÿÿ€|$G…ˆA÷ÆtÆ@"A÷ÆtÆ@!A÷ÆtÆ@#Aƒæ„WÆ@ éN¸ÿÿÿÿHÁà H!Åé=¸ÿÿÿÿHÁà H!èHƒÈH‰Åé%¸ÿÿÿÿHÁà H!èHƒÈH‰Åé ¸ÿÿÿÿHÁà H!èHƒÈH‰Åéõ¸ÿÿÿÿHÁà H!èHƒÈH‰ÅéÝI‹MøI‹UèAƒÈÿI‹uØI‹}ÈM‹MèKèÿÿé»I‹UèI‹uØ1ÉI‹}ÈM‹ME‹Eøè+èÿÿé›I‹MøI‹uèAƒÈÿ1ÒI‹}ØM‹Mè èÿÿé{I‹uèI‹}Ø1É1ÒM‹ME‹Eøèíçÿÿé]I‹MøI‹UèAƒÈÿ1ÿI‹uØM‹MèÍçÿÿé=I‹MøI‹uèAƒÈÿ1ÒM‹M1ÿè¯çÿÿéI‹}øA‹uèøìÿÿé I‹UI‹}ø1öŠ„ÀtAH�-ö„é2H�-ö„é&H�-ô„éH�-ü�éH�-ì„éH�-è„éöH�-å„éêH�-‰]éÞH�-ò�éÒH�-É„éÆH�-Ç�éºH�-¸„é®H�-ƒ�é¢H�-��é–H�-œ„éŠH�-õ‰é~H�-Y�érM‹uL‰÷èQþÿH�xè˜þÿé„M‹uðL‰÷è7þÿM‹}H‰ÅL‰ÿè(þÿH�|è×âÿÿL‰ùL‰òH�5kƒH‰ÅH‰Ç1Àè$þÿé1íé ¸ÿÿÿÿA‹UHÁà H!èH ÐH‰ÅéòHƒÍÿééM‹uL‰÷èÈþÿH�xèxâÿÿH‰ÅH‰ÇL‰ò1ÀH�5änèÈ þÿé¸M‹uèL‰÷è—þÿM‹}øH‰D$8L‰ÿè†þÿM‹EH‰ÅL‰ÇL‰D$(èrþÿH‹T$8H�|*HÇèâÿÿL‹D$(L‰ùL‰òH‰ÅH‰ÇH�5tƒ1Àèa þÿëTI‹uH‹=Ôƒè¢qëBH�-€ë9I‹më3I‹}1Ò1öèÿýÿºÿÿÿÿHÁâ ‰ÀH!êH ÂH‰ÕëI‹}1Ò1öèNþÿH‰ÅH¾\$$L‰èH)\$H�ÝH)ÐH‰hL�hH�#GB¾ H‹D$ƒê$¶H�ÌFHcÒ¿PÈ=¡w"H˜H�5óI¿4F9ñuH�„HH¿Bé%øÿÿH�sF¶éøÿÿƒ|$ …÷ÿÿƒ=ƒ…p÷ÿÿ»é„Çì‚þÿÿÿéW÷ÿÿÿÀ=¡v$H9t$t×¶^ÿHÿÎIƒíH�õK¾ƒø«uÕëÜH˜fƒHƒÄ[]A\A]A^A_éhÞÿÿ1ÿºH�5­�èHþýÿH‰Ç1Àè®™ë¶ATUH‰ýSH‰óH�5tYè–þÿH‰-·~H‰`~Ç®~H…Àu H‰ïèÑþÿéƒH…Ûuè’ìÿÿH‰ÃH‰¸~Ç’~èïÿÿ…À„\H‹š~H…Û„7H‹;1íè' þÿH‹{è þÿHƒ{8t.H‹{89k0~ LkåHÿÅJ‹<'èþ þÿH‹C8J‹| èð þÿë×èé þÿ1íH‹{H9k@~8Lkå(LçH‹GH;tH‰ÇèÆ þÿH‹CHHÿÅJ‹< è¶ þÿH‹CHJ‹| è¨ þÿë¿è¡ þÿ1íH‹{`9kX~9Lkå(LçH‹H;GtH‰Çè~ þÿH‹C`HÿÅJ‹| èm þÿH‹C`J‹| è_ þÿë¾èX þÿH‹{PH…ÿt H‹H‰CPëéH‹kpH…ítH‹EH‹}H‰Cpè, þÿH‰ïè$ þÿëÜH‹»€;kxs‰èÿÅH‹<Çè þÿëåè þÿH‰ßèúþÿH‹=Ë|èüýÿè†Üÿÿ1íëPH‹=¶|è üýÿH‹"}H‹-+}H…Ût,‹SH‹sH‰ïèüÿÿH‹H‹{H‰ù|è¤þÿH‰ßèœþÿëÁè2ÜÿÿH‰è[]A\ÃAWAVAUATUSVH‹o¾.H‰ïèýýÿH…Àu1Àé"H�xH�5œsèÓjÿÿ‰Ã…ÀuãH‹5P~H‰ïè”ýÿÿH‰A~H‰ÅH…ÀtÅD‹h@E1äE9å~ IkÄ(HEHH‹xèÔûýÿ�P9Ú|�XIÿÄëÛHcûE1äL�=šxèþÿL�5 NL�-5�H‰ÅH‹ã}D9c@Ž•IkÄ(HCHH‹XèôÌÿÿH�ãqL‰öH‰ï…ÀH‰ÙID×1ÀèƒþÿH‹=„kA¸H‰î¹ºèDþýÿH‰ÃH…Àu1ÿºL‰îèýúýÿH‰Ç1Àèc–€{u1ÉÆCH‹=8kH‰ÞH‰K(èôýýÿIÿÄéZÿÿÿH‰ïè4þÿƒ{u€ çjH‹{HƒÿÿtZH‹&k‰=ü[HcÿHƒ=uxH‰=wH‹€Çå[H‰¸t!è?”H‹Hx1ÒH�=—oH‰Æè³H‰CH‹Ä|ƒx ÿt2H�=ÐoèrÚÿÿ…Àu"H‹§|HcP Hc@$H‰ØvƒøÿtH‰ÔvH‹…|ƒx(ÿt2H�=_oè3Úÿÿ…Àu"H‹h|HcP(Hc@,H‰©vƒøÿtH‰¥v°Z[]A\A]A^A_ÃAUATL�%,`UM‰åH‰ýS1ÛHƒìI‹<$H…ÿ„˜H‰îè‰ýýÿ…Àu$‹“W‰D$ ÿÀu/H�L$ E1À1Ò1öH‰ïè³þÿëI‹|$H‰îIƒÄ8èPýýÿ…ÀtÇÿÃ몋D$ ƒøÿuH�X=¾ÚH�=Ôxèþ^ÿÿ…ÀHcÛ•ÀHkÛ8IÝAˆE(¶ÀL‰-’w‰WHƒÄ[]A\A]úH�5u‰èøøýÿH‰îH‰Ç1Àè[”¿èQþÿAVAUL�-»NATA‰ôUSèêúýÿL‰îH‰ÇH‰ÅèœþÿH‰ÃH…ÛtQ¿è*þÿH‰ßI‰ÆèÏøýÿH�xèþÿH‰ÞI‰H‰Çè8öýÿE‰fL‰î1ÿH‹°vL‰5©vI‰FèHþÿH‰Ãëª[H‰ï]A\A]A^éÃþÿAWAVI‰öAUATI‰üUH‰ÕS1ÛHƒìHH…ÿtH‹ŸðH…Ût H‹;è‘ûýÿH‰ÃMcn@H‰l$(H‰l$E…ítHH�D$M‹~HH‰D$M‰îH‹|$IÑîMkö(MþL‰öè¾×ÿÿ…Àt~M�~(IÿÍIÑíuÔë M…öt1À麃=´UuL‹-ëuL�5Tcé=ƒ=(st6I‹Œ$ð1ÀL‰âH‰îH�='ˆè"øýÿH…ÛuI‹<$L�-2èÝúýÿI‰ÆëCH…Ût#L�-¬2ëL‰îH‰ßèáÿÿ…Àt�IƒÅIƒ}uæM…ätë¼L‰÷è!ûýÿ…À„_ÿÿÿIƒÅI‹uH…öuãH‹�uL‹h0ëH‰ïè÷úýÿ…À„5ÿÿÿIƒÅI‹uH…öuãL�-û0I‹uH…ötIcUH‰ïèFôýÿ…À„ÿÿÿIƒÅëÝH‰ïL�=Ž0èéöýÿLcèM‰îI‹7H…ö„íþÿÿIcGD9ðL‰ï�PH)ÇHcÒHïèúóýÿ…À„¸þÿÿIƒÇëÉA‹Eƒøu9H…Ûu M‹mM…íuéëUI‹uH‰ßèGõýÿ…À„…þÿÿI‹uL‰÷è3óýÿ…ÀuÑépþÿÿI‹uƒøuI‹<$èõýÿ…Àu¶éUþÿÿH‰ïèúýÿ…Àu¥éDþÿÿ¸HƒÄH[]A\A]A^A_ÃAU¾ATL�%”uU‰ýL‰çSQè=fH‹5VfL‰çH‰Ãè»øýÿH‰$tH‰C0H…ÀuºH�5cuëlH‹@H‹="fL‹¨˜èfüýÿH‹=fI‰ÄèçúýÿH‹=àsL‰â‰ÆAÿÕ„Àt¹@„ítgH‹=ÈsH�53uèüòýÿH‰…sH‰ÇH…Àu$ºH�5†1ÿè:õýÿZ[H‰Ç]1ÀA\A]é™�¾A è�þÿ„ÀtÎH‹5dsH‹==sèØúýÿH‹=asH�5Ótè•òýÿH‰sH‰ÇH…ÀuºH�5â…ë—¾A è>þÿ„ÀtäH‹=ër1öèŒúýÿXH‰ß[]A\A]é]óI¸!UH‰õSH‰ûQŠ„Ét?�AÞ<:wI£Àr(H‹è?¶ñŠpÀè€ù;@”Æ€ù,”Á ñ ȃà ÂëºHÿÇë»H‰î…ÒtE¿"èDøýÿŠ„Àt%<"t<\u H‰î¿\è)øýÿ¾;H‰îHÿÃèøýÿëÕZH‰î[¿"]é øýÿXH‰ß[]é>õýÿAVAUI‰õ‹5mtATA‰Ô�Fÿ;[tUH‰ýSHcÙ9ƒÆ H‹=?t‰5EtHcöHÁæH…ÿtè¸ôýÿH‰!tëH‰÷è'þÿH‰tLc5t1ÀD‰æH‰ïIÁæL5ösM‰nI‰FèéóýÿH‹ ÚqI‰FHcßsH� ÙH‰ÂHÁàHÅsÿÂH‰[‰Ás]A\A]A^ÃH‹ªsSH‰ûH‰Gh‹=¤s‰{xÿÇHcÿHÁçè›ÿýÿHc Œs1ÒH‰Cp9Ñ~H‰ÖHÁæHshH‰4ÐHÿÂëè1Ò1öƒK$H‰È1É[H‰ Ps‰5Vs‰5LsÃAW1ÀAVAUATUSH‰ûH�=!sHƒì‹;qH‹5,qèw.H‰Þÿ&qH‰ÅH‰ÇèƒõýÿH‰ïH‰ÃèøþýÿH‹ùpH‰ÞH‹xè•üýÿH‰ßèÍïýÿ¾H‰ßèðöýÿH‹Ñp1ÒH‰ß‹p$H‹Cÿ�˜1É¿0‰ ªpèµþýÿºH�5nH‰ßH‰‡pèC]ºH�5}rH‰ßI‰Æè,]ºH�5«mH‰ßI‰Åè]H‹epH�5ƒoI‰ÄH‹Lp€x(uH�5moH�-ÒnA¹M‰ðH‰ßH‰éèK]H‹pH‹pH‰î€x(tH�5(hH‹=H� cmA¹H‰ßL�€è ]¾L‰÷è.÷ýÿ¿èÔýýÿ¹H‰ÅI‰† 1Àƒ=ülH‰ïó«tÆEÆE1ö¹º?H‰ßèýÿÿ¹º?H‰ß¾ èýÿÿ¹º?H‰ß¾èíüÿÿL‰÷è¢ýÿÿƒ=œlt¾L‰ïè�öýÿë 1öL‰ïè‘öýÿ¿è7ýýÿ1Òƒ=nlI‰… H‰D$H‰t¾L‰çè`öýÿë 1öL‰çèTöýÿ¿èúüýÿ‹änH‹5ÕnH‰ßI‰„$ I‰Ç1ÀI‰è5ôýÿ1ÉA¸H‰êL‰öH‰ßè¯ñýÿƒ=økt H‹T$A¸1ÉL‰îH‰ßèŽñýÿA¸ëH‹T$E1À1ÉL‰îH‰ßèqñýÿE1ÀL‰úL‰æH‰ß1Éè^ñýÿH‰ßèÆíýÿHƒÄH‰Ø[]A\A]A^A_ÃAW1ÀAVAUATUSH‰ûH�="pHƒì‹üÿÿH‹D$L‹-þbI‰ÜI)ÄM…íuèÏÿÿH‰çbI‰Å‹k I‹}PLåH‰îèÓNH…Àt#ƒ=B^„‰H‰îH�=>^1Àè×àýÿés‹CH‰éL‰ïH‰D$H‰Æ‹CH‰D$‹C Là‹H‰D$LâègLA‰Æ…ÀyE1öéNE1ÿH‹D$I9ǃ%H‹D$F‹,¸H‹D$LàF‹¸H‹D$@I9ÀrH‹D$ ºI9Àr3H‹D$HI9ÀrH‹D$(ºI9ÀrH‹D$PH‹L$0I9À“À1ÒI9È’Â!ÂC�>H‰î‰T$lMåL‹ æaHcÛL‰D$`HkÛ(L‰ÏIY`L‰L$XèõÝÿÿ¹ H‰ßH‰D$81Àó«L‰ïèXáýÿH‹t$8L‹L$XD‰{ ‹T$lH‰CH‰s1öH‰H‰sAÿAXƒ=þ\‰S$t4…ÒL‹D$`L‰éH‰êH�\L� Ð\LDÈH�5�)H�=n1ÀèqßýÿIÿÇé×þÿÿH‹D$H�5…ZF‹<°MçL‰ÿè>x„ÀtIÿÆH‹D$I9ÆrÔéÙH‹D$ÆD$wLàB‹°H‹D$@H9ÃrH‹D$ A½H9Ãr7H‹D$HH9ÃrH‹D$(A½H9ÃrH‹D$PH‹L$0H9ÓÀE1íH9ËA’ÅA!ÅPH‹=¦`E1ÉE1ÀD‰ñH‰êL‰þH�D$PèNKZY€|$wuD‰h$ƒ=ô[„PÿÿÿL� [E…ítL� Í[I‰ØL‰ùH‰ê1ÀH�5…(H�=ölèiÞýÿéÿÿÿÆD$kŠD$kH�Ĉ[]A\A]A^A_Ë5—;…öx3QH‹GH‹€xÿPx„Àuº1ÿH�5†mèyÝýÿZH‰Ç1ÀéÞxXÃÃAVAUL�-E3ATA‰ôUSètßýÿL‰îH‰ÇH‰Åè&æýÿH‰ÃH…ÛtQ¿è´éýÿH‰ßI‰ÆèYÝýÿH�xè éýÿH‰ÞI‰H‰ÇèÂÚýÿE‰fL‰î1ÿH‹_L‰5 _I‰FèÒåýÿH‰Ãëª[H‰ï]A\A]A^éMéýÿAWE‰ÏAVI‰öAUI‰ÕATI‰ÌUH‰ýH‰÷SHƒìL‰D$èãÜýÿL‰ïH‰$è×ÜýÿL‰çH‰ÃèÌÜýÿH‹$H�|HÇè éýÿL‰öH‰ÃH‰Çè-ÚýÿL‰îH‰ßèRæýÿL‰æH‰ßèGæýÿH‹EH‰ïÿ�HcT$PL‹D$H‰XH‰PHcYXL‰@ �JD‰x‰ HXH‹ 9XH‰ÑHƒÄ[]A\A]A^A_ÃAW1ÀAVAUATUSH‰ûH�=d\Hƒì‹&XH‹5XèºH‰ÞÿXH‰ÅH‰ÇèÆÞýÿH‰ïH‰Ãè;èýÿH‹äWH‰ÞH‹xèØåýÿH‰ßèÙýÿ¾H‰ßè3àýÿH‹¼W1ÒH‰ß‹p$H‹Cÿ�˜E1À¿(D‰“WèöçýÿºH�5WH‰ßH‰pWè*DºH�5¾[H‰ßI‰ÇèDºH�5°[H‰ßI‰ÆèüCH‹NWH�5¹QI‰ÄH‹5W€x(uH�5XPA¹M‰àH‰ßjH� ÕV1íèþÿÿ¾L‰ÿè®àýÿ¿èTçýÿ1Ò¾L‰÷I‰‡ ‰H‰D$è‡àýÿ¿è-çýÿ1ÉH‹=Ü\I‰† ‰H‰D$èÁÚýÿ^_L‰ç¨@”ÅÅÿÅHcíH‰îèGàýÿH‰ïèïæýÿH‹5 \I‰„$ I‰ÅH‰ÇèØýÿAÆD-ÿ‹aVH‰ßH‹5OVèÞýÿH‹T$L‰þH‰ßA¸1Éè’ÛýÿH‹$L‰öH‰ßA¸1Éè{ÛýÿI‰èL‰êL‰æH‰ß1ÉèhÛýÿH‰ßèÐ×ýÿHƒÄH‰Ø[]A\A]A^A_ÃAVAUI‰õ‹55ZATA‰Ô�Fÿ;#ZUH‰ýSHcÙ9ƒÆ H‹=Z‰5 ZHcöHÁæH…ÿtè˜ÚýÿH‰éYëH‰÷èæýÿH‰ØYLc5ÙY1ÀD‰æH‰ïIÁæL5¾YM‰nI‰FèÉÙýÿH‹ bUI‰FHc§YH� ÙH‰ÂHÁàH�YÿÂH‰[‰‰Y]A\A]A^ÃH‹rYSH‰ûH‰Gh‹=lY‰{xÿÇHcÿHÁçè{åýÿHc TY1ÒH‰Cp9Ñ~H‰ÖHÁæHshH‰4ÐHÿÂëè1Ò1öƒK$H‰È1É[H‰ Y‰5Y‰5YÃAW1ÀAVAUATUSH‰ûH�=YHƒì‹ÃTH‹5´TèWH‰Þÿ®TH‰ÅH‰ÇècÛýÿH‰ïH‰ÃèØäýÿH‹�TH‰ÞH‹xèuâýÿH‰ßè­Õýÿ¾H‰ßèÐÜýÿH‹YT1ÒH‰ß‹p$H‹Cÿ�˜E1Û¿0D‰0Tè“äýÿºH�5áSH‰ßH‰ TèÇ@ºH�5[XH‰ßI‰Æè°@ºH�5‰SH‰ßI‰Åè™@H‹ëSH�5aUI‰ÄH‹ÒS€x(uH�5KUAPH�-®TM‰ðH‰ßjA¹H‰éè©úÿÿH‹ŸSAYH‰îH‹›SAZ€x(tH�5þMH‹í"QA¹H‰ßjH� -SL�€èaúÿÿ¾L‰÷èÝýÿ¿è§ãýÿ¹H‰ÅI‰† 1Àƒ=/UH‰ïó«^_tÆEÆE1ö¹º?H‰ßè ýÿÿ¹º?H‰ß¾ èõüÿÿ¹º?H‰ß¾èÞüÿÿL‰÷è“ýÿÿƒ=ÍTt¾L‰ïènÜýÿë 1öL‰ïèbÜýÿ¿èãýÿ1Òƒ=ŸTI‰… H‰D$‰t¾L‰çè2Üýÿë 1öL‰çè&Üýÿ¿èÌâýÿ‹^RH‹5ORH‰ßI‰„$ I‰Ç1ÀA‰èÚýÿ1ÉA¸H‰êL‰öH‰ßè�×ýÿƒ=*Tt H‹T$A¸1ÉL‰îH‰ßè`×ýÿA¸ëH‹T$E1À1ÉL‰îH‰ßèC×ýÿE1ÀL‰úL‰æH‰ß1Éè0×ýÿH‰ßè˜ÓýÿHƒÄH‰Ø[]A\A]A^A_ÃAWAVAUATUH‰ýSH‰óHƒìX€"L‹o‰T$@ueH‹ÕE1É1ÒL‰îH�¸€è*ÚýÿH…ÀtFH‹@H…ÀtL‹hH‹qQ€x(t,A€}_u%IÿÅë H�5Èf1ÿºè,ÕýÿL‰îH‰Ç1Àè�p€|$@tuH‹1Q‹@ ÿȃøwLH�ôHc‚HÐÿàA¿L�%ZëZA¿L�%+ëKA¿ L�% ëÜýÿ1öI‰ÆH‹D$L‰° €}"A‰6tf‹EAÆF€fA‰ëH‰ß¹º?1öè£õÿÿH‹|$èVöÿÿH‹|$0¾è8Õýÿ¿èÞÛýÿ1ÒI‰ÅH‹D$0L‰¨ €}"A‰Utf‹EAÆE€fA‰Eë$1ö¹º?H‰ßèAõÿÿH‹|$0èôõÿÿ€}"tH‹|$1öE1äèÐÔýÿ1À‰D$DëyH‹}H…ÿuH‹}èÏýÿH‹|$ƒÀ‰ÂƒâЉD$DH˜H‰ÆH‰D$8è”ÔýÿH‹|$8è:ÛýÿH‹L$8H‹uI‰ÄH‹D$L‰çL‰  1Àóªf‹EI�|$fA‰$H…öuH‹uè/Ìýÿ‹‘JH‹5‚JH‰ßèJÒýÿ€|$@tH‹T$ H‹t$E‰ø1ÉH‰ßè¼ÏýÿH‹T$HH‹t$(1ÉH‰ßA¸è¢ÏýÿH‹t$1ÉL‰òA¸H‰ßèŠÏýÿH‹t$01ÉL‰êA¸H‰ßèrÏýÿ€}"uLcD$DH‹t$1ÉL‰âH‰ßèUÏýÿH‰ßè½ËýÿHƒÄXH‰Ø[]A\A]A^A_ÃAWAVAUATUSHƒìxèh—ƒ=¥KuH‹=�KH‹1>H…ÿ…˜é;H�5œH�=2K1ÀèÎýÿH‹Ï=H�-#KH‹X(H…ÛtH‹sH‰ï1ÀèùÍýÿH‹[ ëçH‹=¤=1ÒH�5™AÿÿH�-ôJè§ËýÿH‹À=H…Û„xÿÿÿH‹3H‰ï1ÀèºÍýÿH‹›ëáH‹CƒxtH‹›H…Ûuêé‰è@<ÿÿºH�5 a„Àtcº+AH�5’JH‰ßè­ËýÿH…Àt>H‹A=fHnØó~œJH� ewÿÿH‹’flÃH‰ŠÀ‚ÈHÇ@@5ë2ºH�5.W1ÿèwÌýÿH‰Ç1ÀèÝgH‹=NJèÑØýÿ1ÀH‰@JH‹Ñ<H‹CƒxuH‹ƒH…Àt€xuu H�5&W1ÿºè"ÌýÿH‰ÞH‰Ç1Àè…gH‹Ž<‹„-¹dH�5LHH‹€H�¸Ðó¥‰�`‹ÐI �¸¶ÿ,÷Úƒ=Þ,‰�¬yY€=ì;?wPŠã;H‹<:H�-i?ÿÿƒà<u0Ǩ,ë)H‹{0E1ÉH�T$@H‰îD‰L$@èyÖýÿƒ|$@uÔH‹[HH…Ûu×H‹=â;èªÿÿH‹Ö;H‰D$H‹@H‹8èYµÿÿH‹¶MH…À„Z1ÿH�>HL‹x`L‰ë‰=GMH‹=p;H�5á¨ÿÿè ÒýÿHc=-MHÁçè|×ýÿH‹=M;E1ÀH�ýGH�5„«ÿÿH‰ýLD‰þLèÑÑýÿHc5òLºH‹=ÞLH� ªÿÿèÉýÿH‹#ML‹`PH‹MM…䄊‹PX1À9Â~H�HHkñ(M9d7àtH‰Èëè‰Å9Ð�ZI�|$H‰=œLèÌýÿH‰€F¶„ÒtH‹ ²öQŒuÆ_HÿÀëäHcÅE1ÉL‰|$0Hkè(H‰D$L‰d$(D‰L$H‰\$8LýH‹‡L‹L$9HX޲H‹D$(H;E…£H‹}DŠ/èÊýÿH�xè^ÖýÿL‹uI‰ÄA€ý@t0¾@L‰÷èTÊýÿH�ÏFH…ÀH‹ÓE”Àx(tH�=@ëL‰öH‰Ç1ÛèDÇýÿëL‰ñH�5,L‰ç1ÀèÎÓýÿH‹=Ï9E1À1É1ÒL‰æè˜ÌýÿH…Àt €x„BL‹EA€ý@uL‰ÁH�ÐIL‰ç1ÀH�5Ýè„Óýÿë3H‹KEH� 6F€x(tH� ±?H�›IH�5˜L‰ç1ÀèOÓýÿH‹=P9E1À1É1ÒL‰æèÌýÿH…À„IŠ@„Ûu E1íþÈ”ÃéÁE1íþÈ„¶M�l$L‰ïèäÈýÿH�xè+ÕýÿL‰îH‰ÃH‰ÇèMÆýÿ1ÿ€;@¾@@”ÇHßèÉýÿI‰ÅH…ÀtÆ@HcœJL‹=�JH‰l$ H‰ÝH‰ÓH…Ût.I‰ÞH‰ïIÑîIÁæMþI‹6è5Ìýÿ…À„;~M�~HÿËHÑëëÍH‰ëH‹l$ ŠAtH‹UH�5 H�=ü@1ÀèÏÃýÿH‹uL‰ÿèÓÀýÿfAÇEp_1É1ÒH‹=i3AÇE__imA¸L‰îè+ÆýÿI‰ÆH…À„†€x…|H…ÛtH‹u1ɺH‰ßè�ÇýÿéêH‹@(L‹ àL‰çèÕÀýÿ„Àu%1ÿºH�5«SèžÂýÿL‰æH‰Ç1Àè^é[A‹„$ÐE1ÉL‰t$0I‰îL‰l$I‰ÝD‰Ë‰D$ I‹„$È9\$ ~qI‰ÄH‹H‹T$H‹t$H‹hH‰ïè°¿ýÿ‰ÂI�D$…ÒuFƒ="@L‰ëH‰ïL‹l$L‰õL‹t$0tH‰þ1ÀH�=Ú?è¨ÂýÿI‹$H‹t$1ÒL‰ÿHpè=)ëÿÃë‰L‰ëL‰õL‹l$ëuI‹F0ƒ=«2ÿÆEH‰E0I‹F(H‰E(I‹FH‰EuP1ÿºH�5ãLè¦ÁýÿL‰êL‰þH‰Ç1ÀèóŸþÿ€=»Cu$ºH�5ñL1ÿèzÁýÿH‰Ç1Àèà\Æ•CH‹m éüýÿÿL‹d$(H…ÛtH‰Ú1öL‰ÿè•(H‰ßèaÂýÿH‰ßè©ÍýÿL‰çè¡Íýÿƒ=R"uŠR1ƒà<„T 陃=ÿ>t H�=ò èí¾ýÿH‹N1L�-µ4ÿÿH‹X(H…Ût¾€{…ZL‹{EŠ'A€ü@A”ÆuI�¾@èMÁýÿH‰Åë¾@L‰ÿè;ÁýÿH‰ÅH…íuE„ötgL‰ÿè¶ÂýÿI‰ÆA€ü@t¾@L‰÷èÁýÿÆëÆ_H…íuæH‹=Ä0L‰ö1É1ÒA¸èŠÃýÿH‰ÆH…À„Ì€x…ÂH‰ßèf�ÿÿéµ1öH‹=†0L‰úH‰5\<L‰îèÇýÿH‹5M<H…ö„ŠH‰ßè.�ÿÿL‹55<H‹k蘑ÿÿ…Àt €}_uHÿÅH‹801ɺH‰îH�¸€èŠÄýÿI‰ÄH‹@H…Àt7€=äAu.L‹xºH�5…L1ÿèž¿ýÿH‰êH‰ÇL‰þ1ÀèþZÆ´AM‰t$H‹[ éŽþÿÿH‹ò/H‹CH‹8èz©ÿÿH‰ßè žÿÿHƒ=ÎAu èï­ÿÿH‰ÀAH‹Ñ/L�- =H…ÛtXL‰îH‰ßèºÁýÿI‰ÆH…ÀtA1ÛHƒ¸€uNë;€xt&H‹H…ÛtÝH‹sH‹=÷.E1À1É1ÒèÃÁýÿH…ÀuÖëÚH‹@(‹S9sωëË‹‹<ö .t&ëGH‹Ý@;XxsãH‹€€‰Ú1öÿÃH‹<ÐèßàÿÿëÜH‹¹@ƒz@u…À„ƒ=<<t9é…ÀuH‹’@ƒ{@…σ=<tH‹x@ƒ{@…µéÌH‹z.L�=n>H…Ût×H‰ßèö»ýÿ„Àu%1ÿºH�5ÌN追ýÿH‰ÞH‰Ç1Àè"Yé{‹ƒÐL‹³ÈE1ä‰D$D9d$ŽAH‹ K‹æHH9B t‹J‰ÈÑèƒà…É”Á ȶÈë1À1ÉH‹=–.H…ÿt…É„ôH‹rè�Âýÿƒð„À„àK‹æL‰þH‹hH‰ïè²V„À…ÅH‰ïèB½ýÿH�xè‰ÉýÿH‰éL‰úH�5 I‰ÅH‰Ç1Àè?ÇýÿH‹=@-1É1ÒE1ÀL‰îè ÀýÿL‰ïH‰D$è<ÉýÿH‹D$H…Àt€xtgH‹Õ8€x(t €}_uHÿÅH‹5?H‰êH‰ß莧ÿÿ…Àt;H‹=?E1ÀƒÉÿ1ÒL�L$@H‰îÆD$@èM«ÿÿ€|$@uK‹æŠRÀêƒâƒòˆP#IÿÄé´þÿÿH‹›é^þÿÿƒ=F:„ËE1äE1öHcs@H‹{HD9掞Mkì(J‹,/DŠ}A€ÿ?„€¾@H‰ï芼ýÿH…Àtn1ÀA€ÿ@”ÀH�|è¾ýÿ¾@H‰ÇH‰Åèâ¼ýÿH…ÀtÆë/H‹9>H�5ÒH1ÿºH‹@HJ‹(覻ýÿH‰ÇH‰Þ1Àè WH‹ >A¶H‹CHJ‰,(IÿÄéQÿÿÿE„ötH� q›ÿÿº(è¹¹ýÿƒ=j9uH‹Ñ=E1í1íL‹`HL‰ãéŠ1íL�%Ê;H‹°=H‹PH9h@~ÏLkí(L‰æJ‹*H‰ßè¬T„À…„¾@H‰ßè—»ýÿH…ÀtrÆD$@1À€;@”ÀH�<è ½ýÿ¾@H‰ÇH‰Ãèl»ýÿH‹5M=1ÿH‰ÚÆèÂ¥ÿÿ…Àu H‰ßè,Çýÿë*H‹=+=E1ÀƒÉÿH‰ÞL�L$@H‹GHJ‹T(èu©ÿÿ€|$@uÌHÿÅéIÿÿÿ…í„ýH‹sØH‹;èd¾ýÿ…À…éIcÅHkÀ(M�tØ‹^8E‹~Aƒÿÿ„ ‹Kƒùÿ„”A9Ï„‹…Àt5I‹º1ÿ‰L$H�5fGH‰D$èºýÿ‹L$H‹t$D‰úH‰Ç1ÀènU‹CƒøÿtA‰FfnC fAnV VÐfA~V H‹;èFÆýÿH‹{è=ÆýÿH‹{è4ÆýÿÿÅHƒÃ(H‹/<;h@Œ&ÿÿÿëJ…ÀtªM‹>1ÿºH�5Gè’¹ýÿH‰ÇL‰þ1ÀèõTë…D9ítIcŹ H‰ÞHkÀ(LàH‰Çó¥AÿÅëžD‰h@IcýE1äHÁçèÏÅýÿH‰°;H‹¹;Hcx@HÁçè´ÅýÿÇ‚;H‰ÂH‰€;H‹‘;H‰×1ÒHcH@1À‰d;HÁáóª1ɉ N;‰ D;‰ :;H‹_;D9`@Ž«IkÜ(H‹@HL‹tL‰÷è‚L‰÷èð¸ýÿH�xè7ÅýÿI‰ÅH‹Í4€x(t)A€>@t#AÆE_I�}L‰öè@¶ýÿL‰ï診ýÿH‰ÇèÀ�ë L‰öL‰ïè#¶ýÿH‹=Ä(1É1ÒL‰îA¸芻ýÿH‰ÅH…ÀtOŠP�Bý¨ýuEH‹¹:ÿ�:HXH€{"uÿ{:H‹ „:H‹E(J� á€útH‹@H‰‹CƒøÿuDéÁ¾.L‰÷膸ýÿH…ÀtQH‹b:ÿ8:HXH€{"uÿ$:‹CÆC$ƒøÿ„‚;:~‰:;:}‰:ÿî9ë^H…ít9Š]ºH�57‹P7è+µýÿ¿H‰Â‹57�D �C�DEH˜H�DH‰7è"¢ÿÿH‹=87èn“ÿÿH‹L#H…Û„ÕH‹C0Hƒ¸ðuH‹[HëãL‹ �E1ÿE1ö1íM‰åM…ít@I‹}H�5W0H‰|$èc¸ýÿH‹|$H�52…À”À¶À ÅèèMEuxM‹m¶ÀA Ç뻃õD!ýƒåt˜E…öt“M…ätŽH‹{0L‰æè¿ýÿH‰ÅH…ÀŽvÿÿÿH‹{0è2²ýÿL‹{0„ÀuH�5 E1ÿºè÷³ýÿL‰þH‰Çé¶H‰ïM‹¯Èè]ÀýÿH‹{0L‰æL‰éH‰ÂI‰Æè˜½ýÿ‰Å…Ày3L‰÷è*Àýÿ1ÿºH�5TBè§³ýÿHƒÄx[H‰Ç]1ÀA\A]A^A_éÿNE1íD9펓K‹îH‹H‹ö@u{H‹pH‹=À#1É1ÒA¸艶ýÿH…Àt\€xuVH‹@(H‹S0H‹ˆàH‹’ðH‹�ðH9Ðt4H…ÀtL‹8ëL‹9H‹:L‰þè²ýÿ…ÀtH‹C0H‹€ðH‹€ L‰x ëIÿÅédÿÿÿL‰÷èX¿ýÿM‹d$é¦þÿÿH‹-g!H…í„L‹m0Iƒ½ð„óM‹e¾.L‰ç軳ýÿH…À„ÙH�XH�5ë4H‰ßè}!ÿÿ…À„¾H�5\0H‰ßèf!ÿÿ…À„§I‹��E1ÿE1öE1íH…ÛtJH‹;H�5+.H‰|$è7¶ýÿH‹|$ºH�5Ó/…À”À¶ÀA Åè–¯ýÿ…À”ÀDsxH‹[¶ÀA Çë±E…ÿtC³aE…íu E…öžÃƒÃbL‰çè$²ýÿH�xèk¾ýÿ¾ËH�5Á/I‰ÄH‹E0L‰çH‹1Àè¼ýÿL‰e H‹mHééþÿÿH‹-I L�%O/ëL‹³ÈD‹»Ð1ÛL9ûŒ¦H‹mHH…턹L‹u0Iƒ¾ðtåI‹ž�E1íE1ÿH…ÛuIM…ítÎAƒçtÈL‰÷èw¯ýÿH‹]0„ÀuŸH�5PB1ÿºè<±ýÿH‰ÞH‰ÇHƒÄx1À[]A\A]A^A_é‘LH‹;ºL‰æè�®ýÿ…À”À¶ÀA ÇöC$t ƒ{xtI‰ÝH‹[ë‚I‹ÞA‹MH‹P 9JuAH‹pH‹=-!1É1ÒA¸èö³ýÿH…Àt"€xuHƒx uH‹!H9B0tA�M$€HÿÃé÷þÿÿE1í„Û„�êÿÿéÆçÿÿƒ=Œ„·ûÿÿ1ÿèÆ�ÿÿH‹=Ü2è�ÿÿéŸûÿÿI‹uH‹=¯ E1À1É1Òè{³ýÿ€xI‰Æ„ êÿÿéèÿÿH‰ÚH‹=‡ E1À1ÉH‹r1ÒH‰ëL‰íL‹l$ èD³ýÿ€xI‰Æ…<éÿÿéÑéÿÿI‹vH‹=O E1À1É1ÒH‰ëH‹l$ è³ýÿ€xI‰Æ…¯çÿÿé éÿÿHƒÄx[]A\A]A^A_ÃAWAVAUATUSHƒìH€=n!tƼ1èÿŠÉ¨u%ƒ=šuƒà<„xH‹ò1ƒx@„gL‹-éI‹EH‹8èq™ÿÿL‰ïèŽÿÿI‹…H‹€H‰81H‹!1H…À„'H‹¹úH� H9P`„H‹¡1ÿH…ÀtH‹��H…Òt zxH‹RëòH‹€ëÝHcÿE1äHÁçè]»ýÿL‰l$L‹=aH‰D$M…ÿ„ÄL‰ÿèÛ¬ýÿ„Àu*1ÿºL‹l$H�5¬?蟮ýÿL‰þH‰Ç1ÀèJé„I‹‡ÈM‹¯�H‰D$M…í„fI‹E`H‹öùH…ÀuH�‚ I‰E`é=H� H9Є-ö@$„#H‹@0H…À„L‰îIEXL‰ÿ1íH‰D$ èô¸ýÿHcøèŒºýÿH‹L$L‰îL‰ÿH‰ÂH‰ÃèÆ·ýÿL‰|$0‰D$,9l$,ŽÂƒ=Ð+tH‹ëH�=÷)H‹H‹H‹p1Àè^®ýÿH‹ ëH‹Aö@…ƒ‹H‹Ã);P„q;Pr 9Pƒc;P„ZH‹H‹|$E1ÉE1À1ÉH�5œL‹8I‹Wèp«ýÿA�€I‰Æ…âH…À„Š@<…ÅfA�~Bi…I‹FHI‹VPH‹€‹H‹€€H‹ÐH…À„à€x„ÖH‹ˆøH� H9P(„¾H‹D$IcÌH‹T$ HÁáHÁH‹ëHPD‰a H‰H‰ÐH‹¢.H‹R`H;B0‚âI‹E`º1ÿH‰L$8H�5 6L‹0è�¬ýÿH‰ÇL‰ö1ÀèðGH‹L$8é¬<t‹éDH‹ö÷I‹W H H9B`uI‹}H�5Mè6°ýÿ…À…WÿÿÿéM…ö„IÿÿÿL‰÷è–ÿÿ„À„9ÿÿÿAöF„ìM‹wH�5B!L‰÷èò¯ýÿ…À„ÿÿÿH‹(H�5!€x(tH�5 !L‰÷èǯýÿ…À„èþÿÿé¡H‹ëH‹pD‹v‹VfAÁîÁê Aƒæƒâ?AiÆè Ð=Â]tH=€>t-=�>uCÆAAÿÄfÇA ëT=’et=}u&ÆAAÿÄë=ÆAAÿÄë4ÆAAÿÄë+‹…Àt%ƒøt H�5ú41ÿºè6«ýÿD‰öH‰Ç1Àè™FHÿÅé4ýÿÿH‰ßL‹|$0è„·ýÿM‹mé‘üÿÿM‹¿é3üÿÿL‹l$E…ä„èH‹|$IcôºH� M‰ÿÿè(©ýÿH‹5Á,1Ò1ÉH‹\$IƒÈÿH‰÷H‰ØA9Ì~5H‹HÁê L9Ât HƒÇHƒçüHƒÇ€xtHƒÇëHƒÇI‰ÐÿÁHƒÀ²ëÆ„ÒM‰ïI‰ÝHDþIƒÎÿHƒÇHƒçüH‰=U,èà¶ýÿ1É1ö1ÿH‰3,HƒÊÿH‰ 8,‰t$‹L$H‹,A9ÌŽïI‹]H+,H‰ÝH�åðÿÿH9Õt_1Ò÷Çt Æ8²HÿÇëí„ÒtH‰=æ+IƒþÿtJ�t0I‹GL)÷ÿPPI‹GH‹5Æ+H‰ïH5¬+ÿPPL‹5²+I�~H‰=§+H‹5�+I‹G�ãÿHþA¾}Áç HcÿHßÿPhH‹{+A€}H�xH‰=k+u(H‹5R+I‹GHþI¿} ÿPhH‹L+H�xH‰=A+ÿD$IƒÅH‰êéýþÿÿM‰ý1Ò÷Çt Æ8²HÿÇëí„ÒtH‰=+IƒþÿtJ�t0I‹EL)÷ÿPPH‹5ò*H‹=ã*H…öt<èÁ®ýÿèì—¾1ÿ耓èû•¿èzH‹²*H‹£*H‰� ë(H…ÿt#¾Àè´ýÿH‹4ôH‹…*H� H‰P`Hƒ=’*„�H‹=­*èø´ýÿ‹-Â*H‹ ›*H‰ÆH‰a*H�@(H‰D$‹š*D�$­H‰÷Mcäí�…H‹D$HcíHcÛHØIÄH‰D$1ÀóªLåI‹…Hc¸¬ƒÿÿu!1ÿèDªýÿH‰ÇH‹ú)H�pI‹Eÿ�˜ëI‹EHƒÆÿ�˜H‹M*Hcxhƒÿÿt/H‹Å)H�pI‹EÿPhH‹³)H�p H‹ *HcxlI‹EÿPhH‹ž)H‹�)E1öH‹R`H�p H‹z0H‰êH+=n)H)ÂI‹EH×ÿPPH‹5š)H‰ïè ¥ýÿH‰ïè‚§ýÿHc=£)H�lH‹?)H�pI‹EÿPPH‹-)Hc=n)H�pI‹EÿPPH‹)Hc=])H�pI‹EÿPPH‹)H‹ô(H‹R`H�pH‹z0H‹T$H+=Ô(H)ÂI‹EH×ÿPPH‹Ð(H‹Á(H‹R`H�p H‹z0H‹T$H+=¡(H)ÂI‹EH×ÿPPH‹�(H‹Ž(H‹R`H�p$H‹z0L‰âH+=p(H)ÂI‹EH×ÿPPH‹Ü(D9p@Ž¢Mkþ(H‹@HJ‹|8èx¦ýÿH�x迲ýÿH‰ÃH‹­(H‹PHJ‹t:H‹E"€z(t€>@tÆ_H‹@HH�{J‹t8èµ£ýÿëH‰ßè«£ýÿH‹=L1É1ÒH‰ÞA¸è©ýÿH…Àt€xuH‹P0H‹4(J‰ðH‰ßIÿÆè-²ýÿéMÿÿÿ1ÒE1ÿ‰T$D9x@Ž�Mk÷(H‹pHLö‹^ƒûÿ„nH‹ ç'@Š~$N� ýJ‹ ù@„ÿu H…É„I‰ÞI‹E+5µ'H‹T$ÁæL‹F'HcöH‹@PHÖ@„ÿtXH‹ @'H‹I`H‹y0H‰éH+ &'L)ÇHÏÿÐH‹ �'H‰ïH‹AHH‰L$ J‹t0è±¢ýÿH‹L$ H‹AHJ‹|0è¥ýÿH�lëH‹=H'J‹<L)ÇHyXH‹I`Hy0ÿÐH‹<'H‹HHLñ€y"…“H‹AH…ÀuH‹H‹ ¨&H‹t$H‰D$ H‹I`H‹y0H‰éH+=|&H+ }&HÏI‹MÿQPH‹t$ H‰ïHƒD$è¢ýÿH‰ï舤ýÿ+ª&L‰æIƒÄH�lI‹EHcûÿPhH‹­&‹\$H‹HHB‰\1‰ÙÿÁ‰L$IÿÇéiþÿÿH‹&H‹ &H‰� Š-‰Â÷Ò€âuI‹•Ç‚`H‹-´H…í„ÊL‹-D&Aƒ}@u¨„´H‰ïèÅ©ýÿ1öH‰ïè«ýÿH‰ÃH…Àu%1ÿºH�5u-è�£ýÿH‰îH‰Ç1Àèó>éu€=t H�5Ÿ1ÿºèb£ýÿH‰îH‰Ç1Àè²�þÿ¾H‰ßE1äèÕ§ýÿ€KI H‰ßè†ÊÿÿL‹5ÂH‰l$I‰ÇL‰õI‰ÞH…í„cH‹$%1ÀH…Ût#„Àu'1Àƒ{uH‹uH‹;èå¡ýÿ…À”ÀH‹[ëØ„À„H‹…ðH…ÀtH‹8ëH‹}1öèF¢ýÿH‰ÃH…Àu)H‹]1ÿºH�5øè§¢ýÿH‰ÇH‰Þ1Àè >éŒHƒ½ðH‰Â„¶1Ò¾H‰ÇèÕ«ýÿ„Àu9I‰î1ÿH‹mºI‹†ðH�5U,H‹èM¢ýÿH‰êH‰ÇH‰Þ1Àè­=é/1ÒH‰ÖH‰ßèˬýÿH‹uH‰ÂH…ÀtH‹:H‰T$è¡ýÿH‹T$…ÀuÓë9H‹…ðH‰t$1ÿºH�5%,H‹èå¡ýÿH‹T$H‰ÇH‰Þ1ÀèC=éÅL‰¢øI‰ÔH‹­é”þÿÿ1ÀH‹l$L‰|$H‰D$H‰l$L‰õ‹D$A9E@Ž/H‹$Hk\$(H‹@H€| … I‹EHH‹=ÂE1À1ÉHØH‹L‹pH‰PL‰ö1Òè}¤ýÿH…Àt€xBjuH‹ËìH�ÂH9P(„¾H‹C€x(u0I‹}H1ÒH‰îH߀#”Âè_ËÿÿI‹UHL‰ øI‰ÄL‰té�A€>@tÊL‰÷è¡ýÿH�xèV­ýÿL‰òH�5! I‰ÇH‰Ç1Àè«ýÿH‹=1É1ÒE1ÀL‰þèÙ£ýÿL‰ÿH‰D$ è ­ýÿH‹D$ H…À„qÿÿÿ€xBj…gÿÿÿH‹ ìH�ÂH9P(…OÿÿÿHÿD$éÃþÿÿH‰ëL‹|$H‹l$H‰ßè7ÄÿÿM‰§øH‰ßL‰¸øH‰ÆèŸýÿ„Àu H�=‘*è”;H‰ßèܨýÿ„ÀuH‰îH�=rèy;L‹%M…ä„EH�5ýL‰çèZ¨ýÿH‰ÃH…Àu H�5c*1ÿºèÏŸýÿL‰æH‰Ç1Àè2;H‹3"H…À„²Hƒ8„†ƒxH‰Ùtº¾H�= è ªýÿ뺾H�=ûèñ©ýÿH‹â!ºH‰ÞH‹8è­ªÿÿH‹ÓH‹€H‹�H…ÒtH�5ÄH‰ß1Àèo£ýÿH‰Þ¿ è‚¡ýÿH‹“!Hƒxt>H‰Ùº ¾H�=—è{©ýÿH‹l!H‰ÞºH‹xè6ªÿÿH‰Þ¿ è6¡ýÿH‹G!‹Hl‹PhƒùÿtH�5aH‰ß1Àèó¢ýÿëƒúÿtH�5XH‰ß1ÀèÛ¢ýÿH‹ !ƒx ÿuƒx(ÿt H‰Þ¿ èÛ ýÿH‹ì ‹H$‹P ƒùÿtH�5!H‰ß1À蘢ýÿëƒúÿtH�5H‰ß1À耢ýÿH‹± ‹H,‹P(ƒùÿtH�5 H‰ß1Àè]¢ýÿëƒúÿtH�5H‰ß1ÀèE¢ýÿH‹v ƒx0ŽpH‰Ùº ¾E1íH�=äL�=éèQ¨ýÿL�5âH‹; D9h0Ž5H‰Ùº¾L‰ÿè$¨ýÿIkí1ÒH‰ÞH‹ H‹@8H‹<(èÚ¨ÿÿH‹øH‹@8Hƒ|(t/º¾L‰÷H‰Ùèß§ýÿH‹Ð1ÒH‰ÞH‹@8H‹|(蘨ÿÿH‹¶H‹@8€|(tH‰Ùº¾H�=?èš§ýÿH‹‹H‹@8€|(tH‰Ùº¾H�=èo§ýÿH‹`H‹@8€|(tH‰Ùº¾H�=öèD§ýÿH‹5H‹@8€|(tH‰Ùº¾H�=Ôè§ýÿH‰Þ¿ IÿÅèéžýÿéºþÿÿƒx@ŽIH‰Ùº¾E1íH�=¡L�=oèצýÿL�5„H‹ÁD9h@ŽH‰Ùº¾L‰ÿIkí(HhH袦ýÿH‹}1ÒH‰Þèg§ÿÿH‹}H…ÿt0H‹uèòŸýÿ…Àt#º¾L‰÷H‰Ùèi¦ýÿH‹}1ÒH‰Þè.§ÿÿ‹UƒúÿtH�5H‰ß1Àè ýÿ€} tH‰Ùº¾H�=ôè#¦ýÿ€}!tH‰Ùº ¾H�=Þè¦ýÿ€}"tH‰Ùº¾H�=Éèå¥ýÿ€}#tH‰Ùº¾H�=²èÆ¥ýÿH‰Þ¿ IÿÅè–�ýÿéáþÿÿƒxXŽGH‰Ùº ¾E1íH�=}L�=è„¥ýÿL�51H‹nD9hXŽ L‰ÿIkí(H‰ÙHh`º¾èO¥ýÿH‹}H…ÿt;H‹uH…ötH‰|$裞ýÿH‹|$…Àt1ÒH‰Þèó¥ÿÿH‰ÙºL‰÷¾è ¥ýÿH‹E1ÒH‰ÞH�xèÌ¥ÿÿ¿.H‰ÞèÌœýÿH‹}H…ÿt 1ÒH‰Þ謥ÿÿë‹U H�5H‰ß1À胞ýÿHƒ}t'º¾H�=£H‰Ù裤ýÿH‹}1ÒH‰Þèh¥ÿÿH‰Þ¿ IÿÅèeœýÿéÿÿÿH�5v1ÿºèí™ýÿH‰ßH‰Æ1Àè žýÿH‰ßèx™ýÿÿÀu H�5¶è1ÿºèÁ™ýÿL‰æH‰Ç1Àè$5H‹=- H�5<è1œýÿH…Àt ‹P$ƒâïƒÊ ‰P$HƒÄH[]A\A]A^A_ÃAUI‰õH�5ATUSH‰ûH�ìH‹‹®H�l$H‹H‰ïL‹ �B‰—1Àè�£ýÿH‰ïèh™ýÿL‰êH‰îH)‰Á1ÀH‰×H‰D$ó¤H�L$L‰æH�=B I‹D$L‹KL‹2H‹€xQ¹jjjÿ�8H‹D$(H‹@H�Ä8[]A\A]ÃH�óÿ1ÀH‰CL‰,% èÄ•ýÿAWI‰×AVAUATI‰üUSHƒì(H‹-) H‰4$H…í„LH‰ï褖ýÿ„Àu.H�5�)1ÿºèm˜ýÿHƒÄ(H‰î[H‰Ç]1ÀA\A]A^A_éÂ3H‹…ÈH‹��H‰D$H…Û„êöC&tH‹¹ãH H9C`„ÄH‰ÞH‰ïH‰<E1öèä¢ýÿHcøè|¤ýÿH‹L$H‰ÞH‰ïH‰ÂI‰Åè¶¡ýÿ‰D$D9t$~~O‹DõI‹L‹L‰L$I‹qM…ÿt81É1ÒL‰ÿèvœýÿH…ÀtLL‹L$L‰çI‹qèP•ýÿK‹|õL‰âH‰ÞH‹ $è48ÿÿë%L‰çL‰D$èm›ýÿ…ÀuH‹ $H‹|$L‰âH‰Þè 8ÿÿIÿÆé{ÿÿÿL‰ïèÅ£ýÿH‹[é ÿÿÿH‹­é«þÿÿHƒÄ([]A\A]A^A_ÃATA‰ÔUH‰ýSè”ýÿD‰æ�Î H‰ÇH‰Ãè~¢ýÿH‹EH‰[`H‰ïÇC|ÿ�Hc�J‰ þH‹ ïH‰ÑH‹H‰X H‰P1ÒÇ@H‰PH‰Ø[]A\ÃAWI‰×AVAUATI‰üUSHƒì(H‹-0H‰4$H…í„LH‰ïè«”ýÿ„Àu.H�5ˆ'1ÿºèt–ýÿHƒÄ(H‰î[H‰Ç]1ÀA\A]A^A_éÉ1H‹…ÈH‹��H‰D$H…Û„êöC&tH‹ÀáH H9C`„ÄH‰ÞH‰ïH‰KE1öèë ýÿHcøèƒ¢ýÿH‹L$H‰ÞH‰ïH‰ÂI‰Å轟ýÿ‰D$D9t$~~O‹DõI‹L‹L‰L$I‹qM…ÿt81É1ÒL‰ÿè}šýÿH…ÀtLL‹L$L‰çI‹qèW“ýÿK‹|õL‰âH‰ÞH‹ $è ÿÿë%L‰çL‰D$èt™ýÿ…ÀuH‹ $H‹|$L‰âH‰ÞèÙ ÿÿIÿÆé{ÿÿÿL‰ïèÌ¡ýÿH‹[é ÿÿÿH‹­é«þÿÿHƒÄ([]A\A]A^A_ÃUH‰õ¾SH‰ûH‰ïQè‚H‰X0H‰ÇèÆ“H‹CH�5;H‰ßÿ�È„Àu#ºH�5T1ÿèë”ýÿZH‰î[H‰Ç]1ÀéK0X[]ÃATA‰ÔUH‰ýSèh’ýÿD‰æ�Î H‰ÇH‰Ãè$ ýÿH‹EH‰[`H‰ïÇC|ÿ�Hc�J‰ üH‹ íH‰ÑH‹H‰X H‰P1ÒÇ@H‰PH‰Ø[]A\ÃAWE‰ÏAVI‰öAUI‰ÕATI‰ÌUH‰ýH‰÷SHƒìL‰D$èg”ýÿL‰ïH‰$è[”ýÿL‰çH‰ÃèP”ýÿH‹$H�|HÇè� ýÿL‰öH‰ÃH‰Ç豑ýÿL‰îH‰ßèÖ�ýÿL‰æH‰ßèË�ýÿH‹EH‰ïÿ�1ÒL‹D$H‰PHc<H‰X�JL‰@ ‰ +H‹ D‰xH‰ÑHƒÄ[]A\A]A^A_ÃAWI‰ÈE1ÉAVAUI‰ýATU‰õSHƒì0D‹XH‹_`H�D$'PD‰þH‰ßH‰L$H‰Ñè]’ÿÿA‰ÄXƒÈÿZ€|$uE‰æMkö(E9çt&H…Ût!J‹|3H…ÿtH‹t$HƒÇè—ýÿ‰ÂƒÈÿ…ÒtMA�D/ÿA;E\rA�t/@H‰ßA‰u\Hkö(è”ýÿI‰E`H‰ÃA‹UXA9ÔtHcýD)âJ�43Hkÿ(HkÒ(H÷訚ýÿD‰àHƒÄ([]A\A]A^A_ÃAWI‰×AVAUI‰õATM‰ÄUL‰ÍSH‰ûHƒì M…ÀD‹_XH‹`L‹T$X‰L$H‰ñIEÈI‰ÐH‰òD‰ÞAÆARD‹L$L‰T$`D‰\$H‰|$è`‘ÿÿA‰ÀXZL‹T$PMkð(H‹<$D‹\$ A€:tIþ騋s\L‰ÁA9órƒÆ@D‰$‰s\Hkö(è#“ýÿ‹ $H‰C`H‰Ç‹SXIþ9Ñt)ÊI�~(L‰öHkÒ(èÍ™ýÿL‰þH‰ßè–�ÿÿ¹ L‰÷I‰Ç1Àó«M…ít L‰ïèö“ýÿI‰F‹D$M‰~A‰F M…ät L‰çèÙ“ýÿëI‹FI‰H…ít H‰ïèÓýÿH‰ÅI‰nÿCXHƒÄL‰ð[]A\A]A^A_ÃUH‰õSH‰ûQH…ÛtH�{H‰îè]•ýÿ…ÀtH‹ëæH‰ØZ[]ÃAWAVAUI‰õATI‰üUSHƒìD‹wxH‹¯€E…ö„H‹}è•ýÿ…À „éìAƒþ„æA�FÿL‰îH‹|ÅH‰Ãèï”ýÿ…À�Ñt\AƒþtV‰Ú1ÛD�<L‰î‰T$ AÑïD‰øH‹|ÅèÀ”ýÿ…À„§‹T$ yA�WÿëA�_9ÓrɉØL‰îH‹|Åè•”ýÿ…À~ÿÃëtzë…ÀttA‹t$|A9örƒÆ@H‰ïA‰t$|HÁæèw‘ýÿI‰„$€H‰ÅA‹T$x‰ØH�lÅ9Út)ÚH�}H‰îHÁâè˜ýÿ1ÀL‰ïH‰Eè\’ýÿH‰EAÿD$xë1Û똻ë‘D‰óëŒHƒÄ[]A\A]A^A_ÃH‹KH…Àt HÿÈH‰<ÃH‹5<é–ýÿHcÖH�ÏSH‰ûH‹ ÐH�™�þ¢~H��H‰ßH�5Œ1Àèö“ýÿH‰Þ¿)[é’ýÿ„U‰õSHƒìH…ÿt;€?=H‰û„pœýÿºH�5ñÞèæŒýÿ…À„µœýÿH‹ wûHƒÄ‰îH‰ß1Ò[]ëH‹ aû1ÒAX1ÿ[]ë€AWAVI‰ÎAUI‰ÕATI‰üU‰õSHƒìÆÐþH…ÿtL‹=düM…ÿ…}œýÿH‹ ôûH‹åûfInÌL‹=ùéflÉH‰ÊH)ÂHƒúo†oH‹¶ûHƒÀpH9Ø„"�ýÿH‹5ÂûH‰ÏH‰òHðH÷ÒH!ÐH‹„ûH‰ÆH)ÖH)×H9÷‚YfHnÀflÀ)jûfïÀHÇÇCI‹GH‰·ÊýI‰_f%èCPC`HÇC(L‰kXf‰C`HÇC C0C@ƒýw?H�N!HcªHÐÿà€KaKH‹^úH‰H�CPH‰PúHƒÄH‰Ø[]A\A]A^A_ÃA€<$:L‰à„’œýÿH‰C1ÒL‰æH�=sÝ1Àè!�ýÿf�K`H‰Cë¨KM…ötA€<$/uf�K`ë�€K`Kë†L‰÷è ‘ýÿH‰ÅI9îƒÝšýÿ€}ÿ/uHƒíëëL‰÷L)õ記ýÿÆ(H‰C(ë¹¾pH�=2ú) $èéÆH‹:úfo $H‹ 6úédþÿÿH‰ÈéŸþÿÿf„H‹úH‹ úSH‰ûH‰ÑH)ÁH9ùrLH‹ ìùHÃH9Ùt}H‹ýùH‰×HÃH÷ÐH!ÃH‹ÂùH‰ÞH)ÆH)ÇH9÷rCfHnÃflÀ)¬ùH‰È[ÃH‰þH�=�ùèHÆH‹ ‘ùH’ùH‹“ùH9Ëušé]›ýÿfHnÂflÀ)iùë»éF›ýÿf�AWAVL�5EÿAUA‰õH‰þATI‰üL‰÷U‰ÕSHƒì…Ò•Â1ɶÒè‘ýÿH…À„åL‹xXH‰ÃM…ÿ„•ƒýt5@öÅt A�ý…„U›ýÿ‹ƒ¼A9Å…ÇH�CHƒÄ[]A\A]A^A_ÃL‹ ØL‰÷¾Øè·�ýÿH‰ÇH…À„›ýÿL‰úL‰öèÐH…À„ ›ýÿóAo$I‹T$H‰PI‰$M‰üH‰ƒØH‰Ã@ƒýL‰cX”ÂA�ý…D‰«¼”À ¶ƒÐÁâƒà ЈƒÐé[ÿÿÿf„…í…+šýÿHƒÄ1À[]A\A]A^A_ÃE…í”Â…Àˆ1šýÿI‰Ü„Ò„&šýÿI�D$éÿÿÿ@HƒìèH…ÀtH‰€ØHƒÄÃfDUH‰ÕSH‰óHƒìH…ÿuH‰ß¾à貎ýÿH‰ÇH…À„OšýÿH‰êH‰ÞèC—ýÿH‰ÂH…À„8šýÿH�pH�x HÇ@HƒçøH‰ñHÇ€Ð1ÀH)ù�ÁÀÁéóH«H�B(ÇB H‰B0H�B8H‰B@H‹våÇ‚¸H‹HHÇB(HÇB8H‰1Hƒ=uöH‰pH‹röt H�HÐH‰JPH‰0H�BHH‰ZöHƒÄH‰Ð[]ÃH‰0H�BHH‰Böëæ„AW1ÉI‰÷AVA‰þ¿rAUATUSH�ì(H‰L$pèX–ýÿ¿ H‰„$ˆèF–ýÿ¿ H‰„$€è4–ýÿE1À1ö¿H‰D$xH‹„$ˆ1ÉÆ-H�aqH‰D$0L�ˆ4ëGH‰ÊHÁâHƒ8„�ƒx8„ foH‹Œ$€ƒÆHƒÀ@fo@ÐDHcÎI9Áte¶P „Òt´L‹œ$ˆLc×Cˆ‹PD�WD�ZÿAƒûwL‹œ$ˆMcÒCÆ:D�Wƒú„)žýÿH‰ÊD‰×HÁâHƒ8…tÿÿÿHƒÀ@I9Áu›H‹”$ˆHcÇHÁáÆ1ÀHŒ$€1ÒH‰IcÀHÁàHD$xH‰H‹¯÷H‹€¨H…ÀtL�”$ˆ‰òL�L$xH�Œ$€L‰ÖÿÐAƒþvpI�_¹H‰ÚDH‹2¶ƒè-u ¶FƒèGu¶FƒÁ…À„M�ýÿHƒÂA9ÎuÔA�FþH�-è×M�dÇ@H‹;€?-…$€l„äHƒÃL9ãuá1ÀL‹%XÓƒÍÿL�-&‰D$‰D$,1ÀH‰D$ 1À‰D$(H�D$lH‰D$ff.„@A‹$ÇD$l‰D$9ètH‹µöH‹€ H…À…ƒœýÿH‹NÓL‹D$L‰þD‰÷H‹Œ$€H‹”$ˆÇèxŠýÿ‰Åƒý?„Š‹D$l…À…œýÿƒý ŽœýÿHcD$I‹ ǾA9è…º›ýÿH‹<öH‹€°H…Àt‰ïÿЄÀu*�ý.‡q›ýÿIcD­LèÿàL‹sÒ¾I‹8è>‹l$é%ÿÿÿL‹VÒ¾I‹8è1÷ÿÿëáL‹@ÒHƒ=ÈøI‹(„¾žýÿ€}-u#€}-H�}„¡žýÿº H�5 Øè„ýÿ…Àt ¿è“ýÿH‹}øE1ÛH‰hL‰H‰løH‰H‹jøHƒ@ éjÿÿÿL‹ÉÑ1öI‹8è§öÿÿéTÿÿÿL‹³ÑÆ´õI‹H‰’áé7ÿÿÿ€ ~õ€é+ÿÿÿH‹=zõH…ÿ„ýœýÿóo)^õèi’ýÿéÿÿÿ¿èj’ýÿfoBõH‰Cõéåþÿÿ‹D$L‹D$L‰þD‰÷H‹L$xH�ƒÚA‰$è†ýÿ‰ÅH‹¶ôH‹€°H…Àt ‰ïÿЄÀ… þÿÿƒýÿ…mþÿÿH‹|$xèë‘ýÿH‹¼$€èÞ‘ýÿH‹¼$ˆèÑ‘ýÿH‹êöH…Û…®›ýÿH‹:õH…À…$›ýÿ‹\$(…Û…îšýÿHƒ|$ …3¶ýÿ€=Tõ?w¶Kõƒà?ƒÈ€ˆ?õ¶9õ¨u ƒàüƒÈˆ)õ¶õH‹T$p‰Áƒá€ù„eH…Ò…º‹\$‰Âƒâƒû„«•ýÿƒû„›€ú„ €=2ö…oHƒ=¢ô…ÓµýÿHƒ=œô…nµýÿ·¯ôf%Àf=À„¶ýÿH�Ä([]A\A]A^A_ÀfoIcÐHƒÀ@AƒÀHÁâHT$xfo@ÐBI9Á…ïúÿÿéOûÿÿ€t0èK„ýÿH�xè’�ýÿH‰îI‰ÅH‹L‰ïH�P1ÀèKŽýÿL‰+„HƒÃI9Ü…ÃûÿÿéÝûÿÿL‹OÏ€%ôïI‹H‰®óéÓüÿÿL‹ ñL‹+Ï¿PI‹L‰L$8è!�ýÿ¹¾H‰Å1ÀH‰ïó«H‰]H‰ß葇ýÿL‹L$8H…ÀH‰E„„¶ýÿM…É…€µýÿH‹_ÞL�EH‰-TÞH‰-UõH‰(L‰CõéPüÿÿ€=©ô„‚µýÿ¶Zóƒà<„šµýÿ€ Hó€=Có?w¶:óƒà?ƒÈ@ˆ.ó¶(ó¨…ÿûÿÿƒàüƒÈˆóéîûÿÿ€=Gô„’´ýÿ¶øòƒà<„¢´ýÿ¶æòƒàüƒÈˆÚòé·ûÿÿ‹\$,ƒû„?ƒû„R€=ô…]÷Ш„òýÿÿéÑýÿÿ‹D$A9$„Õ“ýÿ¶Žò¨…�“ýÿ¶ò€%¨ñ߯´óƒàüƧóƒÈƱóˆWòé4ûÿÿL‹“ÍH‹¼ñ¾I‹8H‰]íèÇšñèE1ÉL‰ ?íéôúÿÿ€%;ñéèúÿÿ1ÿ‰|$,éÝúÿÿL‹<;I‹8ègéÄúÿÿÇD$,é·úÿÿL‹ÍH‹ �ñI‹H…É…¶‘ýÿH‰ß裃ýÿH‰tñé‰úÿÿ€=FñyÆ=ñH…Ò„‹üÿÿéO’ýÿH‹ŠòƒÈˆyñH…Ò…ð³ýÿ€=Ãò„±þÿÿ‰Âƒâ€ú„¿€ OñÀé—þÿÿéÏ‘ýÿH‹óº1ÿ1íH�5HÑèø€ýÿH‰ÞH‰Ç1Àè‹�ýÿºH�5GÑ1ÿèØ€ýÿH‰Ç1Àèn�ýÿH‹ÌL‹d$0I‹D$0H‰D$H…À„dH�=½ý1ÀA‰íA¿è8�ýÿ1ÀA¾T$ „Ò…5 AƒÅA�ýЄ´’ýÿIƒÄ@Iƒ|$0tÕA‰î‰l$A‰ìL‰âH�='hHÁâHúH‹*H…í„‘D‹j8Aƒý„ƒAƒíH�=ýAƒýwH�éÔ„À…¡ H‰éH�5ýH�=¦Ò1À螀ýÿºH‰ï‰T$è€ýÿAƒý‹T$A–ÅDøIÁäE¶íAÕAÅH�™gN‹d (M…ä… E‰ï¸AƒÆA�þÐtE‰ôH�=lgL‰âHÁâHƒ|0„(ÿÿÿ‹l$Aƒÿ�ú™ýÿH‹3¿ AƒÇèjƒýÿAƒÿuéH‹t$1ÿºèSýÿH‰Çè;}ýÿƒÅHƒD$0@�ýÐ…oþÿÿºH�5œÏ1ÿ½èýÿH‰Ç1Àè´ýÿH‹3¿ èƒýÿƒíuîºH�5pÏ1ÿèï~ýÿL�-ªÍH‰Ç1Àè~ýÿH‹-Ïðº1ÿH�5[ÏèÄ~ýÿH‰îH‰Ç1ÀèWýÿèB€ýÿH‰ÅI‰ÄëL‰ï1ÀIƒÄè<ýÿI‹4$H…öuéH‰ïèûŠýÿ¿ èa{ýÿº1ÿH‹-kðH�5Ïèg~ýÿH‰îH‰Ç1Àèú~ýÿH‹;貿 è({ýÿH‹-9ð1ÿºH�5Kè.~ýÿH‰îH‰Ç1ÀèÁ~ýÿº1ÿH‹+H�5ÔÎè ~ýÿH‰Ç1Àè¡~ýÿº1ÿH�53èî}ýÿH‰ïH‰Æ1Àè!‚ýÿº1ÿH�5[èÎ}ýÿH‰ïH‰Æ1Àè‚ýÿº1ÿH�5«è®}ýÿH‰ïH‰Æ1Àèá�ýÿº1ÿH�5ÃèŽ}ýÿH‰ïH‰Æ1ÀèÁ�ýÿ1ÿºH�5ëèn}ýÿH‰ïH‰Æ1Àè¡�ýÿº1ÿH�5 èN}ýÿH‰ïH‰Æ1Àè��ýÿ‹=ïèf‰ýÿ1ÿºH�5HI‰Äè }ýÿL‰âH‰ïH‰Æ1ÀèP�ýÿº1ÿH�5Rèý|ýÿH‰ïH‰Æ1Àè0�ýÿº1ÿH�5rèÝ|ýÿH‰ïH‰Æ1Àè�ýÿº1ÿH�5’è½|ýÿH‰ïH‰Æ1Àèð€ýÿº1ÿH�5Âè�|ýÿH‰ïH‰Æ1ÀèЀýÿº1ÿH�5òè}|ýÿH‰ïH‰Æ1Àè°€ýÿº1ÿH�5è]|ýÿH‰ïH‰Æ1Àè�€ýÿº1ÿH�52è=|ýÿH‰ïH‰Æ1Àèp€ýÿº1ÿH�5bè|ýÿH‰ïH‰Æ1ÀèP€ýÿº1ÿH�5šèý{ýÿH‰ïH‰Æ1Àè0€ýÿº1ÿH�5âèÝ{ýÿH‰ïH‰Æ1Àè€ýÿº1ÿH�5"è½{ýÿH‰ïH‰Æ1Àèðýÿº1ÿH�5bè�{ýÿH‰ïH‰Æ1ÀèÐýÿº1ÿH�5šè}{ýÿH‰ïH‰Æ1Àè°ýÿº1ÿH�5Òè]{ýÿH‰ïH‰Æ1Àè�ýÿº1ÿH�5è={ýÿH‰ïH‰Æ1Àèpýÿº1ÿH�5Zè{ýÿH‰ïH‰Æ1ÀèPýÿº1ÿH�5’èýzýÿH‰ïH‰Æ1Àè0ýÿº1ÿH�5ÒèÝzýÿH‰ïH‰Æ1Àèýÿº1ÿH�5úè½zýÿH‰ïH‰Æ1Àèð~ýÿº1ÿH�5*è�zýÿH‰ïH‰Æ1ÀèÐ~ýÿº1ÿH�5Zè}zýÿH‰ïH‰Æ1Àè°~ýÿº1ÿH�5Šè]zýÿH‰ïH‰Æ1Àè�~ýÿº1ÿH�5ºè=zýÿH‰ïH‰Æ1Àèp~ýÿº1ÿH�5:èzýÿH‰ïH‰Æ1ÀèP~ýÿº1ÿH�5bèýyýÿH‰ïH‰Æ1Àè0~ýÿº1ÿH�5‚èÝyýÿH‰ïH‰Æ1Àè~ýÿº1ÿH�5ªè½yýÿH‰ïH‰Æ1Àèð}ýÿº1ÿH�5Òè�yýÿH‰ïH‰Æ1ÀèÐ}ýÿº1ÿH�5êè}yýÿH‰ïH‰Æ1Àè°}ýÿº1ÿH�5è]yýÿH‰ïH‰Æ1Àè�}ýÿº1ÿH�5"è=yýÿH‰ïH‰Æ1Àèp}ýÿº1ÿH�5JèyýÿH‰ïH‰Æ1ÀèP}ýÿº1ÿH�5jèýxýÿH‰ïH‰Æ1Àè0}ýÿH‰éº¾H�=±ÉèWƒýÿº1ÿH�5�èÄxýÿH‰ïH‰Æ1Àè÷|ýÿº1ÿH�5Ùè¤xýÿH‰ïH‰Æ1Àè×|ýÿº1ÿH�5 è„xýÿH‰ïH‰Æ1Àè·|ýÿº1ÿH�59èdxýÿH‰ïH‰Æ1Àè—|ýÿº1ÿH�5™èDxýÿH‰ïH‰Æ1Àèw|ýÿº1ÿH�5Éè$xýÿH‰ïH‰Æ1ÀèW|ýÿº1ÿH�5ùèxýÿH‰ïH‰Æ1Àè7|ýÿº1ÿH�5IèäwýÿH‰ïH‰Æ1Àè|ýÿº1ÿH�5yèÄwýÿH‰ïH‰Æ1Àè÷{ýÿº1ÿH�5©è¤wýÿH‰ïH‰Æ1Àè×{ýÿº1ÿH�5Ñè„wýÿH‰ïH‰Æ1Àè·{ýÿº1ÿH�5éèdwýÿH‰ïH‰Æ1Àè—{ýÿº1ÿH�5èDwýÿH‰ïH‰Æ1Àèw{ýÿº1ÿH�5Aè$wýÿH‰ïH‰Æ1ÀèW{ýÿº1ÿH�5aèwýÿH‰ïH‰Æ1Àè7{ýÿº1ÿH�5�èävýÿH‰ïH‰Æ1Àè{ýÿº1ÿH�5©èÄvýÿH‰ïH‰Æ1Àè÷zýÿº1ÿH�5 è¤výÿH‰ïH‰Æ1Àè×zýÿº1ÿH�51 è„výÿH‰ïH‰Æ1Àè·zýÿº1ÿH�5Y èdvýÿH‰ïH‰Æ1Àè—zýÿºH�5‹ 1ÿèDvýÿH‰ïH‰Æ1ÀèwzýÿºH�5» 1ÿè$výÿH‰ïH‰Æ1ÀèWzýÿºH�5ó 1ÿèvýÿH‰ïH‰Æ1Àè7zýÿºH�53!1ÿèäuýÿH‰ïH‰Æ1ÀèzýÿºH�5c!1ÿèÄuýÿH‰ïH‰Æ1Àè÷yýÿ¶äåƒà`<@„Ë‘ýÿH�5Ö!1ÿºè’uýÿH‰ïH‰Æ1ÀèÅyýÿö²å`„Y‘ýÿºH�5œ"1ÿèeuýÿH‰ïH‰Æ1Àè˜yýÿH�5Ñ"1ÿºèEuýÿH‰ïH‰Æ1ÀèxyýÿºH�5ü"1ÿè%uýÿH‰ïH‰Æ1ÀèXyýÿºH�5#1ÿèuýÿH‰ïH‰Æ1Àè8yýÿH‹;è�#¿ èÆqýÿºH�5´Å1ÿèÓtýÿH�5,#H‰Ç1Àèbuýÿ1ÿèK}ýÿºL‰æ1ÿè¬týÿH�=gÃH‰Æ1Àè;uýÿºL‰æ1ÿèŒtýÿH‰Çè´týÿE�|¸éÂôÿÿH‰éH�5¨èH�=Ç1ÀèýtýÿºéZôÿÿAƒ|$8„¿óÿÿ„À…ÔH�5JñH�=ÚÆ1ÀèÊtýÿ¸M‹t$(AǸM…ö„‡óÿÿé§ŽýÿL‹{¿H�5EÏI‹8L‰D$@è_|ýÿL‹D$@H…ÀH‰D$8„›†ýÿ¿D‰óèO€ýÿH‰Å¸I‰Æ‰\$@H‰éH‰ËH‹T$8D‰öH‰ÏH)ëH‰L$H)Þè€výÿH‹L$HH…ÀH‰Ç„†ýÿèºsýÿI�NÿH‰ÂH‰ÈH)ØH9„؅ýÿ‹\$@¾ H‰ïèósýÿH…Àtƾ#H‰ïèÞsýÿH…ÀtÆH‰ï¶< w4¾€HÁæ H£Æ‚§†ýÿH‰ú„ÀuH‹|$8èxwýÿ…À„LÿÿÿA‰Þé§…ýÿH‰ú¶„À„Š<=t}< t�K†ýÿ< t ƒè <‡<†ýÿÆH�r¶€ú wP¸€HÁà H£Ð‚…ýÿH‰ð„Òu éô„ýÿHƒÀ¶„Òt€ú=t€ú wë¹€HÁá H£ÑsÜÆèƒé\ÿÿÿH‰ðë΄Àu˜éØ…ýÿéÓ…ýÿé�ýÿ1ÿºH�5P&èSrýÿH‰Ç1Àè¹ ¶râéñÿÿH¸H \â€=¯ã„™íÿÿëԉ€ Jâ÷Ò€â…ZíÿÿéÄðÿÿ@ATUSHƒì ƒÿztM~A�ÿƒ$�ÿ.�™�ÿ›„_�ÿ¬„|1ÀHƒÄ []A\Ãf.„ƒÿPuæéz©ýÿH‹-½H�5ÙÎH‹]H‰ßè|uýÿ…À„÷©ýÿH�5;ÄH‰ßèeuýÿ…À„È©ýÿH�5+ÄH‰ßèNuýÿ…À„{©ýÿH�5ÄH‰ßè× „À….©ýÿH�5ÄH‰ßèÀ „À…^ªýÿH�5ÄH‰ßè© „À…ªýÿH�5 ÖH‰ßèòtýÿ…À„Ô©ýÿH�5íÃH‰ßèÛtýÿ…À„¥©ýÿH�5äÃH‰ßèÄtýÿ…À„‚©ýÿH�5ËÃH‰ßè­týÿ…À„_©ýÿH�5ÄÃH‰ßè–týÿ…À„8©ýÿH�5»ÃH‰ßè „À…©ýÿH�5¢ÃH‰ßè „À…<«ýÿH�5›ÃH‰ßèñ „À…«ýÿH�5ØÃH‰ßè:týÿ…À„àªýÿH�5¿ÃH‰ßè#týÿ…À„½ªýÿH�5¸ÃH‰ßè týÿ…À„™ªýÿH�5¨ÃH‰ßèõsýÿ…À„uªýÿH�5›ÃH‰ßèÞsýÿ…À„NªýÿH�5ŽÃH‰ßèÇsýÿ…À„*ªýÿH�5€ÃH‰ßè°sýÿ…À„ªýÿH�5vÃH‰ßè™sýÿ…À„ß©ýÿH�5hÃH‰ßè‚sýÿ…À„»©ýÿH�5ZÃH‰ßèksýÿ…À„”©ýÿH�5.äH‰ßèTsýÿ…À„a©ýÿH�53ÃH‰ßè=sýÿ…À„.©ýÿH�5!ÃH‰ßè&sýÿ…À„û¨ýÿH�5ÃH‰ßèsýÿ…À„רýÿH�5úÂH‰ßèørýÿ…À„!«ýÿH�5îÂH‰ßèárýÿ…À„þªýÿH�5ÕÂH‰ßèÊrýÿ…À„ÛªýÿH�5ÊÂH‰ßè³rýÿ…À„µªýÿH�5ÁÂH‰ßèœrýÿ…À„l¦ýÿH�5¨ÂH‰ßè…rýÿ…Àt?H�5¥ÂH‰ßèrrýÿ…À„Í¢ýÿH�5ŒÂH‰ßè[rýÿ…À…ý€%�Þ¿¸é�üÿÿ€%Þûëíéó¥ýÿ�ï/ƒÿT‡püÿÿH�"HcºHÐÿàH‹–¹·KÞH�5ÄÀH‹(f�ãþf‰5ÞH‰ïèéqýÿ…À„w«ýÿH�5èÃH‰ïèÒqýÿ…À…<«ýÿ€ ÞérÿÿÿH‹=ïØE1äè/zýÿH‹0¹L‰%ÙØH‹8H…ÿ…D©ýÿH�=MÀH‰8è¶oýÿH‰·Øé.ÿÿÿ¶·ÝƒàçƒÈˆ«Ýéÿÿÿ€ \Ùé¡ûÿÿH�5‚ÁH‰ßèGqýÿ…À„¥ªýÿH�5iÁH‰ßè0qýÿ…À„‚ªýÿH�5�ËH‰ßèqýÿ…À„SªýÿH�5KÁH‰ßèqýÿ…À„$ªýÿH�5%½H‰ßèëpýÿ…À„õ©ýÿH�5&ÁH‰ßèÔpýÿ…À„Ò©ýÿH�5ÁH‰ßè½pýÿ…À„»©ýÿH�5ÁH‰ßè¦pýÿ…À„’ªýÿH�5 ÁH‰ßè�pýÿ…À„lªýÿH�5ñÀH‰ßèxpýÿ…À„FªýÿH�5×H‰ßèapýÿ…À„ ªýÿH�5ÜÀH‰ßèJpýÿ…À„QªýÿH�5ÞÀH‰ßè3pýÿ…À„.ªýÿº H�5ÓÀH‰ßè—iýÿ…À„²¢ýÿH�5íÀH‰ßèpýÿ…À„CH�5ÝÀH‰ßèéoýÿ…À„ÏH�5ÊÀH‰ßèÒoýÿ…À„¬º H�5´ÀH‰ßè6iýÿ…À„@H�5©ÀH‰ßèŸoýÿ…À„H�5¨ÀH‰ßèˆoýÿ…À„÷ºH�5œÀH‰ßèìhýÿ…À„ ºH�5‰ÀH‰ßèÐhýÿ…À„,H�5‰ÀH‰ßè9oýÿ…À„ ºH�5uÀH‰ßè�hýÿ…À„B ýÿH�5nÀH‰ßèoýÿ…À„ʺH�5ZÀH‰ßèjhýÿ…À„vŸýÿº H�5NÀH‰ßèNhýÿ…À„5ŸýÿH�5EÀH‰ßè·nýÿ…ÀtsH�50ÀH‰ßè¤nýÿ…ÀtTH�5*ÀH‰ßè‘nýÿ…Àt5H�5ÀH‰ßè~nýÿ…Àu €%¶Úé"üÿÿH‰ÞH�= À1Àè­é üÿÿ€ ”Ú€éüÿÿ€%FÖûéôûÿÿ€ :Öéèûÿÿ€ -ÖéÜûÿÿ€ !ÖéÐûÿÿHƒÃH�5ÃÅH‰ßè nýÿ…À„I ýÿH�5wÅH‰ßèòmýÿ…À„H�5ÆH‰ßèÛmýÿ…À…øÇÑÕéxûÿÿH�{H�t$º èñeýÿH‰ÃH‹D$€8…õŸýÿ�Cþƒø‡éŸýÿ‰’Õé=ûÿÿǃÕé.ûÿÿ€ tÕé"ûÿÿHƒÃ H�5ÅH‰ßè[mýÿ…Àt`H�5õ×H‰ßèHmýÿ…Àt>H�5î×H‰ßè5mýÿ…À…PŸýÿÇ/ÕéÒúÿÿ€ ÕéÆúÿÿ€ ÕéºúÿÿÇÕ é«úÿÿ1ÿ‰=ûÔéžúÿÿÇèÔé�úÿÿH�5¾H‰ßèÌlýÿ…À…BŸýÿÇÂÔéiúÿÿ€ ®Ôé]úÿÿf„UH‰ýSHƒì@„öuZ€="ÚuG¿èuýÿHÇH‰ÃÆ@H‹rÃH‰H‰hÀ}=uè¶CéþÿÿHÇD$`A¼éíýÿÿHÇD$`A¼KéÙýÿÿH�hÈA¼JH‰D$`éÂýÿÿH‹³¼A¼)H�Pü‹@üH‰Ÿ¼‰]ÕéœýÿÿA‹F�HƒìM‹NÈÇBÕ M‹†XÿÿÿI‹¶èþÿÿA¼(I‹¾xþÿÿH‹ <ÕPA‹‹*ÕPAÿ¶ ÿÿÿè­HƒÄ éDýÿÿH‹5¼A¼'H�PH‰$¼‹âÔÇØÔ‰éýÿÿHÇD$`A¼²éýÿÿH‹5ÊÌH‹»ÌM‹fM‹>H‰òH)ÂHƒú'†AH‹•ÌHƒÀ(H9ЄgÍýÿH‹ ¡ÌI‰ðHÈH÷ÑH!ÈH‹ fÌH‰ÇH)ÏI)ÈI9ø‚ fHnÀH� àÉH‰T$`flÀ)@ÌNjʃøƒÐÿH‹ÁL‰b A¼L‰zH‰B‹ŠÉÇB‰BéCüÿÿ¿@A¼Žè“kýÿóAoI‹V�H‰D$`@óAoFH‰I‹V0@óAoF H‰P8@(éýûÿÿI‹F�A¼AH‰D$`ééûÿÿH‹ÚºA¼æH�Pü‹@üH‰ƺ‰„ÓI‹H‰D$`é»ûÿÿH‹¬ºA¼åH�PH‰›º‹YÓÇOÓ‰éŒûÿÿÆmÓA¼˜ézûÿÿÆ[ÓA¼—éhûÿÿI‹6¿A¼è•H‰D$`éKûÿÿH‹ ËM‹&H‹ËóA~N�H‰ÊfInÔH)ÂflÊHƒú/†òH‹=ÔÊHƒÀ0H9ø„šËýÿH‹àÊI‰ÈHÐH÷ÒH!ÐH‹¥ÊH‰ÆH)ÖI)ÐI9ð‚’fHnÀflÀ)‹ÊI‹D$Ç=H‰GA‹D$A¼¾ÇG‰GÆG(OèÚé•úÿÿI‹~È1öA¼Iè´ôÿÿéúÿÿI‹vÈ¿A¼ è{H‰D$`éaúÿÿI‹vÈ¿‰A¼è�H‰D$`éCúÿÿ¿A¼Œè“iýÿI‹H‰D$`H‰I‹VÈH‰PéúÿÿI‹vÈI‹¾Xÿÿÿ1ÒA¼ÁèH‰Çè;éöùÿÿÇD$`ƒA¼#éãùÿÿÇD$`„A¼$éÐùÿÿI‹FÈA¼èH‰D$`é¼ùÿÿI‹vÈI‹¾XÿÿÿºA¼Âè±H‰ÇèÙé”ùÿÿI‹v�I‹¿/A¼îè]H‰D$`ésùÿÿI‹v�I‹¿+A¼ðè<H‰D$`éRùÿÿóA~1ÿE1ÀA¼w‰¼$�AF�L‰D$pÆ„$”)D$`éùÿÿ¿A¼�èohýÿI‹H‰D$`H‰1ÒH‰PéùøÿÿH�|$`I�vȹA¼†ó¥Ç„$�éÓøÿÿH�|$`I�vȹA¼ó¥Ç„$�é­øÿÿI‹¶ ÿÿÿ¿A¼èÖI‹vÈ¿5H‰ÂèeH‰D$`é{øÿÿI‹v�I‹¿-A¼ñèDH‰D$`éZøÿÿI‹I‹N�¿0M‹¾ ÿÿÿH‰T$(H‰L$èèÍÿÿH‹L$H‹T$(Ç?I‰ÄI‹GI‰D$A‹GAÇD$AƒA‰D$I‰L$ M‰|$I‰T$(„6ÙýÿL‰d$`A¼ýéà÷ÿÿI‹v�I‹¿&A¼úè©H‰D$`é¿÷ÿÿI‹v�I‹¿A¼õèˆH‰D$`éž÷ÿÿè¹I‹FÈA¼äH‰D$`é…÷ÿÿH�|$`I�vȹA¼�ó¥Ç„$�é_÷ÿÿI‹>¾A¼aèŒÊÿÿéG÷ÿÿ€H�éfD¿ôÿÿI‹>1öA¼fènÇÿÿé)ôÿÿ¾0H�=ÍÃ)L$èƒ�H‹ÔÃH‹ ÕÃfoL$éßøÿÿ¶3ƉƒȀÀêˆ%ƶÒH‰T$`éØóÿÿ¶ÆA¶V�A¼lÁâƒà ЈøÅé³óÿÿI‹~ȹ1Ò1öA¼Kè‹ðé–óÿÿI‹>¾A¼cèÃÆÿÿé~óÿÿH‰ðéÚöÿÿèÁélóÿÿH‹-ËI‹61É1ÿA¼tèƒðH‰D$`éIóÿÿH‰Èéføÿÿ�=ËËuÇ¿ËþÿÿÿèæL�µ½I‹VÈI‹>1ÉH‹—ÉL‰ÆL‹x@è³8L‰ÿè VýÿH�xèRbýÿL‰ùI‰ÄëH‹5+¡¶úö~Œu€ú_uˆHƒÀHƒÁ¶„ÒuÚé|ÄýÿH‰l$M‹~ÈL�%r½ˆ\$(A€?„¹ÊýÿH‹â A¶<,„�Êýÿ¶ÈöJ@…�Êýÿ„À„MÊýÿI�_ë@€ý,t@¶ÅöB@u HƒÃ¶+@„íuäÆL‰æL‰ÿèRýÿ…À…+ÊýÿÆ¢Æ@ˆ+I‰ßë‡�=¼ÊuǰÊþÿÿÿè×I‹FÈM‹~�M‹¦XÿÿÿH‰D$I‹L‰ÿH‰D$(A‹†˜ýÿÿ‰D$PI‹†ÐýÿÿH…ÀH‰D$@•D$X1öèM…ÿH‰D$0•ÀA‰Ç…ÏÍýÿL‰ç1öèäI‰Ä€|$Xt E„ÿ…PßýÿH‹úÈH…ÒtMH‹BH‹5É¿+H‹æÈ€ˆ¸èR1ÒH�=>ÄH‰ÆH‹¿ÈL‹xèö H‹¯ÈI‰‡ˆE1ÿH…ÒtoHƒ|$(H‹BuVH‹|$0Hƒ:L‰`PH‰xXt.Hƒ|$…vÍýÿƒ|$P…?ÍýÿH‹H‰×H‰D$XèJ`ýÿH‹T$Xë®Ç€¬H‹|$@H‰xpë½Hƒx`„SÍýÿë�M…ÿ…VÍýÿ1ÿA¼/H‰=1ÈH‰=ÈH‰=ÈH‰=ÈéŸðÿÿ躃=KÈ…áL‹%6ÈH‹ 'ÈM…ät@H…Éu L‰%ÈL‰á1Òˆ\$I‰Ï‰Ó…ÛuMM…ÿ…N×ýÿ‰ÚH¾\$…Ò„©M‹$$M…äuÏL‹%ÓÇI‰ÏH‰ÈM…ä…áâýÿH…À„SÇ@0H‹ëëH¾\$ëÄI‹ƒxH‰D$`…ŒÛýÿ�8…uÛýÿL‹`E1ÿH�ËnJ‹4úL‰çèŸVýÿH�¸n…Àt&IƒÇIƒÿußH�5»L‰çè{Výÿ…À…sÚýÿéÏÚýÿL‰ÿèFìÿÿH‰D$`A¼Xé†ïÿÿºH�5kº1ÿèSRýÿM‹>I‰ÄM…ÿ„áýÿ1öL‰ÿèÚ€=Ó¿„ÞàýÿH‹=¶¿H…ÿ„ŸàýÿèHRýÿI‰ÄH…À„ŽàýÿL�xIÑïI�è|^ýÿL‹ …¿1ÒL‰8H‰ÁH�xL‰àMáH‰ÆH÷ÞA¶41D�FÐAƒø ‡>àýÿÁâHƒèD¨uÙˆH…ÀtHƒÇ1ÒëÊéIàýÿH…É„ L‰l$(L�I¹H‰l$L‰ýA‰ßL‰ÃL‹-6ÆE1äM…í…1áýÿH‹ÆH‰\$0H‰ÓH…Û…ÄàýÿH‹5ûÅH‹\$0H…öuH‹uH…ö„‚áýÿH‰5ÝŃ}0„‹àýÿ1ÒH‹}PM‰àM‰éj1Éjjè‘1ÀHƒÄ ¿@H‰§Åèz]ýÿ1Ò1É1ÿH‰H‰ÆH‹EE1À‰~81Ò1ÿH‰FH‰NL‰FèïL‹%xÄM…ä…àýÿ1É1ÒH‰Þ1ÿè�3H‹mH…í…ÿÿÿH‹l$L‹l$(I¾ßÇdŃ-5ÆA¼ éšíÿÿI‹T$I‹t$1ÉE1ÉE1ÀH�=)Åè¬ H‹ Åé-ýÿÿI‹E1ÿH‰×H‰T$èmPýÿH‹T$1Ɉ\$I‰Ä逸>é]úÿÿÇ¿»b¸béIúÿÿH‹–½H�xèõIýÿH‰ž»¸é(úÿÿH‹u½¾éúÿÿH‹=f½èÉIýÿH‰r»¸|éüùÿÿÆé%üÿÿ€*L‰D$…=Üýÿ¶á°L‰*½Ç¼ˆI�BH‰˰A¶BAÆBˆ³°èÖL‹D$L�J>éøÿÿ‹T$ƒø„ôHcÂL‰D$LÈL‰L$H‰�°è\þL‹T$H‹p°L� >L‹D$‰ÇéÕ÷ÿÿƒ=»Ç ±u Ǭ»Hƒ=P°uH‹’H‹H‰=°Hƒ=%»uH‹ä‘H‹H‰»H‹»°H…À„ØýÿH‹£°Hƒ<Є ØýÿèCáÿÿé ÷ÿÿE1ÒƒèD‰¶ƒø‡“ÛýÿH�q>‹‚é­øÿÿH�{è`HýÿH‰ºé'úÿÿéö×ýÿé9ÛýÿH‹=Û»Hc¼º¶LÿƒéB€ù6w9¸ºHÓàH¹@@@@H…Èt$1öè|CýÿE1ÀH‰²¹L‰³¹éÉùÿÿº ëÜHº H…Ð…˜ßýÿH¹º H…ÈtµéußýÿH‹±¡H�PH‰¦¡‹dºÇZº‰Ãff.„Hƒìff.„�è[ƒø*t&…Àt>ƒø u탞¯èAƒø*uæff.„�è+ƒø*„œúýÿƒø/…£úýÿHƒÄÃø*tßé¡úýÿf.„H‹i®¶Z®Sˆ„À„ÙþÿH‹P®H�H¶ÆH‰ ?®¶@ˆ-®‰Ð[Ã�H‹Ñ H�Pü‹@üH‰à‰�¹Ã@U‰ýSH‰óHƒìH‹5~±H‹o±H‰òH)ÂHƒú†‹H‹P±HƒÀ H9„¹H‹ \±I‰ðHÈH÷ÑH!ÈH‹ !±H‰ÇH)ÏI)ÈI9ø‚ƒfHnÀflÀH� —®)±‰*‹Ø®ƒøƒÐÿH‹ÁH‰ZÇBH‰B‹Q®‰BHƒÄH‰Ð[]þ H�=°°èk}H‹¼°H‹­°H‹5¶°HƒÀ H9Ð…Vÿÿÿé9þÿfHnÆéxÿÿÿé*þÿDUSH‰ûHƒìH‹5€°H‹q°H‹-ŠžH‰òH)ÂHƒúvsH‹O°HƒÀH9„žH‹ [°I‰ðHÈH÷ÑH!ÈH‹ °H‰ÇH)ÏI)ÈI9ørofHnÀflÀ) °ÇBHÇH‹EH‰H‰ÐH‰UH‰ZHƒÄ[]þH�=ǯè‚|H‹Ó¯H‹įH‹5ͯHƒÀH9Ð…nÿÿÿé_þÿfHnÆë�éSþÿff.„@AUATUSH‰ûHƒìH…ÿ„ÊL‹%s±‰õM…ät?I‹<$H‰ÞèpFýÿ…Àu@„í…ßHƒÄL‰à[]A\A]ÃM‹l$M…í…¥M‹d$M…äuÁ@„íuH�5÷©H‰ßè)Fýÿ…À…ûÿýÿ¿Xè÷´ÿÿH‰ßH‰ÅèªH‹CÇ=H‰B‹CÇB‰BH‰ÐH‰Z L‰b@ˆj([]A\þ0H�=ó©è®vH‹ÿ©H‹ð©H‹5ù©HƒÀ0H9Ð…fÿÿÿé@üýÿfHnÆë‡é4üýÿff.„AWAVA‰ÖAUE1íATI‰üUH‰õSHƒìH…ötQ‹F8ƒøA•Å…À•ÀA!ÅH‹HÇH…Àt0‹H8…É•ƒù•Á!ÊA ÕH‹H‰(H‰ÅH…ÒtH‰ÐëÚf.„M…ät$I‹<$H…ÿt€?*…x€…nIÇ$H‹50©H‹!©L‹=:—H‰òH)ÂHƒúg† H‹û¨HƒÀhH9Ø„rûýÿH‹ ©H‰÷H‰ÊHÈH÷ÒH!ÐH‹ɨH‰ÁH)×H)ÑH9Ï‚WfHnÀ1ÒflÀ)­¨fïÀÇCHÇI‹GH‰I‰_HÇCXf‰S`DˆkbCHM…ät+I‹$Aƒ|$0H‰CXA¶D$4„ûýÿˆC`ˆCaóAoD$CHH�CH‰k@H‰CH�C H‰C(H�C0DˆscHÇCHÇC HÇC0H‰C8H…í„ßúýÿI‰ïL�- ŠM‹gM…ä„öúýÿL‰çè<;ýÿL‰çL‰îI‰G è}=ýÿI‰G(IÄL‰çè;ýÿI‰ÆH…À…’M‰w0M‹?M…ÿuµL�%ß­L‹mM…í„“úýÿA¾u@„ö„“L‰ç�@€þ?t6@€þ[t0@€þ*t*ºIƒÅèA¾uH‰Ç@„öuÓº1öè÷H‰ÇH‰ÞèH‹mH…íu”HƒÄ[]A\A]A^A_Ã@C¾t4ÿH‰$H�=ç£H�@ÿH‰D$èÁ:ýÿM‰ðH…Àt5E1öé?ÿÿÿH�=*­땾hH�=ܦè—sH‹è¦H‹5é¦éÒýÿÿHƒ|$u%A¾éÿþÿÿH�5Y‰è…@ýÿH…À……ýÿÿéùýÿºMôH‰ÐH�=]£L‰D$H÷ØH‰$A¾tÿè.:ýÿH‹$L‹D$H…ÀtI‰Öé¦þÿÿH‰ðé¡ýÿÿHƒÂI9Є‘þÿÿë²�AUATUSHƒìH…ÿ„]‹WH‰ûƒú ‡_ÿýÿH� ÷ê‰ÐHc�HÈÿà@H‹s€>.„ ƒú…‚H‹=s©A¸1É1Òè<<ýÿH‰ÅH…À„Ë€x‡H‹sf�H‹{ H‰5]¦HÇZ¦èeÿÿÿ‹?¦ƒèƒøvHƒ=7¦„±ƒ{„ÞH…íu)H‹sH‹=÷¨1ɺA¸è½;ýÿH‰ÅH…À„$üýÿ€=¦„QHƒ=¦„^L‹c1ɺH�=„§L‰æè =ýÿI‰ÅH…À„¤ûýÿ¶U¶ •¥‹Ÿ¥ö „ñL‹%¯ƒAˆM I�”$ I‰Uƒø„-ƒø„ÁH‹ Ž¥H‹w¥D‹cH‰M(¶U¥H‰E01ÀE…ä”ÀÁâÁà f  зUf%ÿpf�â� Ѐ{(f‰E…fH‹$¥H�BÿHƒøý†—HÇ¥ëTf„H‹ ƒH H9$¥…¾€=稅±H‹SH‰æ¤H‹C Æã¤H‰ĤH‰ŤHƒÄ[]A\A]Ãf.„€~…ëýÿÿƒú…-þýÿD‹v¤E…Û„ýH‹{ Æf¤è}ýÿÿƒ=V¤ÆS¤¶x¤„Z„Ò„ýýÿL‹%S‚H‹t¤I�”$H9Є×H‹T¤H…Ò„ýüýÿƒ=¤vI�Œ$ H9È…LÿÿÿH‹ ¤H‹-û£H…É„Ñ Hi0I�Œ$ L‹-ÿ£H9È…ÎH‰-ï£H‰*HƒÄ[]A\A]Ãf„fïÀ­£¶£‹=V�‘=.�Þ=…ìH‹S€:.…�€z…wH‹•£H‹~£ÆD£Æh£H+B0H‰U£H‰>£é|þÿÿ�H‹{è7üÿÿ€=@£H‹{ „Z�;5„š L‹% £H‹-£èüÿÿ€=£„5þÿÿH‹û¢H9è…‹ƒú^�ÿƒú$ŽÃƒê%ƒú9‡÷üýÿH� çHc‘HÈÿàf.„H‹{è§ûÿÿ€=°¢„Õýÿÿ‹=…Æ ‹g¢…À„ÑøýÿH‹5p¢H‹‰¢HƒþvH�LÿH‰ÈH�þ…fH%ðÿÿH‹q¢Æ'¢ÆK¢H+B0H‰8¢H‰!¢HÇ¢éTýÿÿf„=‰…íH‹kH�5gžH‰ïèR8ýÿ…À…ò H‹k¥Æì¡H‰Í¡é ýÿÿH…À„ÇH…í…21íéÍþÿÿ€H‹H‹-•¡è úÿÿ€=©¡H‰-‚¡„ÇüÿÿH‹C(Hƒ=x¡HEC H‰ÃH…À„ßH�-˜æ‹Sƒú ‡Ýùýÿ‰ÐHcD…HèÿàH‹{èGúÿÿƒ= ¡…uüÿÿHƒ=*¡…güÿÿH‹s H�==�Z1À[]A\A]éóÎL9íƒ)ýÿÿé*øýÿf�H‰-¡1íéþÿÿf�1ÒH÷öH‰ÈH)Ðé�þÿÿH‹{L‹%Å èÐùÿÿ€=Ù L‰%² „÷ûÿÿHƒ=¬ H‹C H‹[(tH‰ÃH…Û…6ÿÿÿff.„fïÀ} † é´ûÿÿL%j H9-s … ûÿÿH‹^~H H9y …€=<¤…H‰? émûÿÿL+%# H9-, L‰% …RûÿÿH‹~H H9+ …Ä€=·H‰ñŸéûÿÿL!%ÕŸH9-ÞŸ… ûÿÿH‹É}H H9䟅}€=§£…pH‰ªŸéØúÿÿH‹ ŽŸH…É„ÞøýÿL‰àH™H÷ùH‰vŸXH‰ï[]A\A]é/óH‹ `ŸH…É„VùýÿL‰àH™H÷ùH‰HŸXH‰ï[]A\A]éóL¯%1ŸH‰ïL‰%'Ÿ[[]A\A]éãò1ÀL9%Ÿ’À1ÉH‰ŸH‰ Ÿé=úÿÿ1ÀL;%ñž’À1öH‰åžH‰5îžéúÿÿ�ƒú|„Ñöýÿ�êƒú>‡•H� äHc‘HÈÿàHǵž1ÀL9%œž•ÀH‰’žéÐùÿÿH‹†ž‹-hžÇöžH‰¿ž…í„<öýÿH‹h|H� H9‚ž…!öýÿ‹†ž‰Ñƒáûƒù…4ƒê…b LàL‰%%žH‰vžÇTžéRùÿÿD‹-ð�Ç~žE…í„ÊõýÿH‹ö{H H9ž…°õýÿH‹=Ô�H‹ í�Iƒü†õõýÿJ�D!ÿI�ü…N HÁè I¯Ä‹ã�H‰œ�ƒú„Ãú„£ö. @uI�t$ÿH!ñHÈH‰o�ƒú„©øÿÿ…Ò…3õýÿfInÄH‹R�fHnÏL‰%¾�flÁE1äÇu�H‰v�L‰%�)ˆ�é^øÿÿ1ÀL;%�“ÀH‰�1ÀH‰�é=øÿÿL9%óœƒ0øÿÿL‰%æœé$øÿÿ1ÀL9%Øœ”À1ÿH‰ÌœH‰=Õœéøÿÿ1ÀL9%·œ“À1ÒH‰«œH‰´œéâ÷ÿÿH‹ ˜œH‰ïIÓìL‰%‹œAZ[]A\A]éFðH‹ wœH‰ïIÓäL‰%jœA[[]A\A]é%ðH‹ VœHƒùvN�d!ÿ1ÒL‰àH÷ñI)ÔL‰%9œéw÷ÿÿ@H‹CÆ=œHÇ*œH‰œH‹C H‰œéF÷ÿÿL‹%zH‹"œI�Œ$ H‰ÅH9ÈtI�Œ$H9È…+„Ò„ ÷ÿÿI�”$H9Õ……÷ÿÿéööÿÿ-/ƒø'‡òýÿH�÷áHc‚HÐÿàD‹%s›E…ä„ÅöÿÿH‹k1Ò1öH‰ïèj¡ÿÿH…ÀuSH�5ΗH‰ïèÆ1ýÿ…À…ëñýÿH‹‡›H…À„ïff.„H‹@0H…À„Ô‹¨¤…íxéHƒxHtâH‹pHH…ö„Ë�;G„¨‹N|¸fïÀÆ›)ïšHÓàH‰Ýšéöÿÿ‹ºš€ {�…Ò„öÿÿ1Àƒút0H‹=­�H�5V�H‹Gÿ�¨H‹=•�1ö‰Ãè¬1ýÿ1Ò‰Á‰Ø÷ñÆ�šH‰~šfïÀ){šé±õÿÿH‹SH‹=[�E1À1ÉA¹H�5ùœèÔ*ýÿH…À„± ¶p�Vý€ú‡Ùïýÿö@ „ž H‹s1É1ÒH�=›èM1ýÿH…À„� ö@!…w ¶5Ó™@8p ”À¶ÀfïÀÆþ™H‰ß™)à™éõÿÿƒ=´™„ õÿÿH‹{1Ò1ö豟ÿÿH…À„ð ö€¸„æôÿÿH‹@H1öÆ®™H‰5�™H‰5�™H‰‘™é¿ôÿÿH‹{1öè9éÿÿH…À„iðýÿH‹@(fïÀÆq™)Z™H‰K™é‰ôÿÿH‹{1öèéÿÿH…À„ßîýÿH‹[™H‹@ E1ÉÆ ™Æ.™H+B0L‰ ™H‰™H‰ ™é;ôÿÿƒ=Ù˜„.ôÿÿH‹{1Ò1öèÖžÿÿH…À„óñýÿö€¸„ ôÿÿH‹xpH…ÿ…X H‹@HH‹¸vÆÁ˜H‹@8H� H‰§˜H‰�˜1ÀH‰�˜éÅóÿÿf.„H‹-A”H‹j˜H…í…³H‹Š˜Æ@˜Æd˜H+X0H‰Q˜H‰:˜HÇ7˜émóÿÿf�1íé©ñÿÿL‹-:˜Hh0L9íƒ7ôÿÿI�Œ$ H9È„&ôÿÿé'ïýÿ€H�5j”H‰ïèI.ýÿ…À…&òýÿH‹j›Æã—H‰Ä—éóÿÿŽ8 =)…WD‹-�—E…í„øíýÿH‹ŸuH H9º—…Þíýÿ‹¾—�PÿƒúwaH‹o—Ç¥—H‰¾—éœòÿÿH‹=Jšö€¸H‹^HHE^@èU.ýÿ1ÒfïÀÆH—‰ÁH‰Ø),—H÷ñH‰—éXòÿÿƒèƒø†Lòÿÿé^íýÿƒú…ÚH‹5l—J� H‰ A—H�VÿH…Ê… L‰%Õ–éòÿÿH‹—H‰–éòÿÿ¶u�~ý@€ÿ‡þðÿÿA€M!@€þ…þH‹}(L‹%štHƒ`tI�´$ H9÷…çI�”$ AˆM I‰Uƒø…Óðÿÿ€=G–¸„ÊðÿÿH‹ X–I�”$ I‰ÈH9Ñ… L‹ MœM…Ét €=ᛄ™H‹Ì›H…Ò„êƒz tH‹ëìH…Ò„ïýÿ¶º¸@öÇ …WH‹rHH…öt öF%€„&H‹R0ëÍH‹=¾˜H‰êH�5d˜H‹Gÿ�8H‹£•H�BÿHƒøý†ƒ=~•„Óðÿÿ1ÀH‰w•éÅðÿÿI‹QHH…҄‹r$�愃H‹rH…ö„JH9V@•Æ@„ö…‘H…Òt‹r$�æƒî…ŽI‰ÐM‰E„À…¡ïÿÿ¸Hƒ=•„~ïÿÿ¶³—L‹þ”H‰îH�=œ—H‹ ý”H‹Þ—A‰ÄƒÈˆˆ—H‹›—AÀìAƒäÿP¶o—AÁäƒàûD àˆ_—‹“”éïÿÿ„Ò„äHƒ=–”…ÖH‹{ ƒ„àëýÿèe „À…•L‹k Aƒ}„ÅéýÿAƒ}…šA�}…»ëýÿM‹mAƒ}…¬ëýÿI‹mƒ}…žëýÿ�}…‘ëýÿH‹}è’%„À„€ëýÿH‹E ƒx…rëýÿHƒx…gëýÿI‹E(ƒx…YëýÿHƒx…Nëýÿ€=ñ“tH‹”I�”$H9Ð…Œïÿÿƒ= “„õîÿÿé_ìýÿL‹VM…Ò„#I9r@•Æ@„ö…¼ýÿÿM…Ét @€ç …þýÿÿH‹RHH…Ò„Hþÿÿ‹r$�æƒî„3þÿÿé^ìýÿé ìýÿH‹ “H…À…-øÿÿé×éýÿE1ÛfïÀÆL“L‰-“).“édîÿÿƒú…íêýÿL‰%“éOîÿÿH‹5ý•H9–˜@•Æé§ýÿÿH‹=æ•A¹E1À¹H�5�•è\#ýÿH‰ÅH…À„Bêýÿ¶@�Pý€ú‡PH‹U(H‹B`H…À„–H‹ ¨pH�Á H9È„CH‹RXE1ÒHU0H‰Ž’Æ�’H‰p’L‰q’Hƒ=Y’…H‰èH‹=A’H‰B’H…ÿ„„íÿÿH‹[H‰Þè�(ýÿ…À…píÿÿH…í„”üÿÿ¶Eƒè<‡…üÿÿH‹pH H9E(…nüÿÿ1É1ÒH�=›“H‰Þè#)ýÿH…À„Rüÿÿ¶@ 8°‘„íÿÿé=üÿÿL‰%Æ‘éíÿÿH‹-ê‘�M$ éÎýÿÿL‹gH‹}L‰æè(ýÿ…À„ H‹mH…í„(ùÿÿëÝH‹=x”H‰îH‹Gÿ�ØH‹d‘€HéÆûÿÿ1ÒI÷ôé¬óÿÿÇCéëÿÿH9v‘u €==•„§þÿÿH‹BXfïÀHE0Æ<‘H‰‘)‘é¨þÿÿƒ=ò�‡­èýÿH‹E0E1ÛÆ‘L‰÷�H‰è�H‰ñ�ésþÿÿHƒÈÿé{þÿÿHÊH÷ÞH!òH‰‘H)ÂH‰¹�é÷ëÿÿH‹Ré-ûÿÿ€}…ûÿÿE1íÆ¯�L‰-��H‹¹�H‰’�é�êÿÿL‹n“I9²˜@•ÆéÎüÿÿö@„Ÿëÿÿ雿ýÿ=(~s=fu X[]A\A]éµó=muNH‹/�1öHƒÉÿH�QHƒøv‰ÁHÑèƒá ÎH‰Ñëçéˆæýÿé;êýÿ@„ötH�Q1ÀH‰ô�H‰ý�é+ëÿÿ=F„·A\¾¤H�=ý‹[]A\A]é‡þÿ€}…ýêÿÿH‹E0H‰¯�H‹E(H‰´�éâêÿÿL‹% méùÿÿAˆM ƒâI‰uƒøt?„Ò…íéÿÿé\úÿÿ€}tMH‹]ÆEé÷ÿÿèfèÿÿ€=o�„”êÿÿA][]A\A]é¼ò€=*�tg‰ÐÀèéâøÿÿ1íH‰-8�éfêÿÿ€=“tªH‹ £’H…É„™èýÿH‹]1ÒH‰ØH÷ñH…Òt�1ÿºH�5{¥è^!ýÿL‰æH‰Ç1ÀèÁ¼édÿÿÿH‹ ÝŽ„Ò…Géÿÿé¡ùÿÿƒ=¡Ž…öéÿÿH‹kºH�5ƒ§1ÿè!ýÿAXH‰Þ[H‰ÇH‰ê1À]A\A]él¼è÷ñH‹€lLe0H�¨ é†ëÿÿ‹JŽƒútJƒêt €==Žu<„À…ÞûÿÿE1ÉHƒ} ÆEL‰M(…ÈûÿÿH‹=ú�H;o0„·ûÿÿH‰îè°#ýÿéªûÿÿL‹c1ÿºH�5¡¦èt ýÿH‰ÞH‰ÇL‰â1ÀèÔ»é~ûÿÿL9çƒ!éÿÿH�TÿI)üL!âHÐH‰É�ééÿÿèÇæÿÿÆÐ�éöèÿÿH‹¤�H‹’�é[øÿÿH‹RéRøÿÿéäýÿ1Àéšóÿÿ¸é�óÿÿƒø-t'ƒø~t.ƒø!…‘ýÿÿ1ÀHƒ=d�”ÀH‰Z�é˜èÿÿH÷N�éŒèÿÿH÷B�é€èÿÿƒ=�…þãýÿé£ìÿÿé[çýÿénãýÿé'æýÿ@H‹é7ýÿ€UH‰ýS‰óHƒìH‹H…Àt-@:ptH‹@H…Àt@:pt‰ñH‹@H…Àt 8HuòHƒÄ[]Ã�„Ò„˜H‹5Á‹H‹²‹H‰ðH)ÐHƒø†�H‹“‹HƒÂ H9Є¥H‹ Ÿ‹I‰ðHÊH÷ÑH!ÊH‹ d‹H‰×H)ÏI)ÈI9ø‚ˆçýÿfHnÂflÀ)J‹HÇH‹UˆXH‰PHÇ@H‰EHƒÄ[]ÃD1ÀéQÿÿÿ¾ H�=ýŠèXH‹ ‹H‹5 ‹H�P H‹ïŠH9Â…`ÿÿÿé>çýÿé9çýÿff.„�UH‰õSH‰ûHƒìH‹5ÍŠH‹¾ŠH‰òH)ÂHƒú†•H‹ŸŠHƒÀH9„¹H‹ «ŠI‰ðHÈH÷ÑH!ÈH‹ pŠH‰ÇH)ÏI)ÈI9ø‚ÒæýÿfHnÀH�KflÀ)RŠHÇBH‹CH‰*H…ÀuH‰HƒÄ[]Ã@H�HH‹@H…ÀtåH‰ÁH‹@H…ÀuôHƒÁëÓ¾H�=õ‰èWH‹ŠH‹ò‰H‹5û‰HƒÀH9Ð…Lÿÿÿétæýÿéoæýÿ@HƒìH‹vH‹è/!ýÿ…À”ÀHƒÄ¶ÀÃf�AWAVAUATUH‰ÕH�m�SHƒìH‹!yH‰t$H9ƒ-æýÿH�PøH‹@ø€=„ŒH‰ýxH‰îwuiL‹-…�I‰ÏI‰üH‰ÏIƒ}pM‹uh•D$1öèÚÿÿM…ÿI‰EXH‰ÃA•ÇM…öuE„ÿuIH‹|$1öèëÙÿÿH‰Ã€|$I‰]Pu%H‹.�L‰``H‰¨�HƒÄ[]A\A]A^A_Ã@E„ÿtÖé�åýÿL‹t$H�5„L‰÷è: ýÿ…Àt®1öL‰÷èŒÙÿÿH‰ÃëŸf.„f.„f.„f„AWAVAUATUSH�ì˜H‹(ˆH…ÀtHƒx …?õýÿH‹@0H…ÀuìH‹= �H…ÿ…ü H‹}‹H‹5.‹H�=H‰h•èë 1ÿèÔèßßH‹h†H…Û…åèÚ&ýÿ„À„’ìýÿ1ÿè»àH‹,‹1Ò1öH‹=ÙŠƒˆH‰•èæ¿èŒàH‹UŠH‹@ H…ÀtÿÐöd‹…ù¶V‹ƒà<„N H‹-¼‹H�µ‹H…í…›éýÿH�5Í…Hƒ=Í…H‰0„o H‹=�‹è äH‹=™‹èäH‹݉ÿP(Hƒ=ZŒ…îëýÿH‹E‰E1íL�d$\H…ÛtA„H‹{0L‰æèD%ýÿH‰C8H…À…—èýÿ�|$\ð…OìýÿH‹[HH…ÛuÐE…í…Tïýÿ1ÉH‰ –�èé%ýÿè¤&Hƒ=dŠ…¾ïýÿD¶%à“E„ä…¡ïýÿ€=æ�ÆÉ“tH‹N�H…Û…Ø H�=.�E1ÿH�4ŠL‰=�H‰=�è!ÉL‹=�M…ÿ…TåýÿèœÍ€=H‹tvH‹LŠL‹5UŠH‹@D¶xM…ötZ€M‹¦�M…ät;@M‹,$A¶E„À„kH‹ðd¶ÈöJŒ…-<_„%M‹d$M…äuÉM‹¶M…öu­H‹=®‰ƒ@u0¶y‰ƒà<t"A¸1É1ÒH�5z„è\ýÿI‰ÄH…À…Ê¿èVêE1ÉD‰ |†è7ëèr-H‹=kˆèÆ2D¶=‰D‰øƒà<„~A€ç …žH‹'‰L‹%˜ƒƒx@u M…ä… öꈄ|L‹%5‰M…ä„lH‰ÞL‰çè$ýÿ„À„çýÿM‹¤$M…ä„HH‰ÞL‰çèí#ýÿ„À„`åýÿM‹¤$M…ä„$H‰ÞL‰çèÉ#ýÿ„À„¨ãýÿM‹¤$M…ä„H‰ÞL‰çè¥#ýÿ„À„xãýÿM‹¤$M…ä„ÜH‰ÞL‰çè�#ýÿ„À„HãýÿM‹¤$M…䄸H‰ÞL‰çè]#ýÿ„À„ãýÿM‹¤$M…ä„”H‰ÞL‰çè9#ýÿ„À„NñýÿM‹¤$M…ättH‰ÞL‰çè#ýÿ„À„áìýÿM‹¤$M…ätTH‰ÞL‰çèù"ýÿ„À„oíýÿM‹¤$M…ät4H‰ÞL‰çèÙ"ýÿ„ÀuéZíýÿH‰ÞL‰çèÅ"ýÿ„À„¼åýÿM‹¤$M…äuàH‹9†ÿP0H‹5�†H�=x4èSè~+H‹=w†èîH‹=k†1öƒR„è­4H‹=ƒèáîH‹ê…ÿP8è2@¶û†ƒà<tJH‹==‡H‰ÞH‹Gÿ�„À„–çýÿH‹=!‡H�5x†è%ýÿH…Àt€= ˆ‹P$„˜êýÿƒÊ‰P$Hƒ=ªŒ…9H‹•‚H…ÀtMH‹P8H…Ò„óHƒxX…èHƒxp…ÝHƒxh…ÒH‹JPH9HP…ÄH‹RXH‰PXH‹@0H…Àu³€=‡t H�=$CþÿèNý¶'†ƒà<t|H‹i†L‹ �M…ätiL�-5�fDM‹4$L‰÷èôýÿH�x è;"ýÿL‰òL‰îH‰ÃH‰Ç1ÀèøýÿL‰æH‰ßè=.H�{ÇC.sizL‰æÆGeè&.H‰ßèî!ýÿM‹d$M…äu¤H‹}„A¾ ÿPX¿PèÚ!ýÿL‹%óˆH‰ÃM…ä…øH‰ßè¯!ýÿH‹h�H…Ût-‹ƒ¤…ÀxHƒ{HtH‹«�H…í… H‹[0H…ÛuÖö2…@…�1öƒ=8…@—Æ1ÿè…ÿèH�=µSþÿè$ü¿è æH‹ÓƒÿPx1ÒH�5÷lH�=àƒèýÿ€=z„tè�i·΄÷Ðf©€„ÖâýÿH‹»H…Û…ãýÿH�Ę[]A\A]A^A_éÄ@H‹@0H…À…óýÿÿé;þÿÿA¶EI�u„Àt¶ÈöJŒu<_…½úÿÿ¶FHƒÆ„ÀuãL‰ïèLýÿH�x è“ ýÿA€ÿL‰êH�5CDˆ8H‰ÇHƒßÿH‰$1Àè@ýÿH‹<$L‰æè„,H‹ $A€ÿL‰æHÀH�DDˆyH�yÇ__stfÇ@opèX,H‹<$è ýÿé7úÿÿH‹{è�ØH‹éøÿÿI‹t$H‹=åƒ1É1ÒA¸è®ýÿH…Àt€Hl@M‹$$éªúÿÿ¶•ƒƒà<„aþÿÿH‹=c�H�t$\ÆD$\è$d€|$\…@þÿÿéÅìýÿH‹5nfoµ�Æ¿Œfo%VH‹W€óo)\$)$$ê)T$ fH~íH…Û…DHƒ=~…jéýÿH‹/ƒH‹5€ ú‚H‹@0H‰nŒH…öt H‹ê~H�pÐH‹}1Òè3H‹ô‚H‹5EŒH9p0u 1öH‰56Œfol$ H‹=�mH�´$€L�l$pH�õ€L�5ž~)¬$€èåfot$L‰îH‰ßL‹¤$€L‹¼$ˆ)t$pèÛäH‹D$pfo<$L‰÷H�t$`H‹l$xH‰D$)|$`èµäM…ä„áöÿÿH‹D$`H‹0~H‰D$ H‹D$hH‰$H‹k€H…À„»éýÿ¶pa@öÆ …}èýÿH‹H0H…Ét Hƒ¹ðuH‰ÂH‹@HëÍH‹C8H…ÀtH‰Ø~ÿÐ1ÿH‰=Í~…À…áæýÿH‹éˆþÿÿH‹F|H‹=OoH‰è§ÚévöÿÿL‹5ëM…ö„røÿÿAöFa uuI‹F0L‹ �M…äuAëcff.„ff.„ff.„„A�åÿÿÿE‰l$$M‹d$M…ät$E‹l$$A÷Å tÜI‹<$H�57|èÌýÿ…ÀuÈëÒM‹vHérÿÿÿH‹V�1Ò¾H…Àt9·HJfÁéƒáƒù„ßÛýÿ‰÷Óç úöÂ…µÛýÿ‰Ñ÷рᄨÛýÿH‹€ë€=€„YõÿÿéIÛýÿ€}„øÚýÿH‹mH…í„Iûÿÿëç¶@<†QÝýÿ<„IÝýÿé÷ÿÿé[äýÿéßýÿH‹=¬€H�53{è°ýÿI‰ÄH…À„�âýÿH‹�~H‹=>†H…Û…âýÿ€=»�¶5µ�uƒÎ¶€ƒà<„¢âýÿèýÿ…Àx,H‹=†ècåHƒ=ó…„Iùÿÿè …À„<ùÿÿécâýÿH‹=Ô…è7åH‹=È…è;ýÿ‰ÇèDýÿºH�5¨™1ÿH‰ÃènýÿH‰ÞH‰Ç1ÀèѪ1ÉA�L$$€I‰L$@ë€1ÒL‹=v{‰$M…ÿ„ŒâýÿAƒ¿¤xZM‹¯�M…í„÷áýÿIƒHL‰ít@M…ít;I‹t$I‹}èóýÿ…Àu#D94$ƒgãýÿ‹$I‹WHH‰ÆH‰ÃÆAÆE‰4$M‹mëÀM‹0ë�étèýÿff.„H…ö„§ATUH‰ýH‰÷SH‰óÿÕƒ{‡´èýÿ‹CH�CHc‚HÐÿàH‹sH‰ïè¼ÿÿÿH‹H…Ût8L�%!CH‰ßÿÕƒ{‡Šèýÿ‹CIc„Làÿàf�H‹sH‰ïè„ÿÿÿH‹H…ÛuÏ[]A\Àƒ»¤ÿtãH‹sH‰ïè[ÿÿÿH‹H…Ûu¦ëÕ�Àƒ»¤ÿtƒH‹sH‰ïè3ÿÿÿH‹H…Û…sÿÿÿë©H‹5þƒH‰ïèÿÿÿë�H‹sH‰ïèÿÿÿë‚H‹5߃H‰ïè÷þÿÿé6ÿÿÿH‹sH‰ïèæþÿÿé%ÿÿÿ�AVAUATUS‹GH‰ûƒø tƒø „ž[]A\A]A^ÃHƒ=ó}…éýÿL‹kL‰ïèñ ýÿH‹šyI‰ÄH…Ût6öCat'H‹{èÓ ýÿL‰æH‰ÇH‰Åè% ýÿ…À„oçýÿH‰ïè•ýÿH‹[PH…ÛuÊL‰çè„ýÿè_Ѓ=ì|H‰Y|…H‹5L|L‰ïè\ýÿH‰e}H…À„WçýÿH‹=U}¾Æ�vèTýÿ„À„FèýÿH‹=5}H‹&x‹5(xH‹Gÿ�˜„À„ûçýÿH‹=}H‹Gÿ�ÀH‰Ö|H…À„¸çýÿ‹5³`H‹=è|è£ýÿH‹l{ÿPHH‹ Ò|€=»}‹ADtB¶o|ƒâ€út3€Ì€=±}t, €‰Â€æûöR|u €=ž}u�âÿÿÿ‰QDé€þÿÿ€äþëË$ëҀ̉ÂëÙ�Ê€‰QDébþÿÿéLæýÿ靿ýÿff.„�H‹I|ÇÏ�H‹@ƒxu H…ÿtöG'@u*HƒìH‹5w‹=wèÄ ýÿƒø‡Êçýÿu HƒÄÃ@Ãéêçýÿf.„AWAVL�5]@AUA‰ÕATAƒåI‰ôU‰ÕSH‰ûHƒì(H…ÿt?ƒ{w1‹CIc†LðÿàDE…íu L‹{XM…ÿ…òH‹{‰êL‰æè ÿÿÿH‹H…ÛuÁöbz…-HƒÄ([]A\A]A^A_Ã@H‹{H‰Þ‰êI‰ÜègÿÿÿH‹H…ÛuˆëÅDH‹{ƒt®H‹GVL‰%pxÆxH HÇ@xH‰IxHÇ6xèÑÿÿélÿÿÿ@A‰ïH‹ÆzAƒÏL‹@0H‹{D‰úL‰æH‹ ýƒL‰$H‰L$è×þÿÿH‹˜zL‹$L9@0uÌH‹L$H9 Òƒ„ÿÿÿéÝçýÿ€¶Ca¨tEH‹ÁƒH‰SX…íu^H�t$H‰ßHÇD$L‹=!vH‰t$è_„À„#çýÿHƒ|$…¼H;lƒ…®þÿÿéçýÿH‹=Ò‰êL‰æè8þÿÿé“þÿÿE…í…°¨t•H‹K0H…ÉtŒ¶QHƒâƒú„¦ƒê…sÿÿÿöAD@„iÿÿÿ€{`‰_ÿÿÿH‹Aƒx…QÿÿÿH‹�ö€Œ @„=ÿÿÿ¶CaƒàíƒÈˆCaé+ÿÿÿH�5¤XL‰ÿèÍýÿH…À…öýÿÿéuæýÿL9=@u…ùåýÿH‹D$H‹H‰H‹D$H‰éÿÿÿHƒ=Š‚„BÿÿÿéÖþÿÿ¨t•éÍþÿÿéšæýÿf„H‰øH…ÿu"SH‰÷¾(H‰Óèw ýÿH…À„žçýÿf�` þ[Ãf�g þÃff.„@AWAVAUATUSHƒì8öGa…H‰ûH‰õèÝöCa…ë‹5­s…ö…Ÿçýÿ€=Þw…’çýÿH‹{0¾èºýÿ„ÀuH‹{0H�T$ ¾èsýÿ„À„0H‹wH‹€ÈH…À„WéýÿH�=H9Ð…B¶C`‰Á‰Âƒá@ƒâ„À‰¨¸„É…¶ƒÈA‰Ä„Ò…õH‹k0öED@…¶¶EHƒà<uJöCau H‰ßè<H‹k0H‹EH�5­wH‰ïÿ�È„À„òæýÿ€KaA¾HƒÄ8D‰ð[]A\A]A^A_ÃL‹% q<u½M…ä…çýÿH‹k0H‰� öCat£éÐçýÿ1À„É„[ÿÿÿ„Ò…SH‹k0éfÿÿÿA¼„Ò…?H‹k0öED@„JÿÿÿH‰ïD‰æèô ýÿH‹k0é6ÿÿÿè–ýÿA‰ÄH‹ÜuH‹€¸H…À…¼æýÿL‹k0Aƒü „iæýÿAƒü …ÙåýÿH…í„ÐåýÿH‹{0èRýÿ1ÀH‹{L‹%åuH‰C0L‹-âuD¶5ÓuèœH‰ïAÀî葵·ºu·S`ƇyÇéuAƒæf�âàf%þ Ðf‰�uH‹CH‰4rè?¡ÿÿ¶yu1ÒÆGyH‰rL‰âÀè€æ÷L‰-`uL ðƒàHÁà H ÐH‰Du蟹H‹=`oèsýÿ1ÉH‰ Ro€KaéYþÿÿE1äH‹k0öED@…çýÿE…ä„þÿÿé©þÿÿH‰ßÿЄÀ…-þÿÿH‹k0éçýÿÿff.„�Hƒ0uxAUATUSH‰ûHƒì8öG`tPH‹(H…ÿu]H‹-¦nL�-„L�%OqH…í„PèýÿH‹}L‰éL‰âH‰Þèm„À„Íçýÿ€c`ûHƒÄ8[]A\A]ÃH‹H‰ÞèJ„ÀuåéÉçýÿÃH‹S1ÉH�5Ht1Àè<ýÿH‰ÞH‰ÇH‰Åè„À…qçýÿH‰ïè>ýÿélÿÿÿf„AWAVAUATUH‰ýSH‰óHƒìH‹vXè#ýÿ€=þÿÿH‹D$H‹@ƒx…ˆðýÿH‹D$ÆD$#H‰D$é×ýÿÿ¶\i‰Â‰ÁÀêÀéƒâƒáƒò8Ñ„þíýÿH�Ä8[]A\A]A^A_ÃéÅîýÿ@USH‰ûHƒìƒ…]ñýÿH‹0¾è?H…ÀuHƒÄ[]ÃH‹{0¾H‹oPèÁ¾H‹{0Hƒ¿ðuè^ýÿ€Ka H‰k0ëÊ@AWAVAUATUSHƒìh@ˆt$öGF…ݶGJH‰ûA‰ôƒà…[H‹{L‹+ètýÿL‰ï1ÒH�5be‰Å1Àè�ùüÿI‰Å@„í…eH‰ÇH‰ÞèûüÿL‰ïH‰Åè�ýÿH…í„Y�MDH‰ïèeõüÿ„À„GH‰ßè…ûüÿH‰ïH‰ÆèêýÿH‰ßèúüÿH‰ï‰ÆèÿüÿH‹EH‰îH‰ßÿ�8„À„ìñýÿº� H�5’gH‰ïèŒöüÿH…À„Ïñýÿ¾HH‰ïè¦÷üÿI‰ÆH…À„=ñýÿL�l$0H‰ßL‰îèºýÿ…À„ÜL‹T$0L;„H‹ƒðL‹ L‰t$PfoD$@I‰.H…ÀAÆF4L‰ÏHEÃIÇFIÇFI‰F‹D$8IÇF A‰F0AF8L‰L$è:÷üÿH‰ïH�HI‰ÇH‰ÎH‰ $è÷üÿH‹ $L‹L$H…ÀH‰Â„.ðýÿHƒù‚PI‹D øH‰D øIƒÿƒ×H‹ dI‰V(ÇD$,H…É„˜H‹Q(H…Ò„ÐH‹A0H‰ ÍcH…À„”H‰ $A¶ÔH�t$,L‰ïÿÐH‹ $A¿1öH‰5Ÿc…À…§ðýÿH‹ H…Étb¶D$‰D$ƒ|$,uRH‹Q(H…ÒtAH‹A0H‰ $H�t$,H‰ bcH…À„C‹T$L‰ïA¿ÿÐH‹ $1ÒH‰=c…À…óîýÿH‹ H…Éu§Hƒ=a…ŸîýÿA‹v0‹D$,ƒþÿt…À…·I‹~èáùüÿAÇF0ÿÿÿÿ‹D$,…À…NA€~4…šïýÿ€KJH‰ïè–úüÿ1ÀHƒÄh[]A\A]A^A_ÃöÁ… H…É„²þÿÿA¶ˆöÁ„£þÿÿA·D þf‰D þé“þÿÿL‰×L‰T$èwõüÿH‰ïH�HH‰ÎH‰ $èDõüÿH‹ $L‹T$H…ÀI‰Ç„-îýÿL‰ÿL‰Öó¤L‰|$0é©ýÿÿE1ÿéÿÿÿ<u @€þ„—üÿÿ<„YÿÿÿéËIƒçø1ÀI‹ H‰ HƒÀL9ørïé þÿÿH‹5GeH‰Çè¯÷üÿL‰ïH‰Åè$ýÿH…í„×îýÿ�MDH‰ïèüñüÿ„À„Ôº� H�5fdH‰ïè`óüÿH…À…ÔüÿÿéžîýÿA‹‰A‹D ü‰D üéžýÿÿAƒ÷¸¶SJH‰ïE çH‰kPD)øƒâçƒàÁà ЈCJèòüÿ¶SI¶EIƒâƒà÷ ЈEIH�IOþÿéþÿÿH‹{è*ýüÿ„À…IþÿÿA‹v0ƒþÿ…+þÿÿé7þÿÿH‰ $H�t$,L‰ïE1ÿÿÒH‹ $énýÿÿL‰ïÿÒH‹ $éÂýÿÿE1ÿéiýÿÿéçíýÿéâíýÿéÝíýÿ�AVAUATUSHƒìH‹-bH…Û„ÄL�%½cëR‹�¨…Ét<€=Kc„ÛE1íH‹çcL‰æH‰ïH‹@ÿ�@„À„ðýÿ€=c„§H‹[HH…ÛtiöCa uñH‹k0¶ÿbH‹5¡cH‰ïèéôüÿöC`…¢ïýÿA¶$ƒâ€út?ö.c u6H…À„áîýÿ‹ED¨@„]ÿÿÿE1í€=¯b…gÿÿÿéqïýÿHƒÄ[]A\A]A^ÃH…À„[îýÿL‹-3cH‹UI‹M‹A9B‹EDt³éàîýÿéTïýÿé2ïýÿ�AWAVAUATUSHƒìD¶z`AöÇ„‡L‹rI‰ýH‹~I‰ôH‰Óè�òüÿL‰÷H‰Åè‚òüÿHÅAƒç…?ïýÿL‰ïèmòüÿH�|è³þüÿI‹T$M‰èL‰ñH‰ÇH‰ÅH�5Ž_1ÀèdüüÿH‰ÞH‰ïèIíÿÿ„ÀuH‰ïèmþüÿ1ÀHƒÄ[]A\A]A^A_Ã1ÀëíH‰kH‹{0¾èfüüÿ„Àu¸ëÐH‹C0ö@D@tï¶C`‰Â÷Ò€â…çîýÿ¨u H‹{èõüÿI‰ÆH‹{0L‰öèDûüÿëÀf�H�ìØH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀHƒ=Åbt?H�„$à€?%Ç$H‰D$H�D$ ÇD$0H‰D$tH‰þH‹=ŽbH‰â1Éè|‘H�ÄØÃ€!„UïýÿëØ„AVAUI‰ÕATI‰üUH‰ÍSH‰óHƒìD‹t$@H…ö„:€~„H…É„+ðýÿH‰ñöEFu(H‹<H��0I9ÐuK€y…»A€}„K€=—]…éI‹|$8H…ÿ…!ðýÿHƒÄ¸[]A\A]A^Ãf„A÷Æ u¬A÷Æu¸HI9ÀtCAö@%… ðýÿAöD$uH‹Eƒxt�fD¶A�Pý€ú†š<…rÿÿÿé@ïýÿ¶Aƒè<v=öED@u€IéPÿÿÿöED@„_ïýÿA€M€Ié8ÿÿÿH‹N(H…í…ýþÿÿé#ïýÿ@H‹A(H…À„8ïýÿö@Ft°é-ïýÿH‹™\H‰éL‰êH‰ÞD‰t$@L‰çH‹@PHƒÄ[]A\A]A^ÿàH‹A(H‹€àH…À„Ìþÿÿö@F„ÂþÿÿÆAH‰A(éµþÿÿéÜîýÿfDAWAVL�5Q$AUI‰õATI‰ÌUH‰õSH‰ûHƒì(H‰T$H…ÿt>ƒ{‡!ïýÿ‹CIc†Lðÿà€H‹{H‹T$L‰áH‰îè¤ÿÿÿH‰D$H‹H…ÛuÂH‹D$HƒÄ([]A\A]A^A_ÃA¶$¶ƒ¸I‰ÝH‹{HƒâƒàßÁâ Јƒ¸è—âÿÿH‹T$H‹CHH‰T$H…À…pH‹{L‰áH‰Þè1ÿÿÿöƒ¸u‰H‹SHH…Ò„wÿÿÿ‹B$H‹r0%H‰t$=„_H‹B@‹ dHÓèHðH‰D$H‹»ˆH…ÿ…àîýÿH‹D$é,ÿÿÿH‹Cö@%€…#ÿÿÿH‹@@‹ ØcHÓèHD$H‹H…Û…Ïþÿÿéÿÿÿ€L‹{H‰Ý`AƒtfI‹GH;-ãZ¶u€ú.u€x…eîýÿƸ`¶€ú_…Rîýÿ€x_H�x„vH�5[è:ñüÿ…ÀuAÆ$L‹{ff.„f�H‹EHH…À„aH‹T$L‰ÿH‰ÌZL‰-ÍZH‰®ZH�T$H‰ªZÆhZè~³ÿÿé:þÿÿf„öƒ¸…ö@$„ùH‹P0H‰f`Æÿ_H‰T$é]þÿÿD‹ ²bH‹CHÓèHD$éâýÿÿH‹T$H‹=¥bL‰áH‰îèjýÿÿH‰D$éÁýÿÿH‹ù7H‹{H�L$L‰îH�� èѾ€=êY„_íýÿH‹ÅYH‹ÎYH‰C H…ÒtHB0H‰C ‹C-ƒø‡^íýÿ‹ b‰ÂH�5#¸‹–Óà9ÐBÂÓèHD$é;ýÿÿf.„HƒÇ€?_…}þÿÿëñ�H‹P0H‰T$érýÿÿH‹K7Hé�þÿÿ¶Ù[ƒà<…¤ýÿÿéEìýÿf„SHƒìH‹ZH…Ût?ff.„@H‹{0H…ÿ„Píýÿ¾èéõüÿ„À…KíýÿH‰ßèH‹[HH…ÛuÐHƒÄ[Ãf.„öG`…ßH‹G0H‹€�H…À„ËAWAVI‰ÆAUATUSHƒìHH‰|$ff.„�L‰4$I‹.»H�=í]ë(„Û„à¾u1ÒHƒÅ‰óè?ËÿÿH‰ÇH…À„ÃL‹gM…ätÒH‰l$M‰æˆ\$'H‰|$(M‹&M‹l$XM…í…qI‹|$HH‹t$èÙ„À…[M‹l$@M…턽H‹$L‰t$L‰ëM‰åL‹8L‹cM…ätoL‰ÿL‹s(èlêüÿH‰ÅM…ö„êL9ð‚L‰òL‰þL‰çèÙìüÿ…À…êH‹S0L‹S H…Ò…xI�DL9Є"M9Ö‚�íýÿL9Õr C€<…²H‹{H‹t$è+„À…œH‹=¬VH‹�VH‰úH)ÂHƒú'†åH‹~VHƒÀ(H9„*H‹5ŠVI‰ùHðH÷ÖH!ðH‹5OVI‰ÀI)ðI)ñM9Á‚DfHnÀflÀ)5VÇBHÇI‹E(H‰H‹$I‰U(H‰BH‹D$H‰ZH‰B H‹H…Û…ÊþÿÿL‹t$M‹vM…ö…pþÿÿ¶\$'H‹l$H‹|$(„Û…"þÿÿf�L‹4$M‹vM…ö…ïýÿÿHƒÄH[]A\A]A^A_ÃC€<4*„ìþÿÿétìýÿH�=‰U¾(è?"H‹�UH‹�UH‹=ŠUHƒÀ(H9Ð…üþÿÿé-ìýÿH9Õ‚XÿÿÿL‰×H‰îL‰T$8H)ÖH)×H‰T$0LþLçèëüÿH‹T$0L‹T$8…À…%ÿÿÿéGþÿÿÃH‹S0L‹S H…Òu±Iƒú„_ÿÿÿM…Ò„BþÿÿéÕëýÿfHnÇé·þÿÿL‰ïè°H‰ÆH…À…óëýÿH�5{7L‰ïè¤îüÿH…À…»ëýÿH‹D$H‹xH…ÿtL‰îèÅæüÿ…À„EýÿÿH‹D$H‹@0H…À„¥þÿÿH‹€ðH…À„•þÿÿéëýÿ¿(èlZÿÿ1ÒH‹ $Ç@H‰I‹T$(H‰I‰D$(H‰H1ÉH‰HH‹L$H‰H éQþÿÿéëýÿf�H‹ÙWSH‰òH‰þH�={WH‹@ÿ�@H…À…·ëýÿ[ÃfD€t¸ÃAVATUSH‰ûHƒì(H‹G(‹ �XL‹w0‹ƒùtJƒétKH‹=vWH‹hH‰ÚH�5WH‹Gÿ�0„À„aìýÿHƒ=fX…¥ëýÿHƒÄ(¸[]A\A^Ã;rìëµ9ræë¯ff.„�H…ÿu1ÀÃUH‰õSH‰ûHƒìH‹;H‰|$èï®H‹|$H…ÀH‰Æ…òíýÿH‹uè%½…À„×íýÿH‹E0H…ÀtH‹€ðH…À…«íýÿH‹[H…Ûu¯1ÀHƒÄ[]Ãf�SH‰ûH…ÿt)‹Cƒøt'‡�ƒøtƒø u H‹{èÖÿÿÿH‹H…Ûu×[Ã@H‹C H…Àté¶Sc„ÒuH‹H…ÀtÙ„Òu+H‹H…ÀtÍëö�H‹HH‹�I$ H…Àt·ëÜff.„H‹PH‹�J$ H…Àt—ëëƒøu�H‹=¬[èWÿÿÿé|ÿÿÿf�AUATUSHƒìH‹_ H…Ûu HƒÄ[]A\A]ÃH‰ýI‰õI‰ÔH‹K H‹SM‰àH‰ïH‹sAÿÕH‹H…ÛtÏëáf.„AWAVI‰öAUATUH‰ý¿ÿÿÿÿSH‰ÓHƒì8H‹U0D‹(è5äüÿH‹=~U1ÒH‰ÞèäìüÿH…À„ íýÿD‰ïI‰ÄI‰Ýè äüÿ‹E¨t!H‹=OUºH‰Þè²ìüÿI‰Å‹EM…íLD먅¥ìýÿH‰\$H‹}H…ÿ…ãM…ö…/L‹}M…ÿuAL9ã„gìýÿE1ÿL‰çèåðüÿI9Ý…üH9\$…ŸìýÿHƒÄ8L‰ø[]A\A]A^A_ÀI‹H…ÿt/€?*„A¶Gƒà8< „n<…81ÒL‰îè”åüÿ…ÀtDM‹?M…ÿ„{ÿÿÿI‹H…ÿtë€?*„¥A¶Gƒà8< „/<… 1ÒL‰îèPåüÿ…Àu¼L9ã…Fÿÿÿé¨ëýÿfDM…ö…uìýÿ‹E¨tH�t$L‰d$è‰íüÿI‰ÇH…À…~‹E¨…Ïëýÿ¨„ßþÿÿéìëýÿDL‰ïèØïüÿé÷þÿÿA¶V€â…›ìýÿM‹>é¿þÿÿ€„wÿÿÿA¶Gƒà8< …Qÿÿÿéjìýÿ€„XÿÿÿA¶Gƒà8< …îþÿÿé^ìýÿI‹L‰æèóæüÿ…À…rìýÿA¶Gƒà8<„ÿÿÿéIìýÿL‰æ1Òè\äüÿ…À…ÄþÿÿéÿÿÿL‰æ1ÒèEäüÿ…À…­þÿÿéìþÿÿé ëýÿéìýÿff.„ƒuH�G HÇG H‰G(Ãf„UH‰ýSRH‹³NH…Ûuë!@H‰ßÿÕH‹[PH…ÛtöCauìH‹[PH…ÛuñX[]ÀAWAVAUATI‰ôUH�-½SH‰ûHƒìH…ÿ„¸ƒ{‡¢‹CHcD…HèÿàD÷C`ÿÿ…mL‹k M…í…ÖHƒ=~ZulL‹k@M…ítcI‹}H…ÿ„ãðýÿH�5/Pèªåüÿ…À„PM‹mM…ít9L�5PI‹}H…ÿ„UðýÿL‰öè}åüÿ…À„#M‹mM…íuÚff.„�H‹H…Û…HÿÿÿHƒÄ[]A\A]A^A_ÃD‹ƒ¤��}þÿÿƒú† …ÀxÇH‹{H‰ÞèëþÿÿH‹H…Û…ÿÿÿHƒÄ[]A\A]A^A_ÃM‹uL‰æL‰÷è�„À…£H‹KPH‹S@H�{M‰àL‰öè‚M‹mM…í„ïþÿÿL�{M‹uL‰æL‰÷èB„ÀuH‹KPH‹S@M‰àL‰öL‰ÿèHM‹mM…턵þÿÿëÈf„M…äu)H‹{èH‹H…Û…Zþÿÿé ÿÿÿ�M…ä„÷þÿÿé–îýÿIƒ|$HuÏA‹„$¬ƒø„“1öƒø@”ÆÁæL‰çèŠ먀‹¸H‹{H‰Þèm ¶ƒ¸‹“¤Àèƒà�úƒ”Á8Ètǃ¤ÿÿÿÿé~þÿÿ…Ò‰¯þÿÿéqþÿÿH‹{L‰æè•ýÿÿé`þÿÿH‹=éUL‰æè�ýÿÿéLþÿÿM…䄺îýÿH‹{è*A‹„$¬ƒèƒø‡ÂH�cHc‚HÐÿàH�5?ÁL‰âH‰ßèôùÿÿH‹s0H…ö„�ýÿÿé±íýÿL‰%ûWéæýÿÿM‹mM…í„cýÿÿéoþÿÿA¾ I‹¼$°D‹oAƒý…„�?u|L‹H�5ÌML‰ÿèýâüÿ…Àt]H�5ÆML‰ÿèêâüÿ…À…1ìýÿI‹D$HH…À„ ìýÿD p$D‰¨édýÿÿE1íA¾ë×A¾ëƒE1íA¾ëľéoþÿÿA½ë²L‰æè<›€=5L„€ìýÿD‹-Lë”fDƒ‡ìUH�VSH‰ûHƒì‹GHc‚HÐÿàf.„‹-Iƒø†zíýÿHƒÄ[]Ãf„H‹_ ƒ{wæ‹CH�(Hc‚HÐÿàH‹_ƒ{wÉ‹CH�/Hc‚HÐÿàfDH‹ègÿÿÿH‹[ ƒ{w�‹CH�'Hc‚HÐÿàH‹[ H�-7ƒ{‡uÿÿÿ‹CHcD…HèÿàH‹{èÿÿÿH‹[ ëÚH‹{èÿÿÿH‹[ ëÄÃH‹èÿÿÿH‹{ è÷þÿÿH‹[(é_ÿÿÿH‹[ë©H‹[ëœH‹{èÙþÿÿH‹{ èÐþÿÿH‹[(ë‹H‹{èÁþÿÿH‹{ è¸þÿÿH‹[(éiÿÿÿff.„@H‹iVSH‰ûH…ÀulHƒ{tCH‹{0H…ÿt:Hƒ=HVuaH‹GVH‹{H‹pèÒÛüÿ…Àt1öC`…XìýÿH‹{0è‹ÝüÿH…Àu[ÃH‹VH‰ÇH‹rè¡Ûüÿ…ÀuçH‰öU[ÃH‹x0è{Ýüÿ¨u‡[ÃèpÝüÿ¨t–[Ãf.„USH‰ûHƒìö¡LtH‹-§GH…íuc1ÀHƒÄ[]Ãf„H‹¿àH…ÿ„GðýÿH‹GH‰õH‰Þÿ�„ÀuH‹-eGH…ít¾é2ðýÿH…ít¶H‹}@H�5XKèößüÿ…À•ÀëŸéðýÿf.„Hƒ=8U…ëATI‰üUSH�ì�H‹0H…ÿ„¶è¢Üüÿ¨…©I‹|$0H‰æè­Úüÿ…À…0ñýÿH‹®SH9$uH‹D$H9¤S„�H‹×T¾/H‹XH‰ßèþÛüÿH…ÀuXH�5×JH‰ßèzçüÿH…ÀtDI‹|$0H�hèÜüÿH‰ÃH…Àu I‹|$è¥ÞüÿH‰ÃH‹ƒTH‰êH‰ßH‹pH)òèyÜüÿ…À„ÆðýÿH�Ä�[]A\ÃH…À„vÿÿÿévðýÿÃfDH‹ yKH…É„|H‹Aƒxuf‹�¨…Àt\H‹� H…À„«ðýÿö@`uFH‹��H…Àt:ff.„ff.„@H‹�ÐH‹’�H…Ò…}ðýÿH‹@H…ÀuàH‹‰H…Éu„ÃAWAVI‰ÎAUI‰ÕATI‰üUL‰ÅSH‰óH‰ßHƒìH‹¹JD‹~$L‰ÆH‰D$舄À…M…ö…—ñýÿD‰ø÷Щ„b¶0Jƒà<„…‹…¬A�çûýñÿE‰þƒø„…ƒøwƒøuéãðýÿDƒèƒø†3ñýÿH‹MHH…ÉuD‰öH‰ïè8H‹MHD‰ðƒÈ÷#A$öA(…‰€I(H‹JD ðH‰Þ‰A$H‹»àL�ŸIH‹Bÿ�HA÷Æ€…FA�æ…SH‹ÄIH‹mHH‹@ƒxu;L‹3ºH�5¡HL‰÷è�Öüÿ…À„$ºH�5ŒHL‰÷èsÖüÿ…À„=‹C|9E|‚w€=ÙNH‰k`…ÑïýÿH‹…øH‰�øHǃðH‰ƒøH…À…íH‹5žEH‹�EH‰�ðH‰òH)ÂHƒú†íH‹iEHƒÀ H9ЄºïýÿH‹=uEI‰ðH‰ùHøH÷ÑH!ÈH‹ 7EH‰ÇI)ÈH)ÏI9ø‚MfHnÀflÀ)EÇBHÇI‹D$H‰I‰T$H‰ZL‰jHƒÄ[]A\A]A^A_ÃD‰ò‰Æƒâ÷1Ö�怅¤A÷Æ€…» ÐA�æ‰A$„ˆþÿÿécîýÿfDH‹5±DH‰˜ðH‹›DH‰òH)ÂHƒú‡ÿÿÿ¾ H�=gDè"H‹sDH‹5tDéïþÿÿ€‰E|é�þÿÿ‹…¬A�çÿýÿÿE‰þƒø…{ýÿÿAƒæþé’ýÿÿA�æ÷ÿþ%ÿÿþD ð‰A$A�æ„äýÿÿé¿íýÿ‹»´9¹´uÎ ÐA‰Ö‰A$ëÖ‹“´H‹EH‰�´ëÄH‰ðé«þÿÿéˆíýÿH‹}H�5pFèÓÚüÿ…À…­íýÿA¶F„Àt<.…Ïýÿÿ�K$éÃýÿÿH‹}H�5GFèžÚüÿ…ÀtÏéªýÿÿéPîýÿAWAVAUATUSHƒìL‹%EM…ä„8L�5ëDff.„I‹D$0H‹˜�H…Ûuéf.„H‹[H…Û„ëHƒ{`uìAöD$`…]ïýÿ‹S$¶ WF‰ÐÁèƒà÷Â…3ƒá@…€=ŒG…„À…ôH‹+L‰öH‰ïèÖÙüÿ…À„Oïýÿ‹PGƒø„îýÿƒø„¾íýÿ€=EG…êöãEtuL‹-é@M…í…óH‹©DH‹€�H…À„îýÿE1íD‰êH‰îH‰ßÿÐI‰ÀH…À„÷íýÿƒ=àF…ÿÿÿé&îýÿDM‹d$HM…ä…ÚþÿÿHƒÄ[]A\A]A^A_ÃH‹»àH…ÿtH‹GH‰Þÿ�„ÀuOL‹-W@M…í„nÿÿÿéTîýÿöÆ „÷þÿÿH‹‰ H H‰C`éšþÿÿ€â…åþÿÿë߉Î@Àîƒæ ðé½þÿÿH‹ØCA½…H‹€�H…À…,ÿÿÿé5íýÿéóíýÿ„ATI‰ôUSH‰ûHƒì‹G$‰ÂÁê‰Õ¶²Dƒå©…èƒâ@u{€=ñEu0I‹|$@H�5¦CèDØüÿL‹C`…Àt@„íuM…ÀuZ1íHƒÄ‰è[]A\èuÌ�H‹C`H…À„…H‹¬H� H9Ðt öBD…ÝíýÿHƒÄ½‰è[]A\ÃöÄ „|ÿÿÿ븶-DH‹j÷ÕH @ÀíI9À”À@ÅuÀM‹d$HM9Ät¶öëC„lÿÿÿM…ä„cÿÿÿé©íýÿH‹'H H‰C`눉ÑÀéƒá Íé ÿÿÿff.„�AUL�-´BATU‰õL‰îSH‰ûHƒìL‹g@L‰çè;×üÿ…À„ííýÿ€»¸yqH‹CHH…À…´íýÿH‹s@H‹=¢C‰êèûÑüÿH‰CHH…À„\íýÿH‹{hH‰@`HÇ@XH‰˜˜H…ÿu"H‹{pH…ÿ…ØíýÿH‹{xH…ÿuHƒÄ[]A\A]Ã�èKôÿÿë×éŸíýÿéÄíýÿff.„@H…ÿtlAUATUH‰õSH‰ûR‹CƒøuXL‹c M…äuö…¸tH‹H…ÛuÞX[]A\A]Ã@M‹l$H‰îL‰ïèàõÿÿ„ÀuIƒ}`u AöE$„líýÿM‹$$M…ät´ëÏÃø„cíýÿƒøu¬ézíýÿff.„AWAVAUATI‰üU‰ÕSH‰óHƒìHH‹—àH‹=|BH‹BD‹pH‹GD‹xAƒþ…ö BI‹Œ$ЃàD‹i<„¼öòA„fA‹t$$@öÆ„ Aƒý„gAƒý „%ÇD$AƒÿuH‹‚ö€� …¿…íu1Ò1öH‰ßèâDÿÿH…À…6€=BG„´¶uA¨…I‹<$º H�5Aè˜Îüÿ…À„éîýÿE‹L$$I‹¼$àL‰æD‰L$èöÖüÿD‹L$H…ÀI‰Ç…�A÷Á „�AöÁ„áE‰ÏAƒç„vAƒþ…—íýÿAƒý„A÷Á@…ìýÿA÷Á…xAöÁ„€Aƒý„LîýÿAƒý „BîýÿAöÁ„H‹ ÔFL�½FH…É„_Hƒì‰êE1ÉH‰ÞjL‰çèþZYHƒÄH[]A\A]A^A_ÃDƒàE‹L$$<„3ÿÿÿéÿÿÿH‰\$1íH‰ÃH‹sHH…ö„ H‹•H H9Æ„ ‹F$…ÀteA3D$$¨…ýAƒþuRAƒÿuLI‹Œ$ÐH‹–ЋA,9B,…Ö¶ä?ƒà<„pëýÿI‹”$àH‹=@L‰áè"Üüÿ„À„žH�{I‰Ø1É1ÒL‰æH‰\$èõÿÿH‹D$éÿÿÿHƒx`„:L‰þE‰ÏH‹¾àè;ÕüÿH‰ÆH…À…LE‰ùéBþÿÿÇD$H�È>Aƒÿ„˜ýÿÿé§ýÿÿL�òEI‹HH…É…¡þÿÿI‹H…É„HH‰Ï1Ò1öL‰D$D‰L$ècBÿÿD‹L$L‹D$H‰ÁI‰HH…É…eþÿÿI�PD‰ÎL‰çL‰D$H‹ kè¾­L‹D$H…ÀH‰Á…9þÿÿéŽêýÿL� Á*H‰\$L�=ÕDL‰Ë¹ L‰ÿH‰Þó¥I‹?H…ÿt%1Ò1öèäAÿÿI‰GH…Àtƒ¸¨u A‹W‰�¨IƒÇ0H�=FHƒÃ0I9Çu²ÆDH‹\$é×üÿÿ‹@$D‰Ê1Â%€ƒâ Â…®þÿÿI‹¿àöGD@…�þÿÿH‹‡ H…Àt ö@`…‡þÿÿI‹”$àL‰áL‰þD‰L$è\ÚüÿD‹L$„À„bþÿÿA‹G$AƒñL‰þƒðA ÁAƒñE‰ÏéKþÿÿH‹= E1Ò1öD‰L$è AÿÿD‹L$L�ñDH…À…fþÿÿéîêýÿL�ìCéUþÿÿL�0EéIþÿÿL�dDA÷Á„5þÿÿA÷Á@…§èýÿA÷Á…AöÁ„ þÿÿE…ÿ„ÒéýÿAƒþ„wüÿÿé¢éýÿE1í1À‰D$é‹ûÿÿE1À1Éé�üÿÿHƒ~`…‘ýÿÿ‹F$‰Â%€D1úƒâ Â…yýÿÿH‹¾àöGD@…hýÿÿH‹‡ H…Àt ö@`…RýÿÿI‹”$àL‰áH‰t$è$ÙüÿH‹t$„À„0ýÿÿ‹F$Aƒ÷ƒðD øƒðA‰ÇéýÿÿÇD$H� <Aƒÿ„ÐúÿÿéßúÿÿAƒÿ…?ÿÿÿA‹t$$E1ÀD‰D$@öÆ…ªúÿÿé¹úÿÿL�ÔBé ýÿÿ¶H<ƒà<„†çýÿö;<„õþÿÿE‹l$$Aƒå…rçýÿéäþÿÿHƒ{Ht/H‰ßèݳH‰ÃH…À…¸ûÿÿI‰èH‹\$½…M…À„búÿÿé^çýÿH‰ÝëÌAƒþ…èýÿAƒý”D$>1ö1À1ÿL‰d$(‰l$8E1ÿI‰ÅI‰ÌH‰|$L‹5ª7H‰õD‰L$L‰D$ H‰\$0ëDAƒ¾¤xI‹^@H�55;H‰ßèÙdÿÿ„Àu-I‹FHH…Àt‹@$¨t ¨tL‰t$M‰÷M‰ôM‹v0M…öu·éçýÿ€{a”Áƒ|$…çýÿ¶ÁH�=ù:ˆL$?H�tèÞÎüÿ…À„èæýÿ¶L$?8L$>”ÁM…ít„ÉtM‰õI‹FHH…ít„É„xÿÿÿH…Àt�é;çýÿöA „7ùÿÿH‹Ò6ëff.„DH‹@0H…À„yçýÿH‹PHH…ÒtêL‹I�À L9Ât×L‹‚ÐAö@ tÉé�çýÿ@AWAVA‰ÖAUI‰ýATI‰ÌUL‰ÅSH‰óL‰ÎHƒìXH…É„ÚH‹0&H�T$@H� ´=HÇD$@H‰T$HH9ȃìýÿH�HH‰ &H‹ ó$H‰¶:H‰â$ƒà<„/AöE$„óHƒìE1ÉE1À1Éj1ÒH‰ßL‹=â5AVjè!ˆÿÿHƒÄ Hƒ¼$�I‰Æ…¨ëýÿ1É1ÒH�xI‰ÀL‰îèïÿÿM…䄇AöE$„mI‹D$PH…À„,ìýÿI‹L$XH‹0H…É…çI‹”$�1ÿè¬ÿÿH‹?%H�x<H9ƒaëýÿH�PøI‹^HH‹@øH‰%H‰ $H…Û„BH‹EHƒ} A”ÀH…À„æH‹H‹ \9H…Ò„ìéýÿH‹Aƒxu3I‹…àH‹@ƒxu"I‹…Ѓx„æH‹‚Ѓx„3H9ÚtQH‹BH9ØtHH‹sH‹{H…ö„jëýÿH‰~H…ÿ…fHnÂfHnÈH‰±˜flÁCH‰ZH…À„nëýÿH‰XHƒÃHƒ|$@H‰]tvE„À…âH‹M H‹T$HH‹H‰H‹D$@H‰H‹ #H‹qH;„îH‰U H‹U(I‹IÇH�JÐH‰H8H‹ H‰H0H…ÉtH‰A8H‰HƒÀ0Iƒ?H‰E(uL‰=ò3HƒÄXL‰ð[]A\A]A^A_Ä1ÿèiaÿÿHƒìE1ÉE1Àj1É1ÒH‰ÆAVH‰ßL‹=²3jèó…ÿÿHƒÄ Hƒ¼$�I‰Æ…I�~M‰ð1É1ÒL‰îèêìÿÿéÖýÿÿL‰çIƒÄ0èÉ­H‹T$HH‹H‰ H‹ /"H‹t$@H‰0H‹AL‰e(H;0…ÿÿÿH‰QH‹T$HéÿÿÿL9%)3„æI‹D$HH…À„ºHƒ¸à„ÊH9Ø„ÁHƒÀH‰EéÛýÿÿAöE$„Dèýÿ¶ã61ÿH‰T$E1ÉH‰=–BL‹‘�1ÿƒàH‰úˆD$6H‹L�˜ M…Ò•ÀM9Ú@•Æ@ ð„™I9Út I‹‚Ѓxt M…Éu6M‹RëÍAöB$tî€|$6„øæýÿM…Éu L‰$BM‰ÑA‹E|A9B|rÏéèýÿH‰×1ÀH…Ò…—I‹T$0„À…[L‰çH…Òu ëDH‰òL9JHtAH‹r0H‰×H…öuëL‰ç„À…væýÿH‹W0L9JHt H‹8H…ÿuåL‰ç„Àt¾I9YuéPèýÿA¸I9Y„@èýÿ1öH‹CH‹SH…À„!èýÿH‰PH…Ò…(èýÿH‰�˜M…É„Þçýÿ@„ö…­çýÿI‹AfInÁfHnÐflÂCI‰YH…À…�çýÿH‰™�I‰üéëüÿÿI‹|$8DˆD$6茯D¶D$6H…À…(þÿÿH‹†5H�H‰Eéüÿÿ1É1ÒH�5¢,1ÿèµ§ÿÿè xI‹^HH…Û…×ûÿÿéýÿÿH‰×H‹T$H…ÿ…ûM…É…¨þÿÿH9Ú„küÿÿH9Z„aüÿÿH‹CH‹sH…À„îåýÿH‰pH…ö…ÿåýÿH‰�˜H‹BfHnÂfHnØflÃCH‰ZH…À…ÌåýÿH‰™�é üÿÿ¶v4ƒà<…lúÿÿ1ÿè^ÿÿE1ÉE1À1ÉH‰ÆP1ÒH‰ßjL‹=R0AVjè‘‚ÿÿHƒÄ Hƒ¼$�I‰Æ…“I�~M‰ð1É1ÒL‰îèˆéÿÿ1É1ÒH�5“+1ÿ覦ÿÿéüÿÿ1ÿèš]ÿÿH‰ÆéþùÿÿM…É„ÿÿÿH…ÿu?E1ÉL‰ç¾éþÿÿL‰çëff.„@H…Ò„?äýÿH‰×H‹R0L9OHuêé…åýÿI‰ù¸é\ýÿÿé€åýÿéýäýÿéDæýÿéqåýÿéRæýÿff.„@AWAVL�5e3AUATUSH‰ûHƒìHH‹y3H‰t$(ƒx@…ØçýÿH‹=‹3L‰öècÂüÿ¶,3ƒà<t&H‹=F31É1ÒA¸H�5&.èÆüÿH…À…w1ÿE1ÿ1íH‰<$H‰|$H‹5(2H�=áèì³ÿÿL‹�2M…ÒuH�=ë/è´¾üÿI‰ÂL‹%3M…ätH�–2ff.„�AöD$`uI‹|$0H‰Þè[ÄüÿI‰ÅH…À…ÀåýÿM‹d$HM…äuÕèªH‹=)2L‰öè1Ëüÿ„À„²æýÿH…í…—æýÿHƒÄH[]A\A]A^A_ÃH‹=b1H…ÿ„rÿÿÿH‰» è•ÁüÿHƒÀH‰C@éYÿÿÿD¶xA€ÿ†$æýÿA€ÿ„æýÿékþÿÿf.„H…ÿu¸ÿÿÿÿÃUH‰ÕSH‰ûQè·}€=°.„'çýÿH‹ ‹.HƒùÿuƒÈÿZ[]Ã1ÀºH9ÊsðH…Ò…3çýÿëåff.„@ƒt Ãf„H‹é÷ €AWAVAUATUSHƒìxH‹+ H‹H‰L$XH�L$XH fHnÁH‰T$fHnØDˆL$H‰L$0flÃH…Û„/H‰t$I‰ôE1ÛE1ÿL�-•ø)D$ I‰úL‰Åƒ{‡…êýÿ‹CIcD…LèÿàH…í…“ I‹€=M0L‹D$XM‹L$HL‹pH�80H‰D$ˆ¶ A·F(f%€f=„êýÿAöF%€…Aö„$¸…pI‹¼$€H…ÿ…�éýÿA‹N|A9I|‚� ¸HÓàI�TÿH÷ØH!ÐH‰ÂL)Â…Š‹ ”5I‹V@H‹D$HÓêL€8ˆW I‹q0I)ðM‰FXAöA%u H‰ÐH)ðHÓàI‰A@H‰T$XI‰ßI‰ÚE1ÛI‹H…Û…ñþÿÿH‹D$XHƒÄx[]A\A]A^A_ÀH‹{HH‰\$è:³ÿÿƒ»¤ÿt¹H‹{hH…ÿ…4¶/ƒà<„$ H‹CHH‰ÂH…ÀtŽH‹ O/H‹I‹Iƒéƒù†‹êýÿH‹5E L‹|$XH�Ž H9È„ÙHƒ{h…UL‹sPD‹x$M…ö„6êýÿAöÇt~I‹>€?*uvH�5%&H‰T$èUÂüÿH‹T$…Àu\D‰øƒàƒø„L‹5&-M…ö„]D‰øA#FH…: M‹vM…ö„CD‰øA#FHtêD‰øA#FL…ÔçýÿL‰sPf„öƒ¸ux‹B$¨tq%=te¶ .ƒà<tW€|$tPI‹>H�5{%H‰T$è«ÁüÿH‹T$…Àu3L‹=‹,M…ÿt'I‹?H�5R%è‡ÁüÿH‹T$…À…íçýÿIƒ…âçýÿM‹~8D‹r|E…ö�NH‹CHfInÏHÇD$flÉ€H(HÇ@XH0H‹S`D¶L$L‰ùH‰ÞH�{I‰èè|üÿÿ¶“¸H‹=®H‹sHƒÊH�� ˆ“¸H‹F@H9΄…ƒâ…|H‹~0D‹ƒ ‹ ó2J�TÿI÷ØH‰|$XHÓèHÐL!ÀöF%…TH)øL‹{PHÓàH‰F@M…ÿ„JH‹KpH…É…¿çýÿH‹CXH…À…ŒH‹CHI‹W@‹p$‰ñƒáH…Ò„É…É„ñL‹BHL‹L$XI‹x0I‹P8I9ù‚)ƒ»¬„+ HP0H)úE…ö�’H‰P8€‹¸‰ò�â�ú„Hƒx@„ØHƒ{X…™¶.,ƒâ€ú„†H‹={I‰_@H�— H9Є�üÿÿöƒ¸…‚üÿÿ�æ�þ„§L‹p@‹ ¾1IÓîH‹»ˆLt$XH…ÿ…ÚçýÿH‹sPH…ö„AüÿÿH‹CHö@$„3üÿÿH‹T$X€|$H‰V8„×H‹H0H‹ShH‰ßèGH‹sXH…ö„üÿÿH;sP„øûÿÿH‹CHö@$„áH‹H8I΀|$L‰v8…oäýÿéÏûÿÿ€D¶L$H�{I‰èL‰æH‹L$XH‹T$èAúÿÿH‰D$XéŸûÿÿ€1öH�=�"è"xÿÿH‹SHH‰CPI‰ÆéÂüÿÿf�H‹D$Xfod$ Æ#(H‰g(H‰H()%I(è$�ÿÿ€=-(„0åýÿH‹(H‹(H‰D$XH…Ò„‰ûÿÿHB0H‰D$Xé{ûÿÿDL‰ÀI+A0L‰D$XI‰FXéûúÿÿH‹D$XI‹T$HƤ'H‰D$hL‹sH‰Ç'H�D$hH‰Ã'H‹D$L‰÷Ç (H‰º'H‰«'è~€ÿÿ‹ð'ƒø„uƒø„ŠÇÔ'A‹Fƒàýƒø…|I‹F€8.…_€x…UAö„$¸…NúÿÿL9%ç&…e1öH�=6!èËvÿÿH‰ÂH‹D$hH‰B8H‰D$XéúÿÿDHÇCI‹T$HH‹D$XH+B0H‰Céùùÿÿ�H‹{xH�ù)H‰Þèý÷ÿÿA‰Æ…ÀŽ´ûÿÿf�A¸D‰ñIÓàK�D8ÿI÷ØI!ÀL‰ÀL)øƒ=ð4H‰D$„H‹CH~HÇÂÿÿÿÿM‰ÇL+x0HÓâH÷ÒL…ú…0fInÈ€H(M‰ÇflÉHÇ@XH0éeûÿÿDD‰ñ¿HÓçH‰ùH�TÿH÷ÙH!ÊéPüÿÿf.„€‹¸ƒ»¬„güÿÿH‹=õH�— H9Ð…~üÿÿéùÿÿA€Œ$¸€Aö„$¸…éøÿÿL;%‚%„›þÿÿH‹D$hL‹D$XL9À…L‰D$XI‰ßé¿øÿÿ@‹ .H‹t$L‰×Dˆ\$PH‰D$HHÓâL‰ÉL‰L$@L‰T$8賋 Ý-I‹V@H‹D$HH‹t$HÓêL‹T$8L‹L$@H€>D¶\$Pˆ¼I‰Àé,øÿÿ„H‹sXH…ö„;øÿÿé4üÿÿfDH…À…ÎÞýÿL‹{PM…ÿ…¶úÿÿ1öH�=è¤tÿÿI‰Çé úÿÿ@AƒÏ éòøÿÿ€I‹W@H…Ò„®H‹RHH‹z0H9|$Xƒûÿÿƒ»¬…ŸþÿÿéöúÿÿL‹@8öƒ¸@…ÊÝýÿH;CPt H‹{xH�¨'H‰ÞL‰D$è§õÿÿL‹D$A‰ÆE…ö�ràýÿH‹CH‹p$L‰@8‰ñƒáfD€‹¸…É…rúÿÿë‡D¶L$I‰èL‰æI‰ßH‹L$XH‹T$H�=Ÿ,èÊõÿÿH‰D$Xé+÷ÿÿI‹T$HH‹D$XH‹{H‹L$0H+B0H‹t$H‰C0I‹D$HH‰C(H‹ÐH�� è´ˆ‹C��åþÿÿƒú‡—Ýýÿ‹ ,,H�5í¸‹–Óà9ÐBÂI‹T$HÓèHD$XH‰D$XöB%…£öÿÿH+B0HÓàH‰B@é“öÿÿHƒ|$u-H‹CHéùüÿÿH‹PHƒ¸P…?Ýýÿ1ÒE1öH‰T$é[øÿÿL‹|$€='…RÞýÿHƒ{h…GÞýÿH‹CHé¯üÿÿH‹x8H9x0„WþÿÿéZùÿÿH‹s#H…À„¶H9Ä{ûÿÿéNÞýÿH‹]#H…À„¤H9Ä]ûÿÿéíÛýÿL‹X@M…Û…・¬…Êøÿÿé&Üýÿ‹ +L)ÀH‹t$H‰ßHÓàI‹L$HH‰ÂèÎA‹„$¬H‹ƒø„|Þýÿƒø„ÞýÿI‹D$HL‹D$hƒH$é­üÿÿH‹7%H‹@ƒx…Çõÿÿé¼ÝýÿH‰­"éÂúÿÿH‰©"é¶úÿÿH‹sL‰T$8H�L$hH�§$Dˆ\$H‹¾àH‹Gÿ�¸D¶\$L‹T$8„À„¹Ýýÿ€|$h„$ôÿÿé Ýýÿ‹ H*IÓëL‰ÙLÉH9Ï‚ÿÿÿH9×…ÿÚýÿ€‹¸éâ÷ÿÿ¶:$E1öƒâ€ú…PøÿÿéÜÞýÿD‰øA#FL„ÜõÿÿéÛýÿI‹t$PH…ö„ÜýÿóoN foÑfsÚfÔÊfH~ÎfÖL$@H9ÖƒíÛýÿAöF&…šÛýÿI‹FHH…À…;Ûýÿ1ÀI‰F`H‹D$@H‰D$XH‹D$€8‰2ôÿÿH‹M…ÿtE„Ûu I‰M‰úé#ôÿÿI‰I‰ßA»éôÿÿöƒ¸@„üóÿÿé øÿÿI‹†H…À„:óÿÿL9È„1óÿÿL‰D$Xë¥é1ÚýÿéÛÞýÿé¢ßýÿAVI‰ùSHƒìH‹^8H‹F H‹~(H9ÃrI‰ØI)ÀL9ÇrHƒÄ[A^ÃHøH9ØuH…ÉuëH…Ò…áýÿ€~PuÜéQáýÿ�AVUH�-BëSH‰ûƒ{wL‹CHcD…Hèÿà€H‹S¹€:.t=D¶C(H‹=þ"H�5§"èò¯üÿ„Àu7éÀãýÿf„[]A^ÃH‹S1É€:.uÀztë»DH‹{èwÿÿÿH‹[ é|ÿÿÿfDH‹[émÿÿÿH‹{èVÿÿÿH‹{ èMÿÿÿH‹[(éRÿÿÿ@AUL�-ŸêATE1äUH‰õSH‰ûHƒìH…ÿt9‹Cƒèƒø w&IcD…Lèÿà@ƒ»¤ÿtH‹{H‰Þè³ÿÿÿA ÄH‹H…ÛuÇHƒÄD‰à[]A\A]Ãf.„H‹{H‰îëÏ€H‹KH‹A`H…ÀtÃH‹ì!H9�àu³‹@$öÄ€u«öÄ„òH‹½˜H…ÿ…‚¿踽üÿH‹KH‰…˜H‰ÇH‰XÇ@H¸@H‰H‹�àÇGH‹@ƒx…FÿÿÿöA&…<ÿÿÿH‹�ÐHƒ¸�…WâýÿH‹H…Û…êþÿÿéÿÿÿfD‹W;tk�r‰ÐHÁàHøH‰X‰PH‹�à‰wH‹@ƒxtœéÝþÿÿH‹{H‰îè�þÿÿA ÄéÉþÿÿH‹=’&H‰îèjþÿÿA Äé²þÿÿf�÷Щ…£þÿÿé×áýÿÒ‰�rÿHƒÆHÁæè:±üÿH‹K‹PH‰…˜H‰Ç�rékÿÿÿ�ATI‰ÌUH‰ýSH‰ÓHƒìH…ÿtZH�sH9ÇtNƒ uHH9O uBH‹Q0L‰ÀH‰_H)ÐH‰GöA%u‹ ä%HÓëLÃH)ÓHÓãI‰\$@HƒÄ[]A\Ãf.„H‹EH…Àtƒx tj¿0L‰D$H‰4$è^"ÿÿH‹4$H‹UL‹D$H…öH‰H‰EÇ@ L‰` …áýÿH�=?+H‰x(I‹T$0L‰ÁH‰XH)ÑH‰HAöD$%„bÿÿÿétÿÿÿL9` tÖëŽff.„@H…ÿt[UH‰õSH‰ûHƒìH9 t‹Cƒø u€}t*H‹H…ÛuáHƒÄ[]Ãv2ƒøu#H‰êH�5(H‰ßèPÉÿÿëÖH‹{H‰îè¢ÿÿÿëÈÃøuÂé\àýÿƒøu¸épàýÿff.„SH‹ÈH…Ût#H‹»˜èôºüÿHǃ˜H‹[0H…Ûuà¶™ƒà<tH‹=ÛH�5„[鮹üÿ[Ãff.„�ATUD‰ÅSE„ÀuUH‰ÐH…ÒtMH‰ËH…ÉtE¶¦„Ò…hæýÿH‹81Ò1öè‰!ÿÿH‹;1Ò1öI‰Äèz!ÿÿM…ätH…ÀtH‹@PI9D$P•À[]A\Éèë÷ff.„AVAUATUSH‰ûHƒì‹Gƒø„õv#ƒø „ªƒø „}HƒÄ[]A\A]A^Ã@ƒøuêL‹o(H‹I9…à… èýÿA‹E$öÄ„èýÿH‹=ßL‰îèg¸üÿI‰ÄH…À„ÄçýÿH‹C0H‹=À¾AÇD$I‰D$è8­üÿI‰D$(H…À„qçýÿH‹“H‹k H‹@ƒx ‡ÚçýÿH‹zI9…à…°çýÿ‹C=…PI‹D$(@ˆ(¸I‰D$A‰D$ é"ÿÿÿH‹_·C(f%€f=„ ÿÿÿöC%€…ÿþÿÿL‹c`H‹I9„$à…·åýÿA‹D$$öÄtmH‹=öL‰æè~·üÿH‰ÅH…À„åýÿ‹C$%"=„&ÇEH‰] L9c`…ŽåýÿóoCPóoK@fÆÁEHƒÄ[]A\A]A^Ãf.„÷Щ…bþÿÿë„�H‹o H‹uH9…à…æýÿ‹E$öÄtBH‹=YH‰îèá¶üÿH‰ÅH…À„úåýÿóoCÇEEH‹C(H�PH‹H‰U(‰E éýýÿÿ÷Щ…ðýÿÿ믇 äýÿ=u H‹ûI‹t$(H‰ïH‹@ÿPP¸é�þÿÿ=„gäýÿ-ƒø‡àãýÿH‹ÂI‹t$(H‰ïH‹@ÿP8¸éWþÿÿéäýÿé†äýÿff.„@AWAVAUATUSHƒì8H‹={è·üÿº�HÿH‹gHÓâH‹˜�H�lÿH…ÛtRöC$t9H‹S0H‹C@H� H!é„ÀæýÿH!êH9Ñ‚6èýÿH‹S8HÐH!èt H!êH9ЂöçýÿH‹[H…Ûu¸H‹‹€¨ƒø† ‰Ç1íHÁçèå¶üÿI‰ÇH‹ÛH‹€�H…À„šçýÿff.„‹P$öÂt*�â�útHƒx@tH‰êHƒÅHÁâLúH‰ÆBH‹@H…ÀuÅHƒý†JçýÿH� ´H‰îL‰ÿM‰üºE1íE1öè+¨üÿE1ÉE1ÛM‰úL‰L$L‰\$ë fDI‰ÆI‹L‰$H‰ßèÞ�ÿÿöC$L‹$tB‹ ®H‹C@L‹[8HÓèHƒ|$I�LÿtM9݃GæýÿH‹D$I9Å‚9æýÿL‰\$I‰ÍH‰\$I�FIƒÂH9Åu•H� nºH‰îL‰ÿ莧üÿI‹H‹X0¸ë#ff.„ff.„f.„H‰ÐH‰ÁH‰ÚHÁáI‹ H‹Y0H9Ót|H�PI9ÆuÝ1À1íf„H‰,$I‹,$H‰D$H‰ïèûœÿÿH‹E@H‹$I‰Ù‹ ÊH‹]0M‰ëL‹T$HÓèH…ÒL�lÿtA€|$uI9ÛƒõäýÿM9Ë‚ìäýÿI�BIƒÄM9ÖušL‰ÿèâ´üÿH‹KH…ÛuHƒÄ8[]A\A]A^A_À{P…mäýÿH‹[ëÜ€H‹H‹H‹q8H‹z8H9þƒ²çýÿ¸ÿÿÿÿÃUSRH‹/H…ít%H‰ûf�H‹EH‹}H‰èp´üÿH‰ïèh´üÿH‹+H…íuàX[]Ãff.„�H‹H‹H‹q0H‹z0H9þƒrçýÿ¸ÿÿÿÿÃUSQH‹FóH�¨ H9ot>H‹wH‰ûH‹=ó1É1ÒA¸輪üÿH…Àt€xuH9h(uH‹SH‹J0H)H0H‰P(Z¸[]Ãf�H‹iH‹ ŠH‰òH‹€øH…À„¹ìýÿ‰þH‰Ïÿà„H…ÿuÃSH‰ûHƒì0H…ÒtZ1ÀfnBfnÖfnH‰$H‹BH‰æfbÐÇD$H‰D$¶BfoƒàfnÈfbËflÁD$è¯üÿ…Àˆ™õýÿHƒÄ0[Ãè¯üÿ…Àyñé¼õýÿDH‹B`H…Àt4H‹ H9ˆàu$ö@%€u‹B$¨t%=t Hƒz@tAÆÃf�1íI‰Ñ^H‰âHƒäðPTE1À1ÉH�=ÿñôf.„@H�=iH�bH9øtH‹^ñH…Àt ÿà€Ã€H�=9H�52H)þH‰ðHÁî?HÁøHÆHÑþtH‹�ñH…ÀtÿàfDÀóú€=õu+UHƒ=jñH‰åt H‹=æùè1²üÿèdÿÿÿÆÍ]ÃÀóúéwÿÿÿf.„f.„f.„f.„f.„DAWI‰÷AVA‰þAUATUSH�b H�ìH‰<$H‰t$XèuÞH�50"¿H‰D$xèo¬üÿ1ÿH�5"èa¬üÿH�5ÿðH‰ßè¤üÿH‰ßè*¤üÿI‹?H‰=ØèÛ¦üÿAƒîL‹|$XŽ.1ÀÇD$pÐA¼‰D$„McìJ�íH‰D$K‹ï€8@…ëƒl$p„5H�XH�´$°H‰ßèô¨üÿ…ÀˆÄ‹„$È%ð=@„'H�5—ÿH‰ß趬üÿH‰D$I‰ÆH…À„�1öºH‰Çè«üÿƒøÿ„ML‰÷èe¨üÿH‰ÃHƒøÿ„81Ò1öL‰÷èìªüÿƒÀ„#H�{èj°üÿL‰ñH‰Ú¾H‰ÇH‰D$8èr¢üÿH‰ÅH9ÃtL‰÷è¡üÿ…À…º H‹\$8E1öÆ+H‰ßèÖ£üÿH�xè°üÿE1ÒE1ÀL‰|$`H‰Ç1ÀL‰l$h1ɉD$ E1ÉE‰×E‰ÅH‰|$0H‹-ÕîD‰d$të fDHƒÃ¶öDE@uòLcd$ L‰çIÁäE…ÿt A�GÿN�!9ø3D‰L$(H…É„ÒEÿH‰ÏIc÷HÁæè¤üÿD‹L$(N� H‰ÁIÇD¶E„À…äIǶH‰ÐöDU@t#ff.„fD¶SHƒÃH‰ÐöDU@uî„À…ZÿÿÿH‹|$0L‹|$`H‰L$ L‹l$hD‹d$tè¯üÿH‹D$XH‹L$ I9Ç„ˆ Hƒ9„b 1íf„HƒÅHƒ<éuõH�íK‹<ïH‰L$ Iíè¼®üÿHc$L‰ÿH�tI‰ÆHÁæè4£üÿD‰òD)âL‹d$J�<èI‰ÇHcÒJ�t HÁâèá©üÿH‹L$ K�<'H‰ÚH‰ÎH‰L$訦üÿH‹|$A�D.ÿ‰$èV®üÿH‹|$8èL®üÿD‹d$€H‹|$èf¡üÿ‹ $A�D$9È}D‰d$A‰ÄéýüÿÿDA�D$9$äèÙ¤üÿ=…v!H‹=è"©üÿH�=Ÿüýÿèv«üÿH�=;�ýÿH‰Xè¥üÿH�=\9ÿÿH‰=è áH�=‰6è”á‹$ƒø~IƒèM�wE1íI�lÇL�%CífDI‹º L‰æH‰ßè}žüÿ…À„µIƒÆL9õuÜM…í…´H�þH‰ÅH‹¶H…Û…æ Ç›ÿÿÿÿH�ììH‰ßè<ŸüÿºH�5ø/„À„)·½=H�=ÖìÆH�Æ:Ç#ÿÿÿÿHÇ ÿÿÿÿf‰ÙÆæÆÇ™ÿÿÿÿf‰Æÿè^œüÿH�=IHº )ó~õ»H…ÀH�‹ûHÇ`ÿÿÿÿH‰YH�ìfHnÐH¸ÿÿÿÿ”¬H‰ÅflÂH¸ÿûÿïÖõÿH#H Ð~H‰ï¸HÁà H‰GH‰¸ÇfHÇcÿÿÿÿÇaÿÿÿÿƽ:è%H�=Æëè‘›üÿH‰ÅH…À…³H�-Rëƒ<$I‰ì~LD‹4$A¼ff.„IcÄM‹,ÇH�ÅA€}-u A€}m„FAƒÄE9ô|Ö€}gI‰ì„:L�52úM‹.M…í„I‹uhL‰çèÚ¢üÿ…À…GL‰-ë D‹4$H‹à L‰þD‰÷ÿPP1ÿH‰vè¹$1ÿè"&H‹» ÿL‰þD‰÷ÆLè—ÿÿH‹HH…À…TH‹È H…À…ÄH‹€ H‹€˜H…À…PHƒ=…i H‹=kH…ÿ…2 H‹K H�¼$°ÿP`ƒ¼$°I‰Ä…>ºH�5gë1ÿè žüÿºL‰çH‰Æè¬1Ç– è 9ÿÿ€=† …ûH‹=H…ÿ…©¶« „Àu¶î ƒà<•À¶à ƒàÁàƒâï Ѐ=} ˆÈ …•è_ƒ<$„tö³  …Ë€= „—€= …eH‹d ÿPè|`H‹-ÕH…í…è'�ÿÿH‹ ° ¶Y ‹QDƒà‰ÖƒÎ<„¯‹Ø�Pþ1Àƒú† H‹Q#B ð‰ADè1�Hƒ=�…¡€=¯ …îHƒ=V …Ò€=¢ …µH�=ä H�-}èÈ�üÿH‰ïèÀ�üÿè+�H‹=4H…ÿ…'€=õ „ÒH‹=÷ E1ÉL‰ í è(¥üÿ„À„ò¶‰ E1ÀL‰Ï ƒà<t €= …¹ €=õ …ç€=¬ …j1ÀH‰€÷1ÿ衤üÿD‰ðH‹T$0E‰Æëv@A€þ „HƒÃDˆ2H�zD¶3E„ö„úA¶ÆöDE@t D‰ÎD ¾sH‰úA€þ\tWE…í„=A€þ'…1ÀE1íf�D¶sHƒÃE„ö„²A¶ööDu@tD‰ÎD î Æ„g…À…mÿÿÿ¾sA€þ\u©E…í…Ò¸E…Ét°H�=`çL‰\$PD‰L$HH‰L$@H‰T$(èÀ›üÿD‹L$HH‹T$(H‰ÆH‹L$@L‹\$PH…öD‰È…mÿÿÿDˆ21ÀHƒÂA¹E1íéVÿÿÿfDD¶sHƒÃ1ÀE„ö…NÿÿÿA‰ÆH‰×D‰îÆH‹|$0D‰L$PH‰L$HL‰\$@‰t$(èÓœüÿL‹\$@H‹L$HƒD$ D‹l$(I‰D‹L$PN�\!é˜÷ÿÿDDˆ21ÀHƒÂA½éÔþÿÿE…Éu@A€þ'tNA€þ"trDˆ21ÀHƒÂéµþÿÿ¿@A¿èŦüÿD‹L$(N� H‰Á1ÀI‰é-÷ÿÿA€þ"…ÿÿÿ1ÀE1Éé{þÿÿ1ÀA½énþÿÿH‰×E1öE1Éé-ÿÿÿH‹|$8èf¦üÿé!øÿÿ1ÀA¹éDþÿÿD‰îE1öéÿÿÿA€}…<A�FÿA9Ä�eI‹lAƒÄé”úÿÿ1ÒH‹H ‰ÖH‹H9ÎBÑH…Àuì�zL�-6HƒÇM�}HL�5,HÁçèû¥üÿL� ÿýÿL�ºþýÿH‰ÂL�`H� ¯nff.„@A‹EA‰D$øƒø#‡›Ic†LðÿàH�^QI‰$f.„IƒÅIƒÄM9ýuÃL‹=TL�%6æI‰ÕM‰þM…ö…†¶ H‹58 ¹&H�= ÀèH‰5ó¥ˆH�ó§ÿÿH�=, ÿÿH‰5 H�Þ H‰÷f� ΀èi•üÿ褢üÿH˜H‰³éúÿÿH�kI‰$éVÿÿÿH‹×óI‰$éFÿÿÿM‰$é=ÿÿÿH� ýÿI‰$é-ÿÿÿH�¹ªýÿI‰$éÿÿÿAÇ$ôéÿÿÿM‰ $éÿÿÿH�c¬ýÿI‰$é÷þÿÿH�@WI‰$éçþÿÿI‰ $éÞþÿÿH�CùýÿI‰$éÎþÿÿH�GgI‰$é¾þÿÿH�gPI‰$é®þÿÿH�'PI‰$éžþÿÿH�·OI‰$éŽþÿÿ¶×ƒà<„b„À„7,¾u¾A‰4$é]þÿÿAÇ$éPþÿÿI‹~L‰æè” üÿI‰ÇH…À„£I‹VI�… H…ÒtH‹rÇHƒÀH‹H‰pøëäE1ÛL‰5gL‰ïD‰D‰XAÿ×A‰Ç1ÀH‰NE…ÿ…ãM‹6éþýÿÿ¸I‹TÇøH‰ÆHƒÀH…ÒuïHcöH‰L$ H�<õèR£üÿH‹\$ I‰ÆH‰Åë èà˜üÿHƒÅH‰EøI‹?IƒÇH…ÿuç1ÀH‰ÙM‰÷H‰EéôÿÿIƒÆé�÷ÿÿH�5ãL‰ïèsšüÿ…À„\÷ÿÿH�5õâL‰ïè\šüÿ…À„E÷ÿÿH�5åâL‰ïèEšüÿ…À„.÷ÿÿH�5ÕâL‰ïè.šüÿ…À„÷ÿÿH�5ÅâL‰ïèšüÿ…À„÷ÿÿH�5µâL‰ïèšüÿ…À„éöÿÿH�5¦âL‰ïèé™üÿ…À„ÒöÿÿH�5™âL‰ïèÒ™üÿ…À„»öÿÿH�5ŒâL‰ïè»™üÿ…À„¤öÿÿH�5âL‰ï褙üÿ…À„�öÿÿH�5râL‰ïè�™üÿ…À„vöÿÿH�5câL‰ïèv™üÿ…À„_öÿÿH�5VâL‰ïè_™üÿ…À„HöÿÿH�5IâL‰ïèH™üÿ…À„1öÿÿH�5<âL‰ïè1™üÿ…À„öÿÿH�5/âL‰ïè™üÿ…À„öÿÿI�méúõÿÿ1Û1íé³òÿÿ¾è+Ç è0ÿÿHƒ=—„§öÿÿ€=‚„üöÿÿH‹mH�5–$1ÿºL�` è¾”üÿL‰æH‰Ç1ÀèsýÿL�%š$1ÀL‰çèýrýÿHƒ=@…, H‹›H�¼$°ÿP`H‰Ç1ÀèÓrýÿL‰ç1ÀèÉrýÿé‡öÿÿ‰ÖƒæýéG÷ÿÿ¾éÍüÿÿI‹H�5 #H‹ àH‹81Àèx˜üÿ¿辜üÿI‹H�5#ëÙI‹F1ÿºH�5HáH‰D$è”üÿH‹t$D‰úH‰Ç1Àèd/éêüÿÿH‰ßè”üÿ‰±…ÀŽóÿÿHcÐH�Tÿ€:/…ýòÿÿƒè‰�ÆéìòÿÿèÍH‹L$xH)ÈH‰ÃH‹àÞH‹8èX™üÿ1ÿºH�5B(H‹-{è~“üÿ¹@BH‰ÆH‰ØH‹4ßH™H÷ùH‹;I‰ÐH‰ÁH‰ê1Àè”—üÿH‹;è ™üÿé&÷ÿÿH�=FâL‹%¡îèÔœüÿ1ÿÆ«H‰=´¿H‰€îH‰©è ¿èrè�TH‹5fH�=O…ÿÿè*„ÿÿè%Wè0žüÿ„À„€ 2H‹ÊÆ…H…Û„Ü‹C…À„¾ƒè…�H‹CHƒ¸ð…BH‹8¾èçÿÿH‹ë¿L‹-ãíL‰ï裒üÿI‰Äƒø~5H˜H�5ˆM�lüL‰ïèE�üÿ…À„öÿÿH�55L‰ïè.�üÿ…À„ûõÿÿ¿謞üÿA�|$HcÿI‰Å蜞üÿL‹5}íI‰ÄH‰ÇL‰öè·�üÿL‰çè/’üÿL‰÷H�5>íLàÇ.exeÆ@èSšüÿH�5çõL‰çI‰ÇèAšüÿI‰ÆM…ÿ„‹ºH�5é#M…öu1ÿè­‘üÿL‰æH‰Ç1Àè-L‰ùº¾L‰ïè+�üÿI‰À…ÀŽXIcÐL‰ñ¾L‰ïL‰$èé›üÿL‹$A9ÀtÀºH�5 àëžH�.¾X(H�=Qàè÷ýÿH‹›ì1ÿºH�5%#H‰$è‘üÿH‹4$H‰Ç1Àè~,éDÿÿÿH�Ò-¾P(H�=àè¸öýÿH‹{¾èCÿÿéWþÿÿH‹ÇÿH…Û…BH‹=71Ò1öèN…ÿÿH‹ÇÿÿP(è?œüÿèúœÿÿèÕbH‹=è©gH‹=1öèK®ÿÿèæ¹ÿÿH‹�ÿÿPX1öƒ=»@—Æ1ÿè{èƒ}H‹lÿÿPx€=(…¶觀肂H‰ïèZ‘üÿèŃH‹=®èé˜üÿ„À„_1öH‹=€ë1ÀH‰5�1öèH˜üÿ‰Å…ÀˆH�´$°‰ïè¿›üÿ…À…†H‹„$àE1öH‰ÇH‰D$èOœüÿH‰D$L9t$…6‰ïèÈ‘üÿH‹=ëèÜŒüÿH‹5ýþL‰çL‰%ëè�üÿI‰ÄH…À„íH�”$ˆ¾H‰ÇèÕ˜üÿ„À„ÐH‹-Îê¾/L‹-²þH‰ïèb�üÿI‰ÇH…À„•I)ïI� 躛üÿH‰îL‰ùI‰ÆH‰ÇI�Gó¤CÆ>/H¹ldXXXXXXLðL‰÷H‰Æ@è§•üÿ‰Áƒøÿ„_H�óL‰îL‰÷èš”üÿH‰ÅH…À„AH‹8èö�üÿ¾H‰ïH‰$èU“üÿ„À„õI‹´$ÀL‰çE‹|$DH‰t$è”üÿL‰çA‰Æèh•üÿH‹t$H‰ïI‰Å訙üÿ„À„¸D‰þH‰ïè•üÿ„À„¥H‹ED‰êD‰öH‰ïÿ�˜„À„ŠI‹D$L‰çÿ�ðH‰ÇH…Àˆp賚üÿL‰çI‰ÅI‹D$L‰îÿ�øI‰ÆH…Àˆ7H�„$�1ÉH�5b�L‰çH‰ÂH‰¬$�L‰¬$˜‰Œ$ H‰D$èÛ˜üÿƒ¼$ …ÖH‹EH‰îL‰çÿ�`„À„£º(H�5çÜH‰ïèa‹üÿI‰ÇH…À„fH‹t$H‰ÇèX“üÿ„À„6I‹œ$ H…Û…ÂD‰òL‰îH‰ïèA‘üÿH‹T$H�5e�L‰çèM˜üÿƒ¼$ …wL‹D$H‹T$1ÉL‰þH‰ï蘎üÿ„À„@H‹EH‰îL‰çÿ�8„À„ÁH‰ïèÀ•üÿ„À„†L‰ïè`™üÿH‰ßèX™üÿH‹5IèH‹<$èè•üÿ…Àu:H‹<$è;™üÿH‹|$è1™üÿéŽðÿÿ1ÿºH�5詌üÿH‰Ç1Àè(éÂùÿÿH‹<$èÁ‰üÿ1ÿºH�5Ó è~ŒüÿH‰Ç1Àèä'ëžH‹<$虉üÿ1ÿºH�5s èVŒüÿH‰Ç1Àè¼'éOÿÿÿºH�53 1ÿè4ŒüÿI‰ÄL‰ï虘üÿH‰ß葘üÿH‰ïèÙ”üÿH‹$H‰ßè=‰üÿH‰ßèu˜üÿ1ÿºH�5 èò‹üÿL‰æH‰Ç1ÀèU'éÿÿÿºH�5¤1ÿèÍ‹üÿI‰Äë—ºH�5 Û1ÿ赋üÿI‰Äé|ÿÿÿJ�<õè ˜üÿ1Ò1öH‰Ã1Àë+DI‹|ÕM‹”$ L9W tH‰9HƒÀH�4ÅHƒÂH� 3I9ÖuÑ1ÒH‰ÞH‰ïH‰‰Âè/�üÿééýÿÿºH�5æ1ÿè7‹üÿI‰ÄéþþÿÿºH�5£1ÿ1Ûè‹üÿI‰ÄéáþÿÿºH�5^1ÿèÿŠüÿI‰ÄéÆþÿÿºH�5Ú1ÿèäŠüÿI‰Äé«þÿÿè—Œüÿ‰Çè�”üÿI‰Äé—þÿÿ背üÿE1í‰Çèy”üÿI‰Äé€þÿÿ¿ è'—üÿI‰Æ1ÀézûÿÿèXŒüÿ‰ÇèQ”üÿI‰Äé„þÿÿH‹T$H‹D$‰ïL)òJ�40è!�üÿI‰ÅH…Àx>Mîé—úÿÿ¿è7ŒüÿL‹-¸å1ÿºH�5:è=ŠüÿL‰îH‰Ç1Àè %éDúÿÿ¿èŒüÿL‹=‚å1ÿºH�54èŠüÿL‰þH‰Ç1Àèj%ë�¿è΋üÿL‹-Oå1ÿºH�5¡èÔ‰üÿL‰îH‰Ç1Àè7%éÄùÿÿH‹-#å1ÿºH�5=訉üÿH‰ÇH‰î1Àè %éuùÿÿè�Þÿÿé@ùÿÿƒ{…œH‹CL‹3¾L‹¨ðL‰óI‹}èÃùþÿH…Û„Œøÿÿƒ{uVH‹H…Û„zøÿÿH‹CI‹}H‹€ðH‹0è!�üÿ…ÀtÊéQøÿÿL‰ÿèÀˆüÿL‰÷踈üÿƒÀtEL‰çè{•üÿL‰ïès•üÿéÃìÿÿH�Ç%¾t(H�=ý×è­îýÿH�¯%¾b(H�=å×è•îýÿ1ÿºH�5©×軈üÿL‰æH‰Ç1Àè$뙀=�û…!ìÿÿ€=8ø„ZôÿÿH‹óãºH�51ÿèxˆüÿH‰ÞH‰Ç1ÀèÛ#é.ôÿÿèÂëýÿéæóÿÿ1ÿºH�5ªÔèIˆüÿH‰Ç1Àè¯#ééÿÿ1öé­ðÿÿ‰Çè|”üÿé éÿÿL‹%È÷èË€=´÷…´L‰%¯÷Æ�÷Çš÷è#ÿÿÆz÷éêÿÿHƒ=…÷…ûòÿÿ1ÿºH�54ÕèćüÿH‰Ç1ÀèfýÿéóÿÿI‹~H�5ÚÔèÕ�üÿI‰ÇH…À…Aðÿÿè„üÿI‹N1ÿºH�5"H‰D$H‰L$ès‡üÿH‹T$H‹t$H‰Ç1ÀèÏ"éðÿÿè¶êýÿéBÿÿÿIƒÆL�k L9õ…æÿÿA€}/„ÀL‰- ùA€}„=æÿÿL‰ï誆üÿH‰ëøé)æÿÿ€=ú„éÿÿéäêÿÿèGJH�=³ÜH‰Æ1ÀèCeýÿéPéÿÿ¾H‰ÇèäéÓèÿÿ€}l…¼çÿÿ€}d…²çÿÿL�eé©çÿÿƒ<$�Sçÿÿé�çÿÿ¾7H�=µÓH‰T$èQëýÿH‹T$H� Ñ[L�ÇëýÿL� ìýÿéNíÿÿL‹%Ïá1ÿºH�51èT†üÿH‰ÇL‰æ1Àè·!éâéÿÿHƒ=Šó…}L‹%½ôD¶-è÷1ÀM…ä„�I‹T$0f÷BD@u\AöD$`uTE„ítOH‹ª�ëH‹mH…ít5H‹U`H…ÒtH‹ ^öH9ŠàtÞöE&0uØ„Àt!¾H‰ïèþ|D‰èëÂD¶-t÷M‹d$Hë‡1ÿºH�5…Óè—…üÿH‰Ç1Àèý“ÿÿëÀA€íu!„Àu1ÿºH�5èn…üÿH‰Ç1ÀèÔ“ÿÿºH�5]Ó1ÿèQ…üÿL�=žÓL�5”ÓH‰Ç1Àè©“ÿÿºH�5JÓ1ÿè&…üÿºH�5BÓ1ÿI‰Åè…üÿºH�53Ó1ÿI‰Äèú„üÿºH�5$Ó1ÿH‰Åèä„üÿM‰éM‰àH‰éH‹=löH‰ÂH�5Ó1ÀL�¤$°L�-ÓèôˆüÿH‹-�óH…í„•H‹UH‹=1öL‰þ1ÀèψüÿH‹U H‹=õL‰æè|�üÿL‰âL‰ö1ÀH‹=ö計üÿH‹U(H‹=ÝôL‰æèU�üÿ1ÒHƒ}HtºïÿÿÿH‹=ØõL‰áL‰î1Àèsˆüÿ‹}H…ÿtè7‰ƒ}L…Kè˜}H‹mébÿÿÿ1ÿºH�5¹èüƒüÿH‰Ç1Àèb’ÿÿö ôuEó~QÏ1Ò¾èH�=ò€%LòþíÎ&òè‰ÄH‹= ô1ÒH�5ÙÇýÿ褊üÿƒýðL‹%îðÇüðH‹-õòëH‰ïL‰æè˜~H‹mH…íuìH‹xòH‹€àH…À…È€=$ó„uæÿÿH‹-ÜôH…í„SºH�5’Ñ1ÿè(ƒüÿH‰ïH‰Æ1Àè[‡üÿºH�5‹Ñ1ÿèƒüÿH‰îI‰ÄH‰Çè:„üÿL‰çè"ƒüÿA‰ÄAƒü1� H‰î¿ AƒÄèÔ†üÿëãH�=,Ñ1Àè4‘ÿÿ‹}Lè̇éšþÿÿºH�5WÐ1ÿ褂üÿL�-aÐL�%dÐH‰Ç1Àèü�ÿÿH‹-ÕïH…í„HüÿÿL‹uM…öuºL‰î1ÿèd‚üÿI‰ÆL‹}ºL‰æ1ÿèN‚üÿL‰òH‰ÇL‰þ1Àè®�ÿÿH‹më³H�5üÖH‰ïè†üÿ…À„$H�5%æH‰ï肊üÿH‰£óH…À„˜€ 3ò@éºäÿÿ€=Çð„!åÿÿ1ÒH�5ÐÏýÿH�=‰ðèD€üÿH‹-]ðH…í„üäÿÿöEa„L‹e0M…ä„úL‰çèÅüÿ„À„ÅI‹„$ÈH‰D$H‹D$L‹8M…ÿ„ÌA‹G©p…�©„‚I‹W H‹R`H…ÒtuH‹ E1ÒL‰$H‰L$öÄtWL‹5ÅðM…ötUM‹nM…ít=I‹}H‹t$è…üÿ…ÀtA€~u$M‹mëÜÿÐé©âÿÿI‹W H‹<$M‰ðL‰á1öè2ÐýÿëÕM‹6ë°I‹GH‰$ëŸHƒD$éHÿÿÿ1ÿºH�5ÒèÅ€üÿL‰æH‰Ç1Àè(éÿÿÿH‹mHéÝþÿÿ¶Óð÷Ш„$ãÿÿ1ÿºH�5³膀üÿH‰Ç1Àèìéãÿÿº1ÿH�5áèd€üÿL‰æH‰Ç1ÀèǺH�5NÍ1ÿèD€üÿH‰Ç1ÀèªH‹ûËH‹8è‹H�=>Í1Àè�é=áÿÿ1ÿºH�5*è€üÿH‰Ç1ÀèkéhÞÿÿ1ÿºH�5‡ÍèãüÿH‰îH‰Ç1Àè3^ýÿévâÿÿ€=Ãò…¬ãÿÿ€=�ï…ŸãÿÿèâB1ÿºH�5-ÍèŸüÿH‰Ç1Àèé(âÿÿH‹!ñH‹=ðH�5«ïÿÐéüÿÿA€}„vÞÿÿé0øÿÿH�5hãèȇüÿI‰ÄH…À„H‹­ÚH�5øÍL‰ç1ÀL�5ðÍèmƒüÿL‹-îM…í„éI‹UL‰öL‰ç1ÀèLƒüÿM‹mëàH�=/1ÀL�%�Íè‘üÿL‹5ÊíH�-‘ÍIƒ~„âÿÿI‹6M‹n8L‰ç1ÀM+n ècüÿL‰ïèë‚I‹~(èâ‚I‹F(H…Àt5M…íx[fïÀòI*ÅòY³H…Àx*fïÉòH*Èò^ÁH‰ï¸èüÿ¿ èJ{üÿM‹vë�H‰ÂƒàfïÉHÑêH ÂòH*ÊòXÉëÄL‰êAƒåfïÀHÑêL êòH*ÂòXÀë’¿è€üÿL‹-¼ï1ÿºH�5~è ~üÿL‰îH‰Ç1Àèlé«þÿÿH�ð‹�éæàÿÿH‹!ÉH‹(éžúÿÿ1ÿºH�5NÌèÆ}üÿH‰ïH‰Æ1Àèù�üÿ€=Šì„H‹-ìH�<ÅèŠüÿH�”$°H�5zâýÿH�=2ìI‰ÄH‰„$°èâ{üÿH‹„$°L)àHÁøH;äë…ÖH‹5×ëH� �ØýÿºL‰çè‹{üÿH‹¼ëI�ÄH‰$H‹$I9ăIàÿÿM‹4$H‹=lí1É1ÒA¸I‹vè1€üÿH…À„€x…8H‹@(Hƒx`„æH‹€àH…À„ö@D@„I‹F H…À„¿H‹PöBD@„ôH‹ëä1ÿºH�5 Ëè’|üÿH‰ïH‰Æ1ÀèÅ€üÿéªßÿÿ¾ˆH�= Ëè3áýÿéÿÿÿ¿è@~üÿH‹-éí1ÿºH�5³ èF|üÿH‰îH‰Ç1Àè©é2úÿÿL‰æ¿ L�5ëÊè€~üÿL‹-ëM…ít-I‹UL‰öL‰ç1ÀèC€üÿM‹mëäH‹6ÇH‹H‰„íéåùÿÿL‰çè{üÿéOßÿÿM‹nH�5§ 1ÿºèÃ{üÿH‰ÇL‰î1Àè&€=oët?I‹VH�5gîH‰ï1ÀèØüÿI‹~è¿{üÿD�hM‹~ M…ÿ„ŽAöG…¯M‹?ëçI‹VH�5(îH‰ï1Àè™üÿI‹~è€{üÿD�hë¿H‰î¿ AƒÅè9üÿAƒý1~éI‹VH�5yìH‰ï1ÀE1íè[EM‹6M…ö…ŸE…ít¾èH�=“Éè½ßýÿIƒÄéÄýÿÿM‹~ M…ÿt AöGuPM‹?ëïM‹v ë½H‰î¿ AƒÅèÄ~üÿAƒý1~éI‹WH�5ìH‰ï1ÀE1íèæDé.ÿÿÿH‰î¿ AƒÅè�~üÿAƒý1~éI‹WH�5ÐëH‰ï1ÀE1íè²Dë�AöF…Jÿÿÿé'ÿÿÿSèz|üÿ¿H‰Ãè͆üÿ1ÒH‰H‰P¶„Ò…é†üÿH‹BÕH‰HƒÀ[H‰3ÕÃf�QH�=~Éè3vüÿH…Àu H‹éH‹@pZÃ�Hƒìó~dÅÅ@„ÿuH1Ò¾è)$H�=¦æ׿€%èæþ蓺fo$1Ò1öH�=#æ€%læþMæèpºH� é¹=ºàH�5hîþÿH�=QìH‰‚ÔèÕ|üÿ„À„4†üÿH�fè1Ò1ö1ÿH‰aèH�Bè1ÉH‰AèH�’åH‰“åH‹<ÔH‰H‰@H�fåH‰gåH�HåH‰5Aå¾H‰=åH�ŽçH‰=‡ç1ÿH‰ .åH‰çèBéþÿº1öH�=DÈH‰õäèHìþÿH‹QÄE1ÀH‰æH� L‰ÉäH‰PHH�¾äH‰¯äHƒÄÃf�@„ÿu(Qº(¹ H�5¹oÿÿH�=¢çèÍ{üÿ„À„å‡üÿXÃÃf�P¾H�=ñÇ€%=äûÆMägè ºH¸ÿÿÿ¿øÿÈH#ZèHÁ†ç H Ѐ MèÆ€éÆ�éH‰0èZÃff.„P¾H�=�Ç€%­ãûƽãgè°ºH¸ÿÿÿ¿øÿÈH#êçHÁ†ç H Ѐ ÝçÆéÆ éH‰ÀçZÃff.„P¾H�=àÍÆ4ãgèGºH¸ÿÿÿ¿øÿÈH#�çHÁ†¦æ H Ѐ tçÆ§èÆ·èH‰WçZÃDU‰õSH‰ûQè#üÿH…À„‡üÿ‹P H‹@‰}âH‰nâX[]Ãf�AUI‰õATI‰ÌUHcïSH�uHcÚPI‹}HƒÃHÁãèÈwüÿ‹H‰ÞI‰E‰(¶ˆT(I‹<$è¤wüÿH�5M\I‰$H�ŒàýÿÿH‹:\H�yH‰H‹D^HƒçøH‰�H)ùH)Î�Á ÁéóH¥Z[]A\A]ÀAUI‰õATI‰ÌUHcïSH�uHcÚPI‹}HƒÃHÁãè(wüÿ‹sH‰ÞI‰E‰(¶fˆT(I‹<$èwüÿH�5�YI‰$H�ŒàýÿÿH‹zYH�yH‰H‹„[HƒçøH‰�H)ùH)Î�Á ÁéóH¥Z[]A\A]ÀAUI‰õATI‰ÌUHcïSH�uHcÚPI‹}HƒÃHÁãèˆvüÿ‹ÓH‰ÞI‰E‰(¶ÆˆT(I‹<$èdvüÿH�5ÍVI‰$H�ŒàýÿÿH‹ºVH�yH‰H‹ÄXHƒçøH‰�H)ùH)Î�Á ÁéóH¥Z[]A\A]ÀATUSHƒìƒÿztC~7�ÿƒ$�ÿ.�Š�ÿ›„1Àüÿ�ÿ¬„‘1ÀHƒÄ[]A\ÃÿPuðé–³üÿH‹-1ÀH�5óÑH‹]H‰ßè–xüÿ…À„þ²üÿH�5UÇH‰ßèxüÿ…À„dµüÿH�5EÇH‰ßèhxüÿ…À„&¶üÿH�56ÇH‰ßèñ ÿÿ„À…NµüÿH�5.ÇH‰ßèÚ ÿÿ„À…mµüÿH�5)ÇH‰ßèà ÿÿ„À… ¶üÿH�5%ÙH‰ßè xüÿ…À„^¶üÿH�5ÇH‰ßèõwüÿ…À„_¶üÿH�5þÆH‰ßèÞwüÿ…À„`¶üÿH�5åÆH‰ßèÇwüÿ…À„U¶üÿH�5ÞÆH‰ßè°wüÿ…À„J¶üÿH�5ÕÆH‰ßè9 ÿÿ„À…C¶üÿH�5¼ÆH‰ßè" ÿÿ„À…;¶üÿH�5µÆH‰ßè ÿÿ„À…1¶üÿH�5òÆH‰ßèTwüÿ…À„<¶üÿH�5ÙÆH‰ßè=wüÿ…À„¼¶üÿH�5ÒÆH‰ßè&wüÿ…À„±¶üÿH�5ÂÆH‰ßèwüÿ…À„§¶üÿH�5µÆH‰ßèøvüÿ…À„�¶üÿH�5¨ÆH‰ßèávüÿ…À„–¶üÿH�5šÆH‰ßèÊvüÿ…À„Œ¶üÿH�5�ÆH‰ßè³vüÿ…À„…¶üÿH�5‚ÆH‰ßèœvüÿ…À„{¶üÿH�5tÆH‰ßè…vüÿ…À„q¶üÿH�5HçH‰ßènvüÿ…À„j¶üÿH�5MÆH‰ßèWvüÿ…À„o¶üÿH�5;ÆH‰ßè@vüÿ…À„t¶üÿH�5-ÆH‰ßè)vüÿ…À„y¶üÿH�5ÆH‰ßèvüÿ…À„o¶üÿH�5ÆH‰ßèûuüÿ…À„e¶üÿH�5ïÅH‰ßèäuüÿ…À„Z¶üÿH�5äÅH‰ßèÍuüÿ…À„O¶üÿH�5ÛÅH‰ßè¶uüÿ…À„G¶üÿH�5ÂÅH‰ßèŸuüÿ…Àt?H�5¿ÅH‰ßèŒuüÿ…À„�¸üÿH�5¦ÅH‰ßèuuüÿ…À…¶üÿ€%©á¿¸é™üÿÿ€%™áûëí�ï/ƒÿT‡üÿÿH�• HcºHÐÿà雼üÿff.„@ATUSHƒìƒÿztC~7�ÿƒ$�ÿ.���ÿ›„v¼üÿ�ÿ¬„r1ÀHƒÄ[]A\ÃÿPuðé¶½üÿH‹-Q¼H�5ÎH‹]H‰ßè¶tüÿ…À„X½üÿH�5uÃH‰ßèŸtüÿ…À„)½üÿH�5eÃH‰ßèˆtüÿ…À„Z½üÿH�5VÃH‰ßè ÿÿ„À…ȾüÿH�5NÃH‰ßèú ÿÿ„À…ç¾üÿH�5IÃH‰ßèã ÿÿ„À…[¿üÿH�5EÕH‰ßè,tüÿ…À„°¿üÿH�5'ÃH‰ßètüÿ…À„±¿üÿH�5ÃH‰ßèþsüÿ…À„οüÿH�5ÃH‰ßèçsüÿ…À„›¿üÿH�5þÂH‰ßèÐsüÿ…À„�¿üÿH�5õÂH‰ßèY ÿÿ„À…•¿üÿH�5ÜÂH‰ßèB ÿÿ„À…�¿üÿH�5ÕÂH‰ßè+ ÿÿ„À…ƒ¿üÿH�5ÃH‰ßètsüÿ…À„Ž¿üÿH�5ùÂH‰ßè]süÿ…À„ÀüÿH�5òÂH‰ßèFsüÿ…À„ÀüÿH�5âÂH‰ßè/süÿ…À„ù¿üÿH�5ÕÂH‰ßèsüÿ…À„ï¿üÿH�5ÈÂH‰ßèsüÿ…À„è¿üÿH�5ºÂH‰ßèêrüÿ…À„Þ¿üÿH�5°ÂH‰ßèÓrüÿ…À„׿üÿH�5¢ÂH‰ßè¼rüÿ…À„Í¿üÿH�5”ÂH‰ßè¥rüÿ…À„ÿüÿH�5hãH‰ßèŽrüÿ…À„¼¿üÿH�5mÂH‰ßèwrüÿ…À„Á¿üÿH�5[ÂH‰ßè`rüÿ…À„Æ¿üÿH�5MÂH‰ßèIrüÿ…À„Ë¿üÿH�54ÂH‰ßè2rüÿ…À„Á¿üÿH�5(ÂH‰ßèrüÿ…À„·¿üÿH�5ÂH‰ßèrüÿ…À„¬¿üÿH�5ÂH‰ßèíqüÿ…À„¡¿üÿH�5ûÁH‰ßèÖqüÿ…À„™¿üÿH�5âÁH‰ßè¿qüÿ…Àt?H�5ßÁH‰ßè¬qüÿ…À„ ÁüÿH�5ÆÁH‰ßè•qüÿ…À…d¿üÿ€%ÉÝ¿¸é™üÿÿ€%¹Ýûëíéÿ¸üÿ�ï/ƒÿT‡züÿÿH�HcºHÐÿàff.„@Hƒ= Øt @„ö„«ÑüÿH‰=Ø@ˆ5÷×Ãff.„UºH�5¯ÂS‰û1ÿQèmüÿH�é$H‰ÆH‹7¸H‹81Àè-qüÿöÃt=ºH�5ä$1ÿèÕlüÿH‰Ç1Àèkmüÿº1ÿH�5ý$è¸lüÿZ[H‰Ç]1ÀéKmüÿ…ÛtGºH�5BÂ1ÿè”lüÿH�½ÇH�-FÂH‰Ç1ÀèmüÿëH‹phH‰ï1ÀHƒÃèmüÿH‹H…ÀuæX[]Ãff.„�AUE1ÉI‰ýATUH‰õS‰ÓAPƒ=öÖ D‰ óÖ‡©Ðüÿ‹ãÖH� ŒÖ‹5nÖH‰,ÑH� ;ÖH‰Ð‰4‘H‹ &ÖH…É…”H�5¾ÕL‰ïƒÀ‰:ÖH‰ Ö‰˜Öèlüÿ¿@H‰ÅèFxüÿ�}H‰Ã1ÀHcÿ‰kH‰è0xüÿL‰îH‰CH�PI‰ÄÆ H‰×èGiüÿfAÇD,1҃ʼnkH‰ßH‰CHÇC ÇC(H‰S4Y[]A\A]éAH‹5zÕH‹ ñé\ÿÿÿ�AVAUL�-*ÁATUSH‰û€;thL‰îH‰ßèÞqüÿH‰ÅH…Àu H‰ßèNküÿH�,¿I‰îè�wüÿI)ÞI‰ÄH‹ÀÔI�~I‰D$èrwüÿH‰ÞL‰ñH‰ÇI‰$ó¤L‰%œÔ€}BÆ0u []A\A]A^ÃH�]ë„f�€=yÜSH‹×u H…Û…HÏüÿ[Ã@UH‰ý¸SH�¿ÅRë&„Àu H‰î¿ èÛlüÿH‹H‰îHƒÃH‹xhè¨küÿ1ÀHƒ;uÔX[]Ãff.„�1öë\ff.„�UH‰ý¿SQèÝþÿH‰ïH‰ÃH‹óÔH‰H‰éÔè4lüÿHƒ=ŒÚH‰C…ðÎüÿX[]Ãff.„AVAUATA‰ôUH‰ýSHƒìH‹oÙH…ÛtE…ä…Ïüÿƒ{…ÏüÿH‹H…ÛuåH‰ïèßiüÿH�xH‰Ãè#vüÿH�KH‰îH‰ÂH‹*ÙD‰bH‰H�B H‰Çó¤H‰ÙAƒü„•ÎüÿH�t$H‰ïèH‰ÃH…À„Ƀ=Ô D¶d$‡×Îüÿ‹ ÿÓ‹5‘ÓH�¢ÓH‰,ÈH�WÓH‰Ê‰4ˆ¶zØH�5£ÒÀèƒà‰ŽH‹+ÓH…Àt H‹5ÓH‹ðH�5¼ÒAƒäƒÂH‰ßH‰Î¶7ØAÁä‰�Óƒà÷H‰KÒÇÓD àˆØè‹H‰ÇèƒH‰DØHƒÄ[]A\A]A^ÃH‹ÒH…À…GH‹=pÚL�5Y¾H�5l¾L‰òèBpüÿH‰ÃI‰ÅH…ÀtH‰Çèï„ÀunH‰ßè³tüÿH‹=4ÚL‰òH�5=¾è püÿH‰ÃI‰ÅH…ÀtH‰Ç躄Àu9H‰ßè~tüÿH�5ü×H‹=øÙH‰òèØoüÿH‰ÃI‰ÅH…ÀtAH‰Çè…„À„‘ÍüÿH‹ÎÂH�OÑL‰ï¾H‰¸Âè ÿþÿL‰ïH‰©ÂètüÿL‹-%ÑH‹–ÂL‰(AƒütL‹-ÑL�5ÜÖM…ítOI‹}1ÉH‰êL‰ö1Àè¿hüÿH�t$H‰ÇI‰ÄèÿL‰çH‰ÃèÄsüÿH…ÛuM‹mëÂH‹:Â1ÒH‰éàýÿÿévÌüÿéïÌüÿff.„SH‰ûèH‹8ÑH…À„íÌüÿH‹ ÑH�4ÐH‹H9Ù„ÍüÿH…É…ÞÌüÿH‰Ð[é­ÿÿff.„f�AUºATUH‰ýSH‰óH‰ßHƒìH�t$èncüÿI‰ÄH‹D$€8uaH‹òÏL�mH…Ûuv¿ èWÙþÿfInÍó~ÒÏL‰`H‰ÃÆ@flÁH‰¼ÏL‰çè)ÿÿH‰ÚH‰ïH‰Æè»HƒÄ[]A\A]Ã1ÿºH�5bè-füÿH‰ÞH‰Ç1Àè�ézÿÿÿH‹{L‰îèÿiüÿ…ÀtH‹émÿÿÿL‰cëœf.„Hƒ=@Õt€áu‹¿ÕH…öuH…Òu H‰þH‰5ÕÃøuðéáËüÿƒøuáëçDAWI‰ÿ¿AVA‰ÎAUATA‰ÌUH‰ÕSH‰óAPè rüÿL‰8I‰Å¶@ƒàøƒÈAˆEE„öuyH‰ßèšeüÿH�xèáqüÿ1ÉE1ÉH‰ÞH‰ÇI‰ÀH¸ ë3„É…ðËüÿ�JÖ€ù1w H£È‚‚€ú\AˆD‰É”ÂIƒÀA‰ÉHƒÆ‰Ñ¶„ÒuÆE„É…ÁËüÿèoqüÿI‰]ë I‰]H…ÛtJH…í…$ËüÿºA¶EÁâƒàÇ ÐAˆEH‹ÚÓH‹€ØH…À…çÊüÿZL‰è[]A\A]A^A_ÃèqüÿA€eþI‰]ë«ff.„USH‰ûH�ìØH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH‹i¯H‹8èáiüÿH‰âH‰Þ¹H‹-ׯH�„$ðÇ$H‰D$H�D$ H‹}H‰D$ÇD$0èpH‹}è—iüÿH�ÄØ[]Ãff.„f�ATUH‰ýSH�ìÐH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$À¿èÔoüÿ¿H‰ÃèÇoüÿH‰áH‰ê¾H‰CH‰Ç1ÀH‰H�„$ðH‰D$H�D$ Ç$ÇD$0H‰D$èÅaüÿ=ÿ‡ÄÉüÿH‹¿H‰ ¿H‰H�ÄÐ[]A\Ãff.„f�1ÀS‰¶ ôÒƒá€ù„K€=5Ô„ˆÊüÿ€=ÔH�”„&H‹ÀÒH¾H¸H!ÖH9Æ„ÊüÿH¿H¸H!×H9Ç„¢I¸@H¸@I!ÐI9À„ŸH¸H9Æ„ÿI¹H�D’IºI!ÑM9Ñ„…H»H¸H!ÓH9ÄkÉüÿIºH�½çI»I!ÒM9ÚtB€ù„˜ÉüÿH¸H9Æ„�ÉüÿH¸H9ÇuH�ágörÒuH�h[ÃH¸@I9À„H¾H�‹ I9ñtÕH¸H9ÄeÈüÿH¾H�2`I9òt¬€ù„RÈüÿ· AщÎf�æf�þ…ºH�L´öåÑ…vÿÿÿ÷ÑH�~4f÷Á„bÿÿÿ¸ H÷ÒHÁàH…ÂtGH�“_f�þ…úÇüÿ[ÃH�èö˜Ñ…)ÿÿÿH�k¸[ÃH�Úö{Ñ„Mþÿÿ[ÃölÑt°é“Çüÿ€=ÙÑH�M…tÈüÿ[ÃH��öAÑ„çþÿÿ[Ã÷Ñf÷Á…aÿÿÿö%Ñ…!ÈüÿH�À3[ÃéLÈüÿf„USQH‹=.ÊH…ÿtH‹ÒÕH�PÿH9Ês9X[]þ¿èšcüÿH‰ûÉH…À„ ÈüÿHÇ—Õ1ÒH‰ÖÉëÇH�XH�,ÝH‰îèÀfüÿH‰ÁÉH…À„ÏÇüÿH�T(À¹1ÀH‰UÕH‰×ó«ë‰fDAWH‰ÐI‰÷AVAUA‰ÍATI‰üUSH�ìX„É…´E1ÉE1ÀD‰L$pD‰Œ$ˆD‰Œ$ D‰Œ$¸D‰Œ$ÐD‰Œ$èD‰Œ$D‰Œ$D‰Œ$0M‰ùL‰Î¶„Ò„¥H‰ñ€ú%„è¶V€ú%„҄҄ʶV€ú%„ô„Ò„ì¶V€ú%„ñ„Ò„é¶V€ú%„î„Ò„æ¶VH�N€ú%u#é‚ff.„f�¶QHƒÁ€ú%„d„Òuë€ú%„WH‰ÎéPÿÿÿE…À…¹A¶„À„ü1ÛE1ö<%„–A¶G<%„„À„A¶G<%„B„À„:A¶G<%„?„À„7A¶G<%„<„À„4A¶GI�o<%uëD¶EHƒÅ<%t„ÀuðL9ýtH‰êL‰á¾L‰ÿL)úèhüÿI‰ïA€?%uaA¶GM�W<0„êÉüÿH‹ܨ¾È¶À‰ÝöB…dÉüÿA¶M�z[üÿéÎüÿÿ‰èH�5ƒÖL‰çƒÃHkÀH‹Tp1Àè^üÿéªüÿÿÆ?ËéžüÿÿA¾é“üÿÿM‰úL‰æ¿%L‰T$è©]üÿL‹|$étüÿÿ‰èHkÀH‹lpH…í„ýÁüÿ€}„óÁüÿ€=:Ét*H‹=ñɺH‰îL‰T$èOaüÿL‹T$H…ÀI‰Ç…ïÁüÿL‰æH‰ïL‰T$è~ZüÿL‹T$é^þÿÿ‰èL‰æM�zHkÀH‹lpH‹}èYZüÿH‹½àH…ÿ„ÞûÿÿH‹GH‰îÿ�H‰ÂH…À„ÅûÿÿéyÄüÿ¿èqaüÿA¶Y�Sœ€ú‡Öùÿÿ¹H£ÑƒÇùÿÿI�qºéÙüÿÿL‰T$ƒÃèfZüÿ‰D$$‰èHkÀH‹|xH‹lpH‹„€H‰|$H‰D$H…í„ÅüÿH‰ïè�VüÿL‹T$„À„{ÄüÿL‰T$(H‹µÈH‰ïH‹EjH�T$½è¡ ‹|$$è8Xüÿ€|$„"ùÿÿéÁüÿA€:GH‹T$8uÁH…Òt¼éWÁüÿ‹8ƒÿ/w‰úƒÇHP‰8H‹H‰éËùÿÿH‹PH�zH‰xëç‹8ƒÿ/wAL‹XA‰ù�W‰O‹ L‰ ƒú/w`A‰Ñ�W‰O‹ L‰Iƒú/wEƒÇLÚ‰8H‹H‰QéuùÿÿH‹PH‰×HƒÂH‰PH‹?H‰9H‰×HƒÂH‰PH‹?H‰yH�zH‰xëÃH‹PëðH‹PëØH‰êH�5H¼L‰ç1ÀL‰T$(èªL‹T$(é•þÿÿAWI‰÷AVAUATUH‰ýSRë'ff.„ff.„€AˆIƒÇL‰õ¶]„Ût9L�u€û%uå¾}A‰ýè9A‰Äƒøÿt,¾}è(ƒøÿtÃAÁäL�uA�ëµAÆX[]A\A]A^A_ÃA€ý[uŸL�eºH�5ù»L‰çè'Rüÿ…Àt>ºH�5è»L‰çèRüÿ…ÀtZºH�5Ø»L‰çè÷Qüÿ…ÀuL�u»"éEÿÿÿL�u»,é7ÿÿÿºH�5ª»L‰çèÃQüÿ…ÀuL�u »}éÿÿÿL�u »{éÿÿÿºH�5~»L‰çè�Qüÿ…À…çþÿÿL�u» éÙþÿÿf„ATI‰ü¿UH‰õSèl`üÿL‰çH‰ÃèVüÿH�58»H‰ïH‰1ÀH‰Cè¹Wüÿ…Àt7H�5&»H‰ïè¦Wüÿ…Àt$H‰ïèÊUüÿH‰CH‹ïÀH…ÀuH‰ãÀ[]A\Ã1Àëàf.„H‰ÂH‹@H…ÀuôH‰ZëÛff.„AVAUATI‰ôH�5™®UH‰ýSè¶[üÿH‰ÃH…Àt2E1íHƒ= Å… ÀüÿEˆ,$H‰ïèq€=ºÂuH‰Ø[]A\A]A^À=¥Âtë鸿üÿéÀüÿf„‹ª½H�S½ƒøƒÐÿH‹ÂÄ�GÐ< w@¾ÿ�GÐÃ�G¿<v �WŸƒÈÿ€úv Ã@¾ÿ�GÉÃ@¾ÿ�G©Ãff.„AUATI‰ü¿(UH‰õSH‰ÓPL‹-|­è?Åþÿ1Ò1ɉPH‰I‹UH‰I‰EL‰`H‰hH‰X ^[]A\A]ÃfDS¿ H‹;­èþÄþÿ1Ò1ÉÇ@H�xH‰H‹SH‰H‰CH‰HH‰x[é3UH‰õSRH‹H…Àu'H‰û¾(¿èÀ]üÿH� ©lÿÿH‰(H‰H H‰X[]ÃH‰òH‰ÑH‹H…ÒuõH‹H‰H‰(ëãf�UH‰ý¿SRè ^üÿH‰ïH‰ÃèµSüÿ1ÉHƒ=sÀH‰CH‰ tH‹ƒÅH‰H‰yÅX[]ÃH‰NÀëì@AU1ÀL�-ô¸ATI‰üUH�-x¬SQë-Hƒ»ÀtH‹ShL‰îL‰ç1ÀèiUüÿL‰çÿ“À¸HƒÅH‹]H…ÛuÊ…ÀtX[]A\A]úH�5.*1ÿèïPüÿZL‰ç[H‰Æ]1ÀA\A]éUüÿff.„H‹Ù¬H�bÄH9Ѓ/îüÿH�PH‰¾¬H‹¯«H‰H‰=¥«Ãff.„�H‹¡¬H�PH‰–¬‹TÅÇJʼnÃff.„U1ÒH�5ݹ1ÀS1íH�ì˜è•QüÿH‰æH‰ÇH‰Ãè·Tüÿ…Àu‹D$%ð=@@”ÅH‰ßè‰\üÿH�ʉè[]Ãff.„f�AWAVAUATUH‰õSH‰ûHƒìL‹'H‰÷M…äuèüQüÿH‰HƒÄ[]A\A]A^A_ÃèõOüÿM‰æI‰Å¾CÁ‰D$ A‰ÇL‰êL‰öH‰ïèMüÿ…ÀtT‹t$ L‰÷è#PüÿH…ÀuZL‰çè¶OüÿI�|èü[üÿ¾ ÁH‹I‰èH‰ÇI‰ÄH�5å 1Àè«YüÿH‹;èÃ[üÿL‰#érÿÿÿC¶.„À„eÿÿÿD8øušé[ÿÿÿL�pézÿÿÿff.„UH‰ý¿@SQè°TüÿH…À„FñüÿÇ@@¿@H‰Ãè“TüÿH‰CH…À„%ñüÿÇC H‰îH‰ßèÄH‰ØZ[]Ãff.„f�H‹Ù¸H‹Ú¸AVHc5 ¸H‹ ZÄAUATL�$ÐUSI‹$H‹ý·H‹PH�t2H9Þ‚ñüÿH)˃x4„Lƒë1À9Ã�ÙðüÿI‹,$ƒ}8„oñüÿ‰Ø÷ÐEH‹}…ÀŽñüÿº 9ÐNÐHcÃHÇH‹Q¸A‰ÔH‹?¸H‹ ÐH…À„ÊðüÿH…É„ÁðüÿHƒ9„·ðüÿH‹ €·H…É„§ðüÿIcÔ¾è‚LüÿH‰ÅA9ÄŽkðüÿH‹=W·èÊKüÿ…À…ðüÿH‹Û·H‹Ü·‰-·H‹ Љi…í…Oðüÿ…Û…æðüÿH‹=·A¾èe H‹ž·H‹Ÿ·H�,Ћ ѶL‹eËA;\$�ÏðüÿI‹D$‰µ¶HcÛÆH‹EH‹@ÆDH‹EH‹@H‰æÂ[D‰ð]A\A]A^ÃHƒë…cïüÿA¾ëâAUATUH‰õSH‰ûAPèJüÿD‹(I‰ÄH…Û„ŸðüÿH‹C1Ò1ɉSÆH‹CÆ@H‹CÇC(H‰CH‹ê¶‰K8H…ÀtH‹Ó¶H;Ðu èxçþÿH‹ɶH‰+ÇC4H…Àtë±Hƒ=8µSH‰û„ÒõüÿH‹'µH‰X(1À[Ãff.„@Hƒ=µSH‰û„]öüÿH‹÷´H‰X01À[Ãff.„@Hƒ=Ø´SH‰û„OýüÿH‹Ç´H‰X81À[Ãff.„@Hƒ=¨´SH‰û„5ýüÿH‹—´H‰X@1À[Ãff.„@ATI‰ü¿0U‰ÕSH‰óèú¹þÿH‹SÇ=H‰P‹SÇ@‰PH‰X L‰`@ˆh([]A\Ãff.„H‹£H�PH‰ö¢‹´»Çª»‰Ãff.„Ãff.„@SH‰û¿è"SüÿfHnËó~¶€ ¾¶€Æ@flÁH‰¶[Ãf.„AWA‰×AVI‰þAUATL�gLUSH‰óQ…ÒuL�gHL�-™ö¶„À„/ýÿ�P߀úW‡Mýÿ¶ÒIcT•LêÿâAƒ $HƒÃëÑAƒ $ ëóAƒ $ëìAƒ $ëåDH‹¢H�PH‰¢‹ĺǺº ‰Ãff.„H‰òE1ÉH‰þE1À1ÉH�=‹ºë f„AWI‰×AVI‰ÎAUM‰ÅATM‰ÌUH‰õSH‰ûHƒìH‹H…Òu=¿8èþQüÿ1Ò1ÉH‰H‰hL‰xH‰H‹‰H0L‰pL‰h L‰`(HƒÄ[]A\A]A^A_ÃH‹rH‰ïH‰T$è*IüÿH‹T$…ÀtH‰ÓëœH‹H‰ë”@UH‰ý¿SH‰ó¾pPèèPüÿH�Ñ_ÿÿH‰hH‰X8H‰PhÇ@`ÿÿÿÿZ[]Ãf.„S1öH‰ûèu€=n²tH‹M²ÇÇCH‰C1ÀH‰C [Ãff.„�AWAVAUI‰ÕATUSH‰óHƒìL‹%ŵH…ÿtyH‰ýM…ä…�H�{è‹H�{8è‚L‹cM…ä…ŠýÿL‹c8M…äucL‰kXH‰k€}tQ‹˜¸ƒÀ‰�¸H‹hµ‰CH�^µH…Òu$H‰HƒÄ[]A\A]A^A_ÃM…ä…ýÿH�- Áë�H‹H‹ëÏ1ÀëºL‹5"µM…öu+M‹$$놀?„ÐýÿI‹D$€8„ÂýÿM…ä…$ýÿé>ÿÿÿA¶D$I‹~ ƒàH…ÿ„Âýÿ„À…qýÿM‹~(M…ÿuM‹6ë¤é*ýÿ�P1Òè8üÿÿZH‰ÇéÏÿþÿff.„@1ÀÆ̰H‰ø°H‰ù°H‹ÒŽH‰5û°H H‰æ°é¹ ÿÿf„H‹ѸHc²·¶ s¬ˆ H‰q¬¶ˆ`¬Æ1À‰�·Ãff.„�AWAVAUATUSH‰ûHƒìH‹1ÿH‰ÊH…Òt¶BH‹H‰ÆÀèƒæƒà CH÷ëàH…ÿuH‰KHƒÄ[]A\A]A^A_ÃHÿ1ÉH�3%ÿÿI‰ÞH�5é"ÿÿL�kè LüÿL‹#H‰CL‰åM…ä…®ýÿ1ÀI‰EH‹CI‰ë°ff.„USH‰ÓHƒìH…ÿ…- ýÿH‰ØHƒÄ[]Ã@SH‰þHƒìH‹=9¬H…ÿ„j ýÿH‹!¬Hƒ<Ç„X ýÿH‹<ÇèÝôÿÿHƒÄ[é³ÜþÿATI‰ôUSH‰û¿èLNüÿH‰H‹³H‰ÅH…ÛtH‹{L‰æèžEüÿ…Àu.H‰]H‰è[]A\Ã1ÿºH�5ÀÈè‹AüÿL‰æH‰Ç1ÀèîÜÿÿëÒH‹ë¸€USH‰ûAQ€=š´t(èkîÿÿH�5´È1ÿºH‰ÅèEAüÿH‰îH‰Ç1Àè¨Üÿÿ‹â¶ƒèƒøvYH‰Ú1ö[H�=H«1À]é„ÜÿÿH˜H�¶H�5«1ÿH‹,ºèô@üÿAXH‰Ú1öH‰ÇH‰é[1À]éNÜÿÿff.„UH‰õS‰ûH�ìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH�„$ðÇ$H‰D$H�D$ ÇD$0H‰D$…Ûu0H‹‚‹H‰îH‰â1ÉH‹;èÂàÿÿH‹3¿ è%DüÿH�ÄØ1À[]Ãû„€H�5Wª1ÿºèý?üÿH�=3ªH‰ÆƒûuH�=!ªE1ÀH‰êH� ë¼1Àè#AüÿH‰ÃH‹ ‹H‹8è�EüÿH‰â¹H‰ÞH‹-w‹H‹}è6àÿÿH‹}è]EüÿH‰ßèLüÿékÿÿÿ1ÿºH�5©è}?üÿ1ÉH‰îH�‚¼H‰Ç1Àè·@üÿH‰â¹H‰ÃH‰ÆH‹’ŠH‹8èÚßÿÿH‰ßè²Küÿéÿÿÿff.„f�ATL‹%/šUH‰õS‰û¿8èæ±þÿ1ÒÇ@H‰I‹T$H‰I‰D$H‰h‰X[]A\Ã�UH‰õSH‰û¿(Pè­±þÿH‹SÇ!H‰P‹SÇ@‰PH‰XH‰h Z[]ÃfDH9=A¬u0H‹0ŠH H9K¬u€=°uH‰¬Ã1ÀH‰¬ÃfDS¿H‹k™è.±þÿ1ÒH‰Ç@ H‹SH‰H‹¬™H‰CH‰P[Ãf.„USQ¶V®‰Á‰Âƒáƒâ€éti„Òu öD®um¨tO€=2®ˆ·ýÿè”H‹ ¯H‹-þ®H9Ý‚€ýÿHƒ=õ¨uH�=…¨èç9üÿH‰ÃH…À… ýÿX[]À%ã­ë¨H� £®„ÒtŒë—é%ýÿ„US‰û¿PH‹-‡˜èJ°þÿ1Ò‰XH‰H‹UH‰H‰EY[]ÃHƒìH‹=-¨H…ÿt¶¨ör­uH„ÀuHè÷ÒÿÿHƒ=G®uH‹=Þ¬è±;üÿH‰2®Hƒ=2®uH‹=Á¬èT9üÿH‰®HƒÄÄÀt½1ÒH�t$è¨9üÿH‹D$€8…ïýÿë¡„ATUSH‹õ¯H…Û…Ýýÿ[]A\ÀH‹¬H…ÀtÃH‹T¶H9M¬uSH‹«H…Û…xýÿH‹3¬[ÃH…ÀtáÃRè:H‹ã¬H‹PƒzuH‹€H� {¬H‹€˜ H‰HXXÃff.„H‹=©¬H‹š§‹5œ§H‹GH‹€˜ÿàff.„@USH‰û¿PH‹-ö–è¹®þÿ1ÒÇ@ H‰H‹UH‰H‰EH‰XY[]Ãf.„H‹ɪH‹€€H…À„+ýÿÿà€ATL‹%Ÿ–UH‰ý¿ S‰óèV®þÿ1ÒH‰Ç@I‹T$H‰I‰D$ˆXH‰h€`H‹³¦[]H‰úªA\Ãff.„@H�5)§H�=b«é�:üÿff.„f�SH‰þH‹=m«1ÉA¸ºè3>üÿH‰ÃH…À„zýÿ€{…’ýÿ1ÀH‹=<«H‰ÞH‰C(·Cf%þf f‰C[éç=üÿ€AVU‰ýSH‹“©H…ÛtH‹{H…ÿuH‹{0H…ÿu]H‹[ëã[]A^Ã1öè*÷ÿÿ@„ítà€=¨„GýÿH‹ù§H‰C H‰C8H‹{0H…ÿtÄ1öèùöÿÿ€=ò§„óýÿH‹ͧH‰C(ë£1öèØöÿÿ@„ít—ëØ�H�5ù¥H�=Rªé�9üÿff.„f�H�5¹¥H�=2ªém9üÿff.„f�€=««…¦AWAVAUATUSH‰ûHƒì¶GHƒà,tHƒÄ[]A\A]A^A_Ã@„öuZ¶Ü©ƒà<uÞ·GJfÁèƒà<uZH‹¯ð¿H…í…*èL¬þÿ1ÒH‰H‹x¨Ç@H‰XH‰H‰c¨ë’·GJfÁèƒà<w\„À…{ÿÿÿéÕ!ýÿÄÀ„ä!ýÿ<†eÿÿÿ<…Ô!ýÿ诿H‰Ãèâ«þÿH‹¨1É1ö‰HH‰0H‰XH‰H‰û§é'ÿÿÿ<…~!ýÿèq1É1Ò¾H‰Çè�©þÿH‰ÃH…À„D!ýÿH‰Çè<3ÿÿƒ=¤…!ýÿ€=H¨… !ýÿöCa…ê ýÿH‹C0¶@Hƒà,…× ýÿH‰ßè-7ÿÿH‹{0H�5¢¨H‹Gÿ�È„À„€ ýÿ€Kaé�þÿÿè"«þÿL‹-;§Ç@I‰Ä1ÀI‰$I‰\$M…íuL‰%§L‰%§éWþÿÿL‹sX1ÒAƒ}…ÿýÿI‹ML‹}H‰T$I‹]H‹�ðL‰ÿH‰ $H‹0èÖ;üÿ…À…ÀýÿH‹ $H‹T$L;qX‚;ýÿH…Ûu(H‰ØL‰ëH‹±¦H‹ H9 uL‰%¢¦I‰$L‰#é×ýÿÿéýÿf„¾5ħ@„ö„H ýÿé 8üÿff.„UH‰ýSAPèÔ;üÿH‰ÃH…Àt0¿è"ªþÿ1Ò1ɉPH‹œ£H‰H‰XH‰H‰‹£H‰Ø^[]Ã1ÿºH�5öÆè7üÿH‰îH‰Ç1Àè|Òÿÿë®f.„¿@ë f„ö§uÃSH‹6§ƒ{@uÆCR‰þH‰ßèšÆCR[Ã@H…ÿt+SH‰û¿è}©þÿfHnËó~H§flÁ[H‰9§ÃÃff.„@¿ ë‰f„ëîff.„¿@éæ8ÿÿfDH‹ɦ¶s¦H‹RƒÈ ˆf¦‹R …Òtƒêu ƒà߈Q¦ÃËü¥ƒútôƒútå…ÒuëH‹“¤H…ÒtßH‹J0H…É„h.ýÿH‹Qƒz t¾ÃfD¿ éf8ÿÿfDëîff.„H�ìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH�„$àH‰â1ÉÇ$H‰D$H�D$ ÇD$0H‰D$èÊÕÿÿH�ÄØÃf�AWAVAUL�-S¥ATUSH‰ûHƒìxH‹=‘¥L‹%¢¥‰t$L‰îèž7üÿI‰ÇH‰ÅM…ÿtI‹H…ÿ„ÊèÁ5üÿ¨„ M‹?ëÜ€{RuyH‹W¥H…Ûuëkff.„DH‹›H…ÛtO¶CHƒà<uéöCD@tãH‹CƒxuÙH‹“·‚Œ fÁè¨ uÃHƒº`t¹L‰îH‰ßèN5üÿ…Àyªéµ.ýÿ1ÒL‰%ä¤I‰$HƒÄx[]A\A]A^A_ÃI‹H…ÿt€{Ru5¶V¤ƒà,t'I‰îM9÷t.I‹~H…ÿ„þèâ4üÿ¨„ñM‹6ëÜèÐ4üÿ¨…ÿÿÿëÊ1ÀH�=½VÿÿL‰=.­H‰­èJQÿÿH‹­H…ÀtH‹x0è•4üÿ¨„ÔþÿÿóAoG€=@£fI~Æ)D$0fÖD$@…›H‹Ó¬H…Àt%H‹@H�|$@º¾H‰D$Hèñ„À…€þÿÿH�L$0L‰$$1ÀH‰L$(H‰l$H‰\$ ‰ÃD‹D$H‹t$(¹‰ÚH‹=%£è  „Àt2L‹$$H‹l$H‹\$ é0þÿÿI‹wI‹~èì6üÿ…À…úþÿÿéþÿÿél-ýÿH‹=Û¢H…ÿ…Â-ýÿHƒ=Ò¢„&H�= èà.üÿH‰ÇH…ÀtD‹D$H‹t$(¹‰Úè" „Àu‚H‹=£L‰îE1öèÌ0üÿI‰ÄAöÆu M…ä…2-ýÿE…ö…Uÿÿÿ€=²«… 1ÉH‹=;¤fïÀ1ÀL�5¬ŸH‰L$P1ÉH�5®ŸL‰òD$XL�d$Pè~3üÿL‰çH‰ÆH‰Åè@&„Àu)H‰ïè„>üÿH‹=í£1Ò1ÀL‰öèQ3üÿL‰çH‰ÆH‰Åè&H‰ïè[>üÿH‹|$PH…ÿtè\(H‹|$PH‰«è;>üÿÆ «H‹ýªI‹H…Àt9óA~GfHn׉ÚH‰ÇD‹D$H�t$P¹flÂ)D$Pè „À…cþÿÿI‹è¦1üÿH‹-çšI‰Æëf.„H‹mH…ít]€}uñH‹}èx1üÿI�|è¾=üÿH‹UI‹OH�5W H‰ÇI‰Ä1Àèr;üÿH�|$@º‰ÞL‰d$H蜄À…èýÿÿL‰çèl=üÿëš�C»ƒø…¬ýÿÿI‹GM‹w1ÿºH�5cÈL‹$$H‹l$H‰$H‹\$ è¼0üÿH‹$L‰öH‰Ç1ÀèÌÿÿéÍûÿÿéÖ+ýÿ�AWAVAUATI‰ÔU‰õSHƒì(Hƒ=Å�L‹?„Â.ýÿHcõL‰ÿHÁæè}0üÿH‰D$H…À„.ýÿE1öL�-�eD9õ~]I‹GL‰ÿÿ�H‰ÃH‹D$J‰ðH…Û„ã-ýÿI‹T$I‹<$L‰;H…Ò…ò-ýÿ1ÀH‰{H‰CA€|$‡¸-ýÿA¶D$IcD…LèÿàH‹t$‰êL‰ÿèÄ3üÿ1ÀHƒÄ([]A\A]A^A_ÃH‹\{¹€HH‰C I‹G‰KƒxuPH‹H…À„õ,ýÿH‹Pƒz…ç,ýÿHƒ¸„Ù,ýÿA€|$„ø,ýÿA‹L$ƒù‡þ,ýÿH�{f¶CIIƒÆIƒÄ0éþþÿÿH‹Üz1ÉHë�¹€I‹t$ ƒÉH…ö…-ýÿH�5ŸL‰ÿ‰L$è©1üÿ‹L$éOÿÿÿ1ÉëÏff.„�H‹‘œH…Àt H‹@0HqœH‹rzÆPœH H‰fœÃff.„f�Hƒì‰=&œ1À1ÒH‹5œH�L$H‹=žÆD$ƒó›H‰4¢ÆÍ¡èp?ÿÿHƒÄÃff.„SH�5 œH‰ûèP2üÿ…À„š-ýÿH�5ø›H‰ßè92üÿ…À„y-ýÿH�5é€H‰ßè"2üÿ‰Â¸…Òu[ÃH�5½ H‰ßè¦Çþÿ„À„m-ýÿH‹ oyHƒÃ1À¶3H‰òöDq„<-ýÿ¶söDq„--ýÿHƒÀHƒÃ€;uÓ[Ãf�öž u:¶ð�ƒà<t#‹3ŸH‹=ž…À…/ýÿ1ÒH�5kFÿÿé–4üÿ€=_�uÔÃff.„�H‹ÆëšH‰ ›H‰›H‰›H‰5›éåóþÿDUH‰õSH‰ûAPH‹H9…Ð4ýÿH‹E1Òó~CEH‰CH‰Y[]Ãff.„f�é‹öÿÿff.„P¹ è1ÀZÃ�AWH�*›AVfHnàH�$›AUfHnèH�(›ATfHnðH�´A‰ÌUfHnø‰õSH‰ÓH�ì˜Hƒ=ß™L‹/ó~4Ió~ 4Ió~4Ió~4IflÄflÍflÖflß)D$0)L$ )T$)$„7ýÿE1öA9î�H‹3H‹=•œ1Ò1ÉA¸è^/üÿI‰Ç¶C�Pþ€ú†M…ÿ„#AöG…”6ýÿE1ÀHƒ=lœ…Y6ýÿA¶O�Aÿ<†?6ýÿ�Aý<‡•5ýÿA€I‹G(„}5ýÿH‹�à¶CH‹ :œƒè<†³5ýÿH9Ñ„M5ýÿI9Õ…&5ýÿA¶G¨uoAƒøtiAƒø„5ýÿH�=­›¶‰Ñƒá€ùtRƒàƒâÐ…î6ýÿ€ù„å6ýÿ¸€=�–‰C(…6ýÿAƒÆHƒÃ0éçþÿÿH�Ę[]A\A]A^A_øëÊD‰àëÅH‹H‹=�›E1À1ÉA¹H�5-›è)üÿH…Àu$¶C<<�<5ýÿvˆét5ýÿ<„{ÿÿÿég5ýÿI9Ç…Œ5ýÿI‰ÇE1ÀH…À…ÁþÿÿëÂDHƒ=è—SH‰û„7ýÿH‰ßè¶,üÿ¾H‰ÇèéšþÿH…À„ø6ýÿ€Ha€1À[Äé‹ôÿÿff.„AW1ÀAVAUATUSH‰ûHƒìH‰D$I‰æL�l$L�d$L‰ñL‰êL‰æH‰ßè*-üÿH‰ÅH…Àu\‹<$�ÿu'H…ÛtH‰ßèº(üÿ=„†HƒÄ[]A\A]A^A_Ãè«)üÿ1ÿºH�5MÄH‰ÅèÕ)üÿH‰îH‰Ç1Àè8Åÿÿ믃|$ºuWH�5P˜1ÿè¬)üÿI‰Ç1ÿºH�5;�è–)üÿH‰êL‰þH‰Ç1ÀèöÄÿÿH‰ïèî5üÿé>ÿÿÿ¾©H�=xè,ŽýÿédÿÿÿH�5í—1ÿèU)üÿI‰Çë§Ãff.„@UH‰õH�5Ü—SH‰ûAQèª+üÿHƒø‡¢5ýÿH�5˜xH‰ßèÁ/üÿH…À„³5ýÿAXH‰îH‰ß1Ò[]éw*üÿ€‹N”…ÀuÃèƒø‡á5ýÿAWAVAUATUSH‰ûRH…Ût&‹Cƒøt*w}ƒø„­5ýÿƒø u H‹{èµÿÿÿH‹ëÕX[]A\A]A^A_ÃH‹k@D‹=í“L�--—L�5,—H…ítÑL‹eL‰îL‰çèW,üÿ…ÀtL‰öL‰çèH,üÿ…Àt‹E8…Àu!D‰}8ÆCbH‹mëăøu•H‹=Sžè>ÿÿÿ뇃øtƒøuÙAƒÿuÓÇE8ëÊAƒÿuÄÇE8ë»@AWI‰ÿAVAUATUSHƒìI‹H…Û„ïM‰ü1Ò1íA¾þÿÿÿ‹Cƒø uPI‰ÝH…ÒtoH9Z0…}9ýÿD‰ð+ƒ¤‰ƒ¤H…í„¿M‹$$I‹$H…Ûto‹Cƒø uL‰êI‰ÝH9Z0tÇé?9ýÿI‰Õƒø„ʃø„%7ýÿM‹$$I‹$H…Ût4L‰êë�H‰éH‰Ý¸þÿÿÿ+ƒ¤‰ƒ¤H…ÉtYM‹$$I‹$H…ÛupI‰íH‰ÍºþÿÿÿH…íuë(ff.„�H‹m0H…ít‰Ð+…¤‰…¤I9íuäHƒÄ[]A\A]A^A_ÃH‰ÝM‹$$I‹$H…Û„®8ýÿ‹Cƒø u:I‰ÝH‰êéøþÿÿ‹Cƒø uH‰êI‰ÝH‰ÍéâþÿÿH�{èŸþÿÿé1ÿÿÿI‰íH‰ÍéÿÿÿI‰íé ÿÿÿ€AWAVAUATUSH‰ûH‰÷HƒìhL‹f‰T$A€<$/‰L$D‰D$„íH…Û„à€;„×H‹fInÌL‰çfHnÀH‰D$flÁ)D$PèK&üÿL�xH�D$PH‰D$¾5‘—H‰ßèŽ&üÿH‰ÅH…Àu H‰ßè&üÿH�,I‰îI)ÞK�<7è[2üÿI‰ÅH‰ÇH9ëtH‰ÞL‰ñó¤BÆ0/J�|0L‰æ1Ûèd#üÿ‰ß¾$Lïè5&üÿH‰ÃH…ÀugH‹|$‹T$L‰l$X‹t$èL‰ï‰Ã„Àt3èè1üÿHƒÄh‰Ø[]A\A]A^A_Ã1Ûëë‹t$HƒÄh‰Ê[]A\A]A^A_éÚèµ1üÿ€}tØH�]é)ÿÿÿ¾/H‰ßè¹%üÿL‰ïH‰D$0I‰ÆH�CH‰D$ è@%üÿH‰D$(M…ötAÆ€{{H‹D$ tTL�p¶ýÿ‹$÷Щ„nö$„>ýÿ1ÛH…í„…H‹uHH…ö„3>ýÿD‹~$M…í„«I‹”$àH‹=\�L‰áAÿÕ„À…ŽH‹m0ëºD‹»¨é=ÿÿÿ1Ûë3H‹uHH…ö„ò=ýÿD‹~$M…ítuI‹”$àH‹=�L‰áAÿÕ„Àu\H‹m0H…íuÈH…Û•ÀM…í”ÂE1íÐu1ÀH‰D$é”þÿÿHƒ|$…úL‰óHƒÄH‰Ø[]A\A]A^A_Ë$A1ÇA€çHDÝé_ÿÿÿ‹$D1ø© @„?>ýÿ% A�ç@D øHDÝé{ÿÿÿ1ÛëI‹”$àH‹=q�L‰áAÿÕ„Àu#H‹m0H…í„ZÿÿÿH‹uHH…ö„ =ýÿD‹~$M…íuÄ‹$A1ÇA�ç@HDÝëÊéy=ýÿ1ÛH…í„!ÿÿÿH‹uHH…ö„ó<ýÿD‹~$M…ítI‹”$àH‹=üŽL‰áAÿÕ„Àt‹$A1ÇA�ç@HDÝH‹m0ë±H‹D$L‰0éùþÿÿff.„AWAVM‰ÆAUI‰ÍATI‰üH‰×UH‰õL‰ÆSH‰ÓHƒì8è˜Aÿÿ„À…ÅL‰öH‰ßèeIÿÿ„À…²¿ ès*üÿfïÀA€|$`@fHnÃI‰ÇAD$@uH…íte‹E8ƒøt]…ÀtYI�T$0H� QTL‹2M…ötOA€|$`…TH…í„›‹E8ƒø„�…À„‡ƒè¶uýÿH‹3H‹MPH�}M‰àH‹Sè¿@ÿÿH‹sH…ö…i>ýÿH‰ß[]A\év'üÿfDAVSHƒìH‹ŠH‹=#‘H‹€øH…Àt1Ò1öÿÐH‹=R‹H�5Ù…èVüÿH‹=÷�H‰ÃH…ÀtGH�t$ºè˜üÿ�K$@ H‹=Ò�H‰ƒ H‹D$H‰C@è%ðÿÿHƒ» H‹=®�„×=ýÿè»üÿ1ÉH‹òˆH‰ “�H…Àt 1ÒH‰P8H‹@HëïHƒÄ[A^Ãf�AT¾.I‰üUSHƒìè;üÿH…ÀtR¶PH‰ÅH‹€eöPt>H�t$H�}º è/üÿH‰ÃH‹D$€8uI�D$H9ÅtH�ûÿÿÿw ‰ØHƒÄ[]A\ÃÈÿëòºH�5=‰L‰çè+üÿ…ÀtºH�5,‰L‰çèüÿ…Àu·¸ÿÿH)ØH‰Ãëªf�H‹5™„H‹=š„é=Vÿÿff.„f�H9=™…SA¹H‰ûH‹A”ÀH�=�Q1öë,�Qùƒú ‡‚L‰ÊHÓâ÷ÂØ…ü<ýÿ÷€%tZH‰ÃH‹H…Àt]H‹‹HƒùwăéƒùwâHc�HúÿâE1À1öëÒH…öuÍH‹PƒztÃH‹R€:.uº€zu´E„À„�<ýÿE1À릃ù u H…ö…–<ýÿH‰ÞH‰ð[ÀU1íSH‰ûRH;-©ŽrX[]ÃH‹”ŽH‹<èHƒÅÿÓëà„SH‰øH‹H…Ût‹Sƒúu[Ça>ýÿH�{ƒúu èÖÿÿÿHƒ8uäH‰ØëÏff.„H‹59ƒH‹=:ƒéíTÿÿff.„f�H‹5 ƒH‹= ƒéÍTÿÿff.„f�SH�GèHƒìH‹_@H;_ðu!H‹H…ÀtH;XXu0ƒ¸¼xéHƒÀHƒÄ[þhH�=ÒfH‰D$èz|ýÿH‹D$ëÂ1ÀëÙff.„¶ɇƒà<„óVƒ=ö„t Çê„1É1ö1ÿ‰ 6…èùèdH‹�ƒH…À„ƒD¶‡L‹ ŇAƒâ ëff.„@H‹@0H…À„R‹�¤…ÒxéH‹PHH…ÒtàHƒzHuÙ‹r$÷Æ uÎH‹JH…É„"H;Qu»H‹ºðH…ÿ„»D‹G$A÷À€uA�àu•E„Òu�H‹¿ðH…ÿ„�D‹G$A÷À€uA�à…fÿÿÿE„Ò…]ÿÿÿH‹¿ðH…ÿtaD‹G$A÷À€uA�à…7ÿÿÿE„Ò….ÿÿÿH‹¿ðH…ÿt2D‹G$A÷À€uçA�à…ÿÿÿöd† tÑéúþÿÿf.„¶¸¸@öÇ…l<ýÿƒÏ�΀@ˆ¸¸‰r$H‹RH…Òt6H‰JH…Ét;H‹@0H‰QAƒ©¨H…À…®þÿÿXÃI;‘˜„×þÿÿé�þÿÿI‰‰�1ÒH…ÉuÅAƒ©¨I‰‘˜ékþÿÿÃf.„H…ÿ„ÿ;ýÿƒ¿¤x H‹GHH…ÀuH‹8ëßÃff.„AV1ÀAUATUH‰ýS@¶Þ‰Þ‰ƒÇ­‚èȃ=ù‚…¤¶W…¨@„ÊH‹5õ‚H…ö„ºH‹ƒH‹Ö‚L‹-Ç‚L�tÿH÷ØI!ÆH‹e…M‰ôH‹€˜I)ÔH…À„ç‹=ÙŠH)Öë!ff.„f„H‹@H…À„»‹H$öÁtëH‹P0L9êrâH9òsÝ�á�ù„L‹P@‰ùIÓêL‰ÑHÑLâA¼H)Ê‹H|IÓäI÷ÜI!Ôë¢H‹5‚H‹=<‚L‹%‚H�OÿH‰òI‰ÉH÷ÚM!ÁH!ÊtM…ÉuyÇá�¨@t$H‹î�H…Àtó~Ñ�fHnÈflÁ…[]A\A]A^ÃǦ�M9ì‚u:ýÿL‰%ž�èɉÞH‰ïèOL;5˜�¶äƒs–é`:ýÿH‰ùL1ÆH÷ÙH…΄uÿÿÿLÊH9ׂiÿÿÿé:ýÿÇE�ëŠH‰ÑéÿÿÿƒÉ€ƒ=Ò€I‰øtƒJ�D¶ÎH‹5£€1É1ÒH�=°‚é‹Rÿÿff.„€=‰uATUSH‰ûH‹0H…ÿtöGD@u[]A\ÃÃèÆüÿH‰ÅH…À„£?ýÿH‹ëˆH…Û…§?ýÿëׄH‹é�ÿ`@fDQH‹=HƒH�5ñ‚èŒüÿ…ÀˆÙ@ýÿ@•ÇX@¶ÿë f„AWAVAUA½ ATL�%»‚USHƒì@ˆ|$ L�t$ ¶|$ èH‹=ê‚ÆD$ H‹Gƒx…߀=@Ž…1H‹=³�1öè<`ÿÿH‹e~ÆŽH…Ûu"ë@ff.„ff.„�H‹[0H…Ût H‹«˜H…ítë‹E…À…Ç@ýÿH‹[0H…ÛuàH‹=`‚H‹Gƒxu^A¶$ƒà<tRH‹‡Hƒ=[…H‹€˜ H‹XHu1ÒH‰L‰òL‰æèÞüÿ„À„AýÿH‹=‚H‹‡H‹€˜ H‹PHH9ÚuA€|$ uIH‹Gƒxu!Hƒ=ÿ„uH‹€xH‹€0H…À…�@ýÿHƒÄ[]A\A]A^A_ÃAƒý†d@ýÿÆD$ Aƒí…£þÿÿé³@ýÿH‹B}H…Û…ÿÿÿé.ÿÿÿ@H‹ÙH…ÀtH‹P H‰P81ÒH‰P@H‹@H…ÀuéH‹}H…Àt�€ ¸üH‹@0H…ÀuðH‹9�H‹€�H…ÀtAff.„ff.„€H‹P@H‰PHö@%…jAýÿHÇ@@H‹@H…ÀuÝÃÃff.„USHƒìƒ=›€†GAýÿ€=y€ˆ:Aýÿ@„ÿt!¿èqáÿÿ¾1ÿè%ÿÿÿHƒÄ[]éºúÿÿHƒÄ[]Ãé;ýÿÿff.„é+ýÿÿff.„€=ª�…¸Aýÿé>aÿÿff.„H‹Ù~H‰þH‹=÷…H‹€ðH…À„�Aýÿÿàff.„f�ATUSHƒì¶Á‰Âƒâ#€ú„ĉ»÷ҀℲƒàcH‹-€<"„H‹50zH…ö„œH‹= 1É1ÒA¸èiüÿH…ÀtB¶x�Wý€úw6H‹H(H‹Q`H…Òt)H‹=”H‹qXHp0Hr0è#üÿ„À„AýÿHƒÄ[]A\ÃH‹=Ãy1ÒH�t$èŸ üÿH‹T$€:„Aýÿöú~t*„ÛtÉé=Aýÿ¶€yéBÿÿÿH‹5Œl1ÛH‰5{yéOÿÿÿH‹=H�5n~èüÿH‰ÅH…À„a@ýÿ„Û…CAýÿH‹u0H‹=ì~è‡üÿ„À…dÿÿÿéAýÿH…ítYH‹uH‹=¢~E1À1É1ÒènüÿH…À„4Aýÿ¶H�Qý€ú‡$AýÿH‹P(H‹ªYH�ˆ@H9ʃ«þÿÿH9‚¢þÿÿéû@ýÿéÿ@ýÿ€SfïÀHƒì0H‰t$D$H…ÿ…þ@ýÿHƒÄ0[Ãff.„AW1ÿAVAUATUSHƒìhè‹üÿ€=•ƒu>H‹ËyfïÀH…Àt'f�D‹˜¤E…ÛxtH‹PHH…ÒtkH‹@0‚ðH…ÀuÛÆUƒH‹5Í|H�=†_ÿÿè‘þþÿƒ=ò~ÿuGHƒ=ð~ÿH�5i}u6H‹=°}H‹Gÿ�à„ÀtdHƒÄh[]A\A]A^A_ÃH‹@0H…À…sÿÿÿë–L‹5z}H�5#}H�D$\H‰D$0H‰t$ E‹¦¨M‰÷I‹–�H…Òt E…ä…[@ýÿH‹t$ ë‡é1Aýÿf„Hƒ=à‚uÃQè…ÀuZé•ñÿÿXÃH‹™{H‹€èH…Àtÿà¸ÃDSH‹¸yH…Û…KýÿH�=Øuè3dÿÿH�=ÄuH‰==gè dÿÿH�‰uH‰BgH‹{uH…ÛtH‹CH‹;H‰huèƒüÿH‰ßè{üÿë×H‹=š{H…ÿtH‹H‰‹{è^üÿëã[Ãf.„AWAVAUATUH‰ýH‰÷SH�ìˆH‰t$H�5gè(üÿH…À„2Mýÿ¿I‰Ä»€A¾èüÿHÁã I‰ÅH‰,$L‰õM‰îM‰÷‰îL‰÷L‰âM)ïD)þèPüÿH‰ÇH…À„WKýÿè� üÿL�uÿH‰ÆL‰ðL)øH9Æ„KýÿI‰îH‹,$¾ L‰ïèÅ üÿH…Àtƾ#L‰ïè° üÿH…À……M‰èA¶< w&H£Ã‚ìJýÿ„ÀuL‰çèVüÿ…À„^ÿÿÿL‰ïéïJýÿL‰ÇH�5|L‰$èc¤þÿL‹$L‰Á„Àtë'<=t< w H£Ã‚*HƒÁ¶„ÀuãéáJýÿéÜJýÿA¶@< t< uâL‰l$IƒÀL‰t$L‰d$ A¶< „íKýÿ< „åKýÿ„À„½M‰ÄE¶,$L‰àIƒÄA€ý „:KýÿA€ý „0KýÿE„íuÛÆA¶„Àtv1ÒH‰$KýÿL‹cXL`0L�l$ L‰âL‰îè9üÿ‹ C~H‰ê1ÀL‰îH�=myHÓêH‹‹àè…ÿÿH‹CHH9èt H…À…“JýÿH‹C`H…ÀtOH‹ sxH9ˆàu?öx…¯JýÿL‹«˜M…í…®Iýÿ‹ ×}HÓíLåH9-Šƒ‚JIýÿ€=qyuHƒÄH[]A\A]A^A_ÃH‹=xH‹Gÿ�ðH‰ÇH…À~ØèþüÿH‹=÷w1íI‰ÆH‹GL‰öÿ�øI‰Çë"ff.„DM‹,îH‹C`I;E tHƒÅL9ý|ééÖHýÿL‹H0MMM9áråAöEtÞL; é‚L‰L$sÐM‹UM…ÒtÇA€:L‰$t½H‹=xwL‰îè°üÿ„ÀuªL‹$A€:$t H‹=3w1É1ÒL‰ÖA¸èù üÿL‹L$H…À…sHýÿ¿L‰ $èMI‹UH‹4$1ÀH�= xèÿÿéPÿÿÿf�ƒ„&Jýÿ1ÀƒàÃH‹5x¿ éÏüÿff.„@‰úH‹=ïwH� bƒ1ÀH�5¤Té‚ üÿf�AWAVAUATUSHƒìH‹GH‹·QL‹¸xH‹‡H� H‹€˜ L‹p(H‹H I‹F`H‰ $H9Є5KýÿL‹¨ÐH‰ýI‹~@I‹]HH…Û…HKýÿI‹ž H…Ûu èFüÿI‹~@H‰ÃL�KL�gð1ÀH‰ÞL‰ÏL‰áL‰L$óª¿H‹Eÿ�˜H‹EL‰çH�sÿ�˜H‹EH�s¿ÿ�˜H‹4$E‰àH‰ïÇC GNUI‹‡HH‹L$H‹P èŒI‹vX1ÒIuH‰ïM‹f@è–üÿ…À…˜JýÿH‰êL‰æH‰ßèðüÿL9à@”ÅIƒ}HuIƒ¾ uH‰ßèpüÿHƒÄ‰è[]A\A]A^A_Ãff.„@AWAVAUATUSHƒì8D‹gAƒü‡ÍKýÿH�•=D‰àH‰ûH‰õHc‚HÐÿà¿èAþÿÿH‹CHH…À…Pýÿ€{`…,Pýÿ€{a…NPýÿH‹sXH…ö…TPýÿH�=àS1ÀèÕÿÿ€{aL�-E‚…HPýÿ€{`…MPýÿH�=Šx1ÀL�=V=è¥ÿÿL‹s@L�% wM…öt`A‹F8ƒèƒø‡'PýÿIc‡LøÿàH;=]qH‹oHt H‹w@1ÀH�=Ðvè]ÿÿH…í…pè_ýÿÿH‹kH…ít)H‰ïH‰ÞèëþÿÿH‹mëêL‰ï1Àè+ÿÿè6ýÿÿH‹[H…ÛuHƒÄ8[]A\A]A^A_ÃH‰ßH‰îè³þÿÿH‹ëÜH‹HƒÄ81ö[]A\A]A^A_éµúÿÿ¿è ýÿÿH‹CH‹uH‹PH‹xƒú„ÈIýÿE1ä€?.„¯IýÿH…ö„“Iýÿƒú„ÌHýÿH‰ÇH‰òH� ø~H‰îè ÕÿÿH‹C€=µp‹P„/ƒú„~HýÿE„ä…uHýÿHƒ=jp„ H‹}pH‹-fpH…À„ÎHh0H‹=JsH�t$H‰êfÇD$0xè¶ üÿE„ä…ÛHýÿH�l$H‰ê1ÀH‹=4tH�5’uH‰p1ÀèÇüÿH‹{èþèùûÿÿéÇþÿÿH‹E0H‹{@H‰5~è�üÿ‰Âƒø�JOýÿ¿)×èéûÿÿH‹U@H‹u01À‹ IxH�=uHÓêèšÿÿL‹e8L9e0…ìNýÿH‹»ˆH…ÿ„(þÿÿéµNýÿH‹=€rH‰êH�t$fÇD$0xH�l$èç üÿé:ÿÿÿé‡GýÿéHýÿH�=t1Àè:ÿÿÇD$A€~<…:NýÿI‹FH…À…îMýÿI‹vH…ö„ÎMýÿL‰ç1Àèÿÿƒ|$…¥MýÿIƒ>uM‹6éPýÿÿH�=sl1ÀèÜÿÿëèH�=us1ÀèÌÿÿë�H�=|s1Àè¼ÿÿë€H�=ã§1Àè¬ÿÿÇD$émÿÿÿH�=è§1Àè‘ÿÿëãH�=Ts1Àè�ÿÿéBÿÿÿff.„�ƒ…÷Mýÿ�?…ùMýÿH‹G€8.…åMýÿ€x”À¶ÀƒàÃff.„@AWAVE‰ÆAUI‰ýATI‰ÔUH‰ÍSH‰óH�5CnH‰ßH�ì¨è�üÿ…À„’H�51SH‰ßèjüÿ‰Æ…À…†Mýÿfoø�)$foü�)D$¢H�=þ*ƒøv¸‰ñ¢�ã … H‰þH‰ãH‰âL‰ïAÿÔ„À„Ø‹T$A¸ ƒú7wA¸‰ÑL$‰L$‚Å‹t$‰È¬ð�4ÍÈB‰D„‰È‰÷Áà ÁïÁá%ÿÁî ø�æÿ ÈJ� …øÿÿÿ ðH)ÑH�5=<B‰D„H�D$ L� H‰ÚL‰Ïó¤H‰ÇJ�4…èg‹$‹L$ ÈfnÀ‹D$ÉfnÑȉ‹D$fnÚÈfnÈ‹D$fbÃfbÊȉEflÁEH�Ĩ[]A\A]A^A_ÃD$é1ÿÿÿ‰ð¢…À„éþÿÿ¸¢�áH�=‰ …ÏþÿÿH�=¬)éÃþÿÿfoœ1Ò1ÀH‰ã‰T$H�5 H‰âL‰ïH‰D$)$AÿÔ„Àt‚‹T$T$sƒD$ƒú7v_¸x)ÐA‰ÄA‰ÕH�5o;J�|+L‰âèBüÿ‹T$K�,H�|$H�p� Õ‰L‹L$¬Ê‰T H‰Úè2 fo$Eéÿÿÿ¸8)ÐëŸff.„H‹¡I@¶×·P¨u ¨€u¨t�G©Ã�GÐÃPè'ûûÿ�GÉÃAWI‰×AVAUATI‰üUSH‰óHƒì8H‹F`H‹(H‹BH‹@`H‰ïL‹(L‰îèÌüÿ…Àt&I‹GL‹pM…ötI‹vH‰ïè¯üÿ…À„zMýÿM‹6ëâHƒÄ8[]A\A]A^A_ÃAWAVAUATUSHƒìL‹"L‹rL‹.H9· t|ƒzH‰Õus‹V$I‰ÿH‰óL‰çL‰îèBüûÿH‰ÁH…À„YOýÿH‹C@H‰A@‹C|óoC0‰A|‹ƒ´A0‰�´1ÀH‰K`H‰CXöC'…ˆOýÿI‹D$L‰âH‰ÞL‰ÿÿ�P„À„TOýÿHƒÄ[]A\A]A^A_Ã@AWAVAUATUSHƒì(H‹BL‹2H‰D$H9· „݃z…ÓH‰óöF'…ÆL‹~@L‹n`M…ÿ„µM…턬H‰ýèpüÿH‰ÇH…Àˆ0Oýÿ„:OýÿèùüÿH‹L$H‰ÞH‰ïH‰ÂI‰Äè3üÿH…ÀˆrOýÿI‹VL‹‚€upL‰÷1É1ÒL‰îAÿÐL‰çè¨üÿöC%tF1ÀH�T$H‰ÞH‰ïH‰D$èkÿûÿ„À„èNýÿH‹T$1ÉM‰øL‰îL‰÷ènýûÿ„À„ËNýÿH‹|$è\üÿHƒÄ([]A\A]A^A_ÃéOýÿ„H‰þH…ÿt*÷Çÿÿÿ?tB÷Çÿÿt(÷ÇÿuHÁî H�=¡o1Àé>üûÿH�=xo1Àé0üûÿHÁîH�=xo1ÀéüûÿHÁîH�=]o1Àé üûÿff.„�ATUH‰ýSH‰óHƒìHƒ~„ÎNýÿH‹;L‹cè‹üÿI9ăÆNýÿH‹sH‹;H�T$H�FH‰Cè‰ýûÿH…ÀtÍH‹T$¹ÿÿÿÿ‰UH9Ñ‚˜NýÿHƒÄ[]A\ÃDS‰û@€çu@öÃtH�=ji1ÀèD ÿÿöÃtH�=V1Àè1 ÿÿöà tH�=À^1Àè ÿÿ€ãu[ÃH�=my1Àè ÿÿë°H�=,J1À[éøÿÿ„UH�-À3SH‰ûPHƒ=l„5RýÿH…Û„Rýÿƒ{ ‡ýQýÿ‹CHcD…Hèÿà‹;�ÿ…9PýÿH‹{H‹5ÄkAX[]écûûÿH‹{H‹5°kèSûûÿ‹;¾è×H‹[ 뎋;�ÿ5„^Pýÿ�€�ÿt �‡Ùþÿÿƒøwx1öè£H‹5dk¿ è"üûÿH‹5Sk¿(èüûÿH‹{è(ÿÿÿºH‹ 4k¾H�=Ímè üÿH‹{ èÿÿÿH‹5k¿)AY[]éÍûûÿ�‡µþÿÿƒøvˆH‹5ój¿(è±ûûÿH‹{èÈþÿÿ‹;¾è ë¯f.„AUL�-×ATL‰èA‰ôU‰ýS1ÛQëfDƒÃHƒÀƒû4tT9(uðE…ätlH‹5Œj¿ èJûûÿH‹={jƒû4t:HÁãH‰þI‹|è úûÿE…ätBH‹5Yj¿ Z[]A\A]éûûÿE…äu°H‹=ƒâ?HƒàÀA‰T$Hèƒús4AöÁuz…Ò„öýÿÿ¶AƒáAˆL$ „äýÿÿ·Dþf‰DþéÕýÿÿDH‹I‰L$ ‰ÑH‹tøH‰t øI�L$(HƒáøH)ÍêH)èƒâøƒú‚Ÿýÿÿƒâø1ö‰÷ƒÆL‹8L‰99Örïé„ýÿÿ‹A‰L$ ‹Dü‰Düépýÿÿ‹ ‰‹Lü‰Lüé"þÿÿD‰ê·Lþf‰LþéþÿÿI�|$ L‰êH‰Þèíöûÿéþÿÿ„H‰ðAWI‰úH‰×AVHƒàüAUATUSI�‹B óo D‹JD‹z‰D$؉ðB‰BH‰òHÁê H‰\$èH9ðf~L$àWI9ÚƒôH‰|$ð@E‹2‹\$Ø‹D$àA‹zA‹rE‹B A�”x¤j׉؉|$´E‹jD1ø�ŒV·Çè‰t$¸B�´>Ûp $D!ÈC�¼îνÁD‰D$¼E‹B$1ØA‹Z(ÐD‰ÊD‰D$ÌÁÀD1úDÈ!ÂA‰ÃD1úʉÁÁ D1ÉÂ!ÑA1Ó‰ÕD1ÉñD‰ÞE‹ZÁÉÑD‰\$À!Î1Í1ÆþA�¼¯|õ‰èA‹jÁÎ E‹Z<Ήl$Ä!ð1Ðø�¼*ƇG‰ÊA‹jÁÀ1òð‰l$Ü!ÂA‰Ä1Êú�¼ F0¨‰ñÁ 1ÁÂ!ÑA1Ô1ñùA�¼5•FýD‰æE‹b ÁÉÑD‰d$È!Î1ÆþA�¼ؘ€i‰ÐE‹b,ÁÎ 1ÈÎD‰d$Ð!ð1ÐøA�¼¯÷D‹‰ÊE‹B4ÁÀ1òð!Â1Êú�¼ ±[ÿÿ‰ñÁ 1ÁÂ!Ñ1ñùA�¼4¾×\‰‰ÆE‹b8ÁÉ1ÖIƒÂ@Ñ!Î1ÆþA‹zðÁÎ ‰|$Ô�¼"�k‰ÐÎ1È!ð1ÐøA�¼“q˜ý‰ÊÁÀ1òð!Â1ÊúA�¼ ŽCy¦‰ñÁ 1ÁÂ!Ñ1ñùA�¼3!´I‰ÆÁÉ1ÖÑ!Î1Æþ‹|$´ÁÎ Î�¼b%ö‰È1ð!Ð1Èø�¼@³@À‰òÁÀð1Â!Ê1òú‹|$ÐÁ Â�¼QZ^&‰Á1Ñ!ñ1ÁùA�¼6ªÇ¶é‰ÖÁÁÑ1Î!Æ1Öþ‹|$ÄÁÎ Î�¼]/Ö‰È1ð!Ð1Èø�¼SD‰òÁÀð1Â!Ê1òúA�¼ �æ¡Ø‰ÁÁ Â1Ñ!ñ1Áù‹|$À‹l$ÌÁÁÑ�¼7ÈûÓç‰Ö1Î!Æ1Öþ�¼æÍá!‰È‹l$ÈÁÎ Î1ð!Ð1ÈøA�¼Ö7ÉòÁÀð1Â!Ê1òú‹|$¼Á Â�¼‡ Õô‰Á1Ñ!ñ�´5íZE‰Õ1ÁùÁÁÑ1͉ï‹l$Ô!Ç1×÷A�´é㩉ÈÁÏ Ï1ø�¬=ŠL*�!Љl$ä1Èð‹t$¸ÁÀø�´ø£ïü‰ú1Â!ÊA�Œ Ùog1úò‰ÆÁ Â1Ö!þ1ÆΉÑÁÆÖ1ñ‰Í!ʼnï‹l$ä1×ï‹l$ÄÁÏ ÷�„B9úÿ1ùÁ‹D$ÈÁÁ�„�öq‡‰òù1ú1Ê‹D$ÐÁ �„0"a�m‰þÊ1ÎA�¼< 8åý1ÖƉÈÁÆ1ÐÖ1ðø‹|$´ÁÈ �¼D꾤‰Ñð1ñ1Áù‹|$ÀÁÁ�”©ÏÞK‰÷Á1ÇA�´5`K»ö1Ï׉Â�„p¼¿¾ÁÇ 1ÊÏ1úò‰ÎÁÂ1þú1ÖÆA�„Æ~›(‰ùÁÎ 1ÑA�¼>ú'¡êÖ1ñÁ‰ÐÁÁ1ðñ1Èø‹|$¼ÁÀ �”…0ïÔ‰÷È1Ï1Ç׋T$ÜÁÇ�”2ˆ‰ÎÇ1Æ1þÖ‹T$ÌÁÎ �Œ 9ÐÔÙ‰Âþ1ú‰õ1òÊ‹L$ÔÁÂ�„å™Ûæ‰ùò1ñ1Õ1ÑÁA�„;ø|¢‰ï‹l$ÄÁÁ Ñ1ÏÇ‹D$¸ÁÇ�´0eV¬Ä‰ÐÏ1È1øðA�´D")ô‰ÊD‹t$¼ÁÈ ÷Òø Â1úòA�´ —ÿ*C‰ùÁÂ÷ÑA�¼<§#”« ÑA‰Õ1ÁA÷Õñ‰ÆÁÁ ÷ÖÑ Î1Öþ�¼9 “üD‰èA‰ÍÁÆA÷Õ‹l$ÜÎ ð1Èø‹|$ÔÁÈ ð�¼ÃY[eD‰ê Â1òúA�¼’Ì �‰ñD‹t$ÈÁÂ÷Ñ ÑA‰Õ1ÁA÷Õù�¼3}ôïÿ‰ÆÁÁ ÷ÖÑ Î1Öþ‹|$´ÁÆÎ�¼Ñ]„…D‰èA‰Í ðA÷Õ1ÈøA�¼O~¨oD‰êD‹t$ÐÁÈ ð Â1òúA�¼ àæ,þ‰ñD‹\$ÀÁÂ÷Ñ Ñ1Áù�¼5C£‰Æ‹l$ÌÁÁ ÷ÖÑ Î1ÖþA�¼¡NA‰ÐÁÆA÷ÐÎD‰À ð1ÈøA�¼‚~S÷‰ÊÁÈ ÷Òð Â1òúA�¼5ò:½‰ñÁÂ÷Ñ Ñ1Áù‹|$¸ÁÁ �¼7»Ò×*‰ÆÑ÷Ö Î1Öþ�¼‘Ó†ë‰ÐÁÆ÷ÐÎ ðAñ1ÈøÁÈ T$àA÷AÁH‹D$èL$ØI9‚<ùÿÿfnT$ØfnL$àfAnÇfAnÙH‹|$ðfbÂfbËflÈ[]A\A]A^A_ÀAWI‰×AVAUATI‰ôUSH‰ûHƒì‹J…É…>Iƒü@†ØH‰$öįM�t$¿I�oIÁîM�nIÁåIÝff.„@óoL‰ú¾@H‰ïHƒÃ@EóoCÐEóoCàE óoCðE0è øÿÿL9ëuÄH‹$I÷ÞIÁæHƒÀ@O�d4ÀL)ðH‰ÃD‰àAƒüsWAöÄ…ÏE…ä…ÖE‰gHƒÄ[]A\A]A^A_ÃL‰åH‰ßL‰úAƒä?HƒåÀH‰îHëèœ÷ÿÿM…ätÍI�oD‰àAƒür©H‹I‰GD‰àH‹TøH‰TøI�W$HƒâøH)ÕA�,H)ëƒàøƒørŽƒàø1ö‰÷ƒÆL‹;L‰:9Ærïésÿÿÿ�A‰ÎA½€‰ $M)õJ�|2I9õLGîH‰ÞL‰êMîè÷íûÿEoIƒþ@‹ $w:LëM)ìé�þÿÿ€¶AˆGAöÄ„ÿÿÿD‰à·Tþf‰TþéÿÿÿDL‰ðI�oL‰ú‰L$ HƒàÀH‰ïAƒæ?H‰ÆH‰$è«öÿÿH‹$Aƒþ‹L$ I�Ds8AöÆuxE…öt¶AˆWAöÆtA·DþfB‰D5þ@B�)ƒà?A‰GéVÿÿÿH‹I‰WI‹TøJ‰T5øI�W$HƒâøH)ÕAîH)èAƒæøAƒþrÄAƒæø1ö‰÷ƒÆL‹8L‰:D9örî몋A‰WA‹DüB‰D5ü똋A‰W‹Tü‰Tüé'þÿÿDAWH‰ÑAVAUATUS‹H‰û‰D$Ø‹BH‰|$èH÷‰D$°‹BH‰T$ø‰D$´‹B H‰|$ð‰D$¸‹B‰D$à‰ðB‰BH‰òHÁê H9ðQH9ûƒ\ff.„H‹t$è‹L$à‹‹~,HƒÆ@ÈA‰Ã‹FÄÏB�”™y‚Z‹L$؉|$ÈȉD$Ä‹FÈA‰È‹~üÈA‰Á‹FÌAÁÀDÂD‹D$´ω|$¼ȉËFЋ|$¸ȉŋFÔA‰úÈA‰Å‹FØȉD$Ô‹FÜÈA‰Æ‹FàÈA‰Ç‹FäȉD$À‹FèÈA‰Ä‹FðȉD$Ì‹FôȉD$¬‹FøH‰t$è‹t$°ȉD$ÐD‰À1ø!ð1øЉò‰ÎÁʉ×D‰Â1ú!ÊD‰ÑD‹T$ÄD1ÂG�„™y‚ZB�Œ™y‚ZD‹T$ÔD‰t$äʉÁÁÁщòÁʉ։ú1ò!ÂÁÈ1ú�¼™y‚ZAЉÊÁÂDÂA‰ðA1ÀA!ÈÁÉA1ð�´.™y‚ZDÇA‰ÐAÁÀAø‰Ç1Ï!×1ÇB�„(™y‚ZþD‰ÇÁÊÁÇ÷‰Î1ÖD!ÆAÁÈ1ÎB�Œ™y‚ZD‹T$¬ð‰þÁÆÆD‰ÀA‰ÐA1ÀA!øÁÏA1ÐB�”2™y‚ZD‹t$ÀAȉñÁÁDÁA‰ÀA1øA!ðÁÎA1ÀB�„8™y‚ZAЉÊÁÂDÂA‰øA1ðA!ÈÁÉA1øB�¼7™y‚ZD‹t$ÈAÀ‰ÐÁÀDÀA‰ðA1ÈA!ÐÁÊA1ðB�´&™y‚ZAø‰ÇÁÇDÇA‰ÈA1ÐA!ÀÁÈA1ÈB�Œ1™y‚ZD‹t$ÌAð‰þÁÆDÆA‰ÐA1ÀA!øÁÏA1ÐB�”2™y‚ZD‹t$ÐAȉñÁÁDÁA‰ÀA1øA!ðÁÎA1ÀB�„™y‚ZAЉÊÁÂDÂA‰øA1ðA!ÈA1øB�¼7™y‚ZD‹t$¼AÀ‰ÐÁÀÁÉE1ËDÀA‰ðE1ûA1ÈE1ÓD‹T$ÄD‰d$ÄA!ÐÁÊA1ðA�´6™y‚ZAÑÃD‹t$ÐAø‰ÇA1ÚÁÇDÇA‰ÈA1ÐA!ÀÁÈA1ÈA�Œ ™y‚ZAð‰þÁÆDÆA‰ÐA1ÀA!øÁÏA1ÐAȉñÁÁDÁD‹D$ÀE1ÂA‰ÀE1òD‹t$¬AÑÂA1øA1éD1ëA!ðA�”™y‚ZE1áD‹d$¼A1ÀÁÎAЉÊE1áÁÂAÑÁDÂA‰øA�„™y‚ZA1ðA!ÈÁÉA1øAÀ‰ÐÁÀDÀA‰Ø‹\$ÈA1؉óE1Ø1ËAÑÀ!ÓÁÊ1óA�¼8™y‚Z߉ÃÁÃA‰Ü‹\$ÔAü1݉ˉï‹l$Ì1ïD1×ÑÇ1Ó‰|$Ü�´7¡ëÙn‹|$ä1ÃÞD‰ãÁȉýÁÃD1íóA‰Õ‰îA1ÅD1öD‰íA‰ÝD1ÎD1åAÁÅÑÆAÁÌ�Œ¡ëÙnéD‰íD‹l$ÔÍE1ýD‰éD‹l$ÐD1éA‰ÅD1ÁE1åÑÁA1ÝÁË�”¡ëÙnDêA‰íAÁÅE‰îD‹l$¼AÖ‰ú‹|$À1úD1êD‹l$ÜD1êE‰åÑÂA1ÝA1í�„¡ëÙnÁÍDèE‰õAÁÅAÅ‹D$ÄD1øA‰ßD1ØA1ï1ðE1÷AÁÎÑÀF�¤ ¡ëÙnEçE‰ìAÁÄEüD‹|$ÈD1ÿA‰ÿE1×A1ÏD‰ÿA‰ïÑÇE1÷E1ï�œ¡ëÙn‰|$À‹|$ÌDûE‰çAÁÍAÁÇAß‹\$Ä1ûD1Ë1ÓÑÉßD‰óD1ë�¬/¡ëÙn‰|$Ä‹|$ÈD1ãÝD‰ûÁÃAÁÌë‹l$¬1ï‰ýD1Å1ʼnïD‰íÑÇD1åD1ýF�´7¡ëÙn‰|$È‹|$ÌDõA‰ÞAÁÏAÁÆAî‹l$Ð1ï‰ý‹|$Ü1ý‹|$À1ýÑʼnïD‰åD1ýF�¬/¡ëÙn‰|$Ì‹|$¼1ÝÁËDíE‰õAÁÅAí‹l$¬1ý‹|$Ä1õ1ýÑʼnïD‰ý1ÝF�¤'¡ëÙn‰|$¬‹|$ÈD1õDåE‰ìAÁÄAì‹l$ÐAÁÎD1ÝE1Ë1ÍA1Ã1ýÑʼnï‰ÝD1õF�¼?¡ëÙn‰|$Ћ|$ÌD1íAÁÍAïD‰åÁÅDýD‹|$¼E1×E1ÂA1×A1ÿAÑÇD‰ÿE‰÷E1ï�œ¡ëÙn‰|$¼‹|$ÀE1çAÁÌDûA‰ïAÁÇDûD‹|$¬E1ûE‰ïAÑÃE1çD‰\$ÔA1ïG�œ3¡ëÙnA‰ÞAÁÆEûÁÍEóD‹t$ÐA1ú‹|$ÜA1ðE1òA1ù1ÏAÑÂE‰×E‰âA1êE‰ÖG�”/¡ëÙnE‰ÝA1ÞAÁÅEòD‹t$ÄÁËEêD‹l$¼E1ñE1éAÑÁE‰ÎA‰éA1ÙE‰ÍG�Œ&¡ëÙnE‰ÔE1ÝAÁÄEéD‹l$ÈAÁËEáD‹d$ÔE1èE1àA‰ÜE‰ÅE1ÜAÑÅE1ÔAÁÊE�„-¡ëÙnD‰ÍEàÁÅAè‹l$Ì1ïD‰ÝD1ÿA‰üAÑÄD1Õ1Ö1ÁD1ÍA�¼¡ëÙnD‰ÃAÁÉïÁÃß‹\$¬1ÞD‰ÓD1öD1ˉõD1ÃAÁÈÑÅB�´¡ëÙnA‰ûÞAÁÃDÞD‹\$ÐD1ÙE‰ËD1éE1ÉËA1ûÁÏÑÃB�Œ¡ëÙnA‰òDÙAÁÂD‹\$ÄDÑD‹T$ÀD1ÒD‹T$¼D1ÒD1âA‰ÒD‰Â1úAÑÂ1òD1ØD‹\$ÔÁÎG�Œ ¡ëÙnAÑD1؉Ê1èÁÂDÊÑÀA‰ÉA‰ÃF�„ܼ�‰ÐA!ñÁÀAÀ‰ÈÁÉ ð!øD ÈD‹L$ÀDÀD‹D$ÈD‰\$äE1ÁE‰ÈE1øA1ØE‰ÁA‰ÐAÑÁA!ÈD‰L$ÀA‰ÑÁÊA ÉA!ñE ÈD‹L$ÀA�¼9ܼ�D‹L$ÄAø‰ÇÁÇDÇD‹D$ÌE1ÁE‰ÈE1ðE1ÐE‰ÁAÑÁE�„1ܼ�‰þD‰L$ÄA‰ÁÁÆA!ÑAð‰ÆÁÈ Ö!ÎD ÎD‹L$ÈDÆD‹D$¬E1ÁE‰ÈA‰ùE1èA ÁE1ØA!ÑAÑÀD‰D$ÈA‰øÁÏA!ÀE ÈD‹L$ÈA�Œ ܼ�D‹L$ÐDÁA‰ðAÁÀAÈ‹L$ÌD1ÉD‹L$ÀD1áD1ÉA‰ñÑÁA!ù‰L$Ì�”ܼ�D‰ÁÁÁʉñ ù!ÁD ÉD‹L$¼Ñ‹T$¬ÁÎD1ÊD‹L$Ä1êD1ÊщT$¬D‰Â òA‰ÑD‰ÂAÁÈA!ù!òD ÊD‹L$¬A�„ܼ�D‹L$Ô‰ÈÁÀЋT$ÐD1ÊD‹L$È1ÚD1ÊA‰ÉÑÂE!Á‰T$Ð�¼:ܼ�‰ÂÁÂ׉ÊD Â!òD ÊD‹L$Ìú‰Ï‹L$¼ÁÏD1ùD1ÑD1ÉÑÁ‰L$¼‰Á ùA‰É‰ÁE!Á!ùD ÉD‹L$¼ÁÈE1ïA�´1ܼ�D‹L$ÀΉÑÁÁE1Ïñ‰Æ‹D$ÔD1ðE1æD1ØD‹\$¬D1ØA‰ÓÑÀA!ó‰D$ÔF�„ܼ�‰ÈÁÀAÀ‰ÐÁÊ ð!øD ØD‹\$ÐDÀA‰ÈA ÐE1ßE‰ÁA‰ÈAÑÇA!ñA!ÐA�¼?ܼ�ÁÉE ÈAø‰ÇÁÇA‰ù‹|$ÄEÁA‰ÀA1þ‹|$¼A1þD‰ÏAÑÆÁÇA!ÈA1íA�´6ܼ�A1Üþ‰ÇÁÈ Ï!×D Ç÷‹t$ÈA1õ‹t$ÔA1õAÑÅE‰ëE‰ÍA ÅA�”ܼ�D‰\$ÜE‰èE‰ÍAÁÉA!ÅA!ÈD‰îA‰ýD ÆAÁÅÖE‰ë‹T$ÌAóD‰æE‰Ô1ÖE‰ÝD1þAÁÅÑÆ�”ܼ�D‰ÑD‹T$¬DêA‰ýE ÍE‰èA‰ýE!ÍA!ÀE èD‹l$ÜAÐÁÏ1éD‰ÝD1ÑE‰Ú!ýAÁËD1ñA ú‰êÑÁE!ÊD Ò�„ܼ�E‰ÂÂAÁ‹D$ÐAÒ‹T$äD‰Õ1ÚÁÅD‰Ã1ÂD ÛD1ê!ûE‰ÕÑÂB�„ ܼ�D‹L$ÀèD‰ÅAÁÈD!ÝE!Å ë‹l$¼ÃD‰àD‹d$ÄD1ÈE‰éA‰Ý1èD‰Õ1ðD ÅÑÀD!ÝA é�¼8ܼ�AÁÅ‹l$ÔDÏE‰éAÁÊAù‹|$äE‰ÍD1çAÁÅD‹d$È1ï1ÏÑÇF�œܼ�EëA‰ÝE ÕD‰íA‰ÝÁËE!ÕD!ÅD íE‰ÍDÝD‹\$ÀA ÝE1ãE‰ìE1ûE!ÔA1ÓAÑÃD‰\$ÀE‰ËAÁÉA!ÛE ãD‹d$ÀG�„ܼ�D‹d$ÄEØA‰ëAÁÃEÃD‹D$ÌE‰ÝE1ÄE‰àD‹d$¬E1ðA1ÀAÑÀAÁÅG�”ܼ�D‰D$ÄEêA‰íE ÍE‰èA‰íE!ÍA!ØE èD‹l$ÜEÐA‰ê‹l$ÈAÁÊD1åD1íE‰ÝE Õ1ýE‰ìE‰ÝÑÅE!ÕE!̉l$ÈAÁËD‰íE‰ÅD åD‹d$ÈAÁÅA�œܼ�D‹d$ÐëD‰íÝ‹\$ÌD1ãD‹d$À1óD1ãÑÃA‰ÝD‰ÓD1ÛG�Œ ÖÁbÊD‰l$ÌE‰ÝD1ÃAÁÈAÙ‰ëÁÃDËD‹L$¬D‹d$¼E1áD‹d$ÄA1ÉE1ÅE1áE‰ìD‹l$ÈAÑÁA1ìÁÍD‰L$¬G�ŒÖÁbÊA‰ÚEáAÁÂD‹d$ÔEÊD‹L$ÐE1áE1ôA1ÑE1éAÑÁE‰ÍE‰ÁA1éG�œÖÁbÊD‰l$ÐD‹l$ÌA1ÙÁËEËE‰ÑAÁÁEÙD‹\$¼E1ûA1ÃE1ëAÑÃE‰ÝA‰ëA1ÛG�„ÖÁbÊD‰l$¼D‹l$¬E1ÓAÁÊEØE‰ËAÁÃEÃE‰àA‰ÜA1øE1èD‹l$ÜAÑÀE1ÔA1öD‰D$ÔE1ÌE1ïAÁÉE�„(ÖÁbÊD‰ÝA1ÍEàÁÅD‹d$ÀAè‹l$ÐE1çA1ïD‰ÕD1ÍAÑÇA‰ìA�¬ÖÁbÊD‰ÃE1ÜÁÃDåAÁËE‰Ìë‹l$ÄE1ÜE1ÄAÁÈA1î‹l$¼A1îAÑÆC�¬ÖÁbÊA‰ÚDåAÁÂD‹d$ÔAê‹l$ÈA1íE1åE‰ÜAÑÅE1ÄA1ÜC�¬ ÖÁbÊE‰Ñ1ÖDåAÁÁE‰Ä1ÁAé‹l$ÌÁË1úA1Ü1îE1ÔAÁÊD1þÑÆB�¬ÖÁbÊE‰ËDåAÁÃA‰ÜAë‹l$¬E1ÔE1ÌAÁÉ1éD1ñÑÁB�¬ÖÁbÊE‰ØDåD‹d$ÐAÁÀAèD1âE‰ÔD1êE1ÌÑÂE1Ü�¬ÖÁbÊD‰ÃDåD‹d$ÀÁÃëAÁËD1àD‹d$¼D1à1ð‰ÅD‰ÈD1ØÑÅA‰Ä‰l$ÜB�¬ÖÁbÊA‰ÚE1ÄAÁ‹D$ÔDåAÁÈD‹d$ÈAê‹l$Ä1ï1ÇD‰ØD1À1ÏÑljÅD‰Ð1ÝÁÀF�ŒÖÁbÊAé‰ÅÁË‹D$ÌDÍD‹L$ÀE1áE‰ÄE1ùA1ÜA1ÑE1ÔAÑÁG�œÖÁbÊEãA‰ìAÁÄEãD‹d$ÄAÁÊA1ÄE1ôD‹t$Ü‹D$¬E1ôA‰ÞAÑÄE1ÖA1îG�„ÖÁbÊÁÍEðE‰ÞAÁÆEðD‹t$ÈA1ÆE1îE‰ÕA1þA1íAÑÆE1ÝAÁËA�¼ÖÁbÊD‰ÃDïÁÃD‹l$Ðß‹\$ÌD1ë1óD1ËA‰éÑÃE1ÙE1ÁB�´ÖÁbÊD‹T$¼AÁÈDÎA‰ùD1ÐAÁÁDÎA‰Á‹D$ØA1ÉE1úE1áAÑÁF�Œ ÖÁbÊD‰ÝD1ʼné‹l$Ü1ùÁÏDÉA‰ñAÁÁDÉD‹L$ÔE1éA1ÑE1ñE‰ÆA1þAÑÁD‰òG�Œ ÖÁbÊ1òÁÎt$¸DÊA‰ÉAÁÁDÊE‰ÑT$°A1éA1Ù‰ûAÑÁ1óB�„ÖÁbÊDÀA‰Ø‰ÓA1ÈÁÃDÀÁÉL$´D‹D$´�‹D$°|$àA‰ß‰\$ØH‹\$ø‰C‹D$¸D‰;‰C ‹D$àD‰C‰CH‹D$ðH9D$育íÿÿ[]A\A]A^A_ÀAWAVAUATI‰ôUH‰ÕSH‰ûHƒì‹B…Àu"Hƒþ?wfH…ö…HƒÄ[]A\A]A^A_Ã@A‰Å¸€L�z L)èK�9Ñrïé}ýÿÿ‹0‰u ‹DüA‰Düéjýÿÿ‹ ‰‹Lü‰Lüé*þÿÿD‰â·Lþf‰LþéþÿÿH�} L‰âH‰Þè¾Öûÿéþÿÿf.„f.„DÃff.„@USHƒìH‹-ó:H…ít3ff.„‹]ƒëxHcÛDÿTÝHƒë…ÛyôH‹mH…íuÛHƒÄ[]Ã@HƒìH‹MH�š:H�5:'H‹81Àè­Õûÿ¿èÓÛûÿH‰÷1À1öé”Ùûÿ@H‰÷º¶…Ét¾A1ÀéxÙûÿ„¾A1ÀédÙûÿ@‰÷é)Óûÿf„AWAVI‰ÎAUA‰õATM‰ÄUD‰ÍSH�ìÈH‹œ$ L�|$pH‰$L‰ÿÇD$ÿÿÿÿÇè|Ôûÿ…Àt0‰H‹„$H� £TH‰‹D$H�ÄÈ[]A\A]A^A_ÃfD¾@L‰ÿèëÚûÿ…À„ë‰H‹„$H�sTH‰L‰ÿè‡Ïûÿ‹ …É”À…ít„Àt‰ïèaÒûÿ…À…Q‹…Ò”Àf�ƒ¼$t„ÀuRƒ¼$„pÿÿÿ„À„hÿÿÿ‹¼$è Òûÿ…À„TÿÿÿH‹„$H�=JTH‰8èÍûÿ‹‰¸ÿÿÿÿé3ÿÿÿ‹¼$èäÑûÿ…À„¤H‹„$H�=TH‰8èÕÌûÿÇD$ÿÿÿÿ‹…À‰”Àémÿÿÿ€H�D$ H‰ÇH‰D$è†Ìûÿ…Àuj…í…Jƒ¼$„½‹´$H‹|$ºèFÚûÿ…À„†‰H‹„$H�aH‰H‹|$èàÎûÿé¼þÿÿ‹…À”Àéêþÿÿ@‰H‹„$H�5!SH‰0é�þÿÿ€H‹„$H�:SH‰èÌûÿÇD$ÿÿÿÿ‹…À‰”Àé‹þÿÿ‹´$H‹|$è‡Ùûÿ…À…惼$…¡‹´$…ö‰AöÅ…xAƒå„M…䄚H‹T$H‹4$M‰áM‰ðH�|$L‰ùè9Õûÿ…À„ÿÿÿ‰H‹„$H�5xRÇD$ÿÿÿÿH‰0éöþÿÿH‹|$1Ò‰îèÙûÿ…Àtn‰H‹„$H�=å_H‰8éËþÿÿD‹´$H‹|$ºèÚØûÿ…À…”þÿÿ‹´$H‹|$è¡Øûÿ…À„(ÿÿÿ‰H‹„$H�=¸_H‰8évþÿÿH‹|$‰îètØûÿ…À„"þÿÿ‰H‹„$H�5‹_H‰0éIþÿÿ‹´$H‹|$è?Øûÿ…À„ÕþÿÿëœDM…ä„‹H‹T$H‹4$M‰áM‰ðH�|$L‰ùè+Öûÿ…À„ùýÿÿ‰H‹„$H�gQÇD$ÿÿÿÿH‰éØýÿÿf�H‹|$º¾èì×ûÿ…À„lþÿÿ‰H‹„$H�5»^H‰0é¡ýÿÿH‹\L‹ éWþÿÿH‹ML‹ éfÿÿÿff.„f�AUM‰ÍATI‰ÔU‰õSH‰ËH�ì˜E…ÀuCH…ÛtOH‰á1ÒL‰æ‰ïè?Ôûÿfo$foD$C…Àx:1ÀH�Ę[]A\A]Ãf„¾‰ïè4ÑûÿH…Ûu±1ÒL‰æ‰ïèSÔûÿ…ÀyÆèJÉûÿ‹H‹„$À‰H�nPI‰E¸ÿÿÿÿë¥ff.„�H‰÷éHÎûÿ„‰÷H�50'éÓûÿf�S‰ó1Àº¾‰ßèÚÊûÿ…Àx‰ßH�5È/[éçÒûÿ€1À[Ãff.„�AWAVAUATA¼USHƒì‰t$ Hcw09wP„¡H‰ûH‹@HÁæI‰ÕI‰ÎèeÌûÿH‰C@ö…ÚD‹{PD;{0�æIcïA¼HÁåff.„f�H‹ƒ€L‹X H‹CHH…Àt\H� èH‹S@H‹C8HƒìM‰éH‰ßAƒÇ‹4(HêAVHƒÅD‹D$AÿÓY^÷ÐÁèA!ÄD;{0|®D‰{PHƒÄD‰à[]A\A]A^A_ÄH‹S@H‹C8HƒìM‰é1ÉH‰ßAƒÇ‹4(HêAVHƒÅD‹D$AÿÓ÷ÐÁèA!ÄXZD9{0�Pÿÿÿë Hcs0H‹{HHÁæèmËûÿH‰CHé ÿÿÿA¼é{ÿÿÿf„AVAUATUH‰õSH‰ûHƒì0H‰|$èdÊûÿóoED�`D$H‹EH‰D$ ë!ff.„HƒÃL�5aNH‰\$€{ÿ%t€;uåHƒÄ0D‰à[]A\A]A^ÃDH‰\$¾3L‰÷H‰ÝHƒÃA‰õèVÊûÿH…ÀuáA€ý*…׋D$H‰\$H‰Ýƒø/‡ò‰ÂƒÀHT$ ‰D$‹A‰ÅA÷ÝDHè¶EEå<.„ÀHƒÅ1ÒH‰ë Pattern: %s Maps To: %s Discarded input sections Memory Configuration AttributesLengthOriginName%-16s %-18s %-18s %s 0x%-16s 0x%*s! Cross Reference Table SymbolFile No symbols ../../ld/ldcref.c%16s: %6.2f%%%s: \ %s %s: %P: error writing file `%s' %P: error closing file `%s' .obj-only.o../../ld/ldlang.cerror setting up sections.gnu_object_onlyerror copying sectionsGNUTARGET*ABS*$SYSROOT?*[remove input file '%s' -li386:x86-64i386:x64-32--shared--library=%s%P: %s: missing argument %P: unrecognized option '%s' nodefinitionsnosymbolicpure-text--defsym%F%P: invalid number `%s' Usage: %s [options] file... Options: @FILERead options from FILE %s: supported targets:%s: supported emulations: ELF emulations: gnu Report bugs to %s ignore-allreport-allignore-in-object-filesignore-in-shared-libs%P: %s: duplicated plugin %F%P: bad -plugin-opt option pass-through=%s%c%s%X%P: %s: %E %F%P: -shared not supported %F%P: -pie not supported descendingascending.text-segment.rodata-segment.ldata-segmentC++typeinfo name for*typeinfo for*operator new*operator delete*P,placewarndiscardshare-unconflictedshare-duplicated%s%s%s%s%s%s.map%s-%s%s%s-%csha1sysvbothundefsmuldefsmax-page-size=common-page-size=stack-size=noexecstacknounique-symbolglobalauditnostart-stop-gcstart-stop-visibility=start-stop-visibility=defaultstart-stop-visibility=hiddennosectionheaderglobalinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazyoriginnouniquenocombrelocnocopyrelocnomemory-sealnorelronoseparate-codenocommonnotexttextoffnoextern-protected-datanoindirect-extern-accessnodynamic-undefined-weaknoreloc-overflowcall-nop=prefix-addrsuffix-nopprefix-suffix-ibtpltibtshstkcet-report=report-relative-relocx86-64-baselinex86-64-visa-level-report=usedlam-u48lam-u48-report=lam-u57lam-u57-report=lam-report=nomark-pltnopack-relative-relocs-z %sGNU ld %s Supported emulations: %s %F: macros nested too deeply ,:/usr/lib/x86_64-linux-gnu/usr/bin/usr/x86_64-linux-gnu/bini386pepei-i386i386peppei-x86-64elf_iamcuelf32-iamcuelf_i386elf32-i386elf32_x86_64elf32-x86-64elf64-x86-64Bgrouppackage-metadatacompress-debug-sectionsno-rosegmentdepauditdisable-new-dtagsenable-new-dtagsno-eh-frame-hdrexclude-libshash-styleno-ld-generated-unwind-infoKEYWORDSet architecturemri-scriptRead MRI format linker scriptdcdpdependency-fileWrite dependency fileforce-group-allocationSet start addressExport all dynamic symbolsno-export-dynamicenable-non-contiguous-regionsdisable-linker-versionenable-linker-versionEBLink big-endian objectsLink little-endian objectsauxiliaryfilterIgnoredgpsizesonameFILENAMEPROGRAMno-dynamic-linkerSearch for library LIBNAMElibrary-pathDIRECTORYsysroot=Set emulationprint-mapnmagicDo not page align datano-omagicSet output file nameOptimize output fileout-implibGenerate import libraryPLUGINLoad named pluginplugin-optARGplugin-save-tempsfltoflto-partition=fuse-ld=no-map-whole-filesQyemit-relocsrelocatableGenerate relocatable outputjust-symbolsremap-inputs-fileremap-inputsPATTERN=FILEstrip-allStrip all symbolsstrip-debugStrip debugging symbolsno-strip-discardedtraceTrace file opensRead linker scriptdefault-scriptRead default linker scriptdTrequire-defined[=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 librariesdycall_sharedBstaticdnnon_sharedBno-symbolicBsymbolicBsymbolic-functionsno-check-sectionsno-copy-dt-needed-entriescrefOutput cross reference tableSYMBOL=EXPRESSIONDefine a symbol[=STYLE]disable-multiple-abs-defsembedded-relocsGenerate embedded relocsTreat warnings as errorsno-fatal-warningsCall SYMBOL at unload-timeforce-exe-suffixno-gc-sectionsno-print-gc-sectionsgc-keep-exportedhash-size=Print option helpCall SYMBOL at load-timeMapFILE/DIRno-define-commonDo not define Common storageno-demangleDo not demangle symbol namesno-keep-memoryno-undefinedno-warningsno-allow-shlib-undefinedallow-multiple-definitionAllow multiple definitionserror-handling-scriptAllow undefined versionno-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 fileprint-output-formatPrint default output formatprint-sysrootPrint current sysrootqmagicreduce-memory-overheadsmax-cache-size=SIZEno-relaxretain-symbols-filerpathrpath-linkCreate a shared libraryBshareablepic-executableno-piesort-common[=ascending|descending]sort_commonsort-sectionname|alignmentsection-ordering-filespare-dynamic-tagsCOUNTsplit-by-file[=SIZE]split-by-reloc[=COUNT]statsPrint memory usage statisticstarget-helptask-linkDo task level linkingtraditional-formatsection-startSECTION=ADDRESSSet address of named sectionSet image base addressTbssSet address of .bss sectionTdataSet address of .data sectionTtextSet address of .text sectionTtext-segmentSet address of text segmentTrodata-segmentSet address of rodata segmentTldata-segmentSet address of ldata segmentunresolved-symbols=[=NUMBER]dll-verboseversion-scriptversion-exports-sectiondynamic-list-datadynamic-list-cpp-newdynamic-list-cpp-typeinfoUse C++ typeinfo dynamic listdynamic-listRead dynamic listexport-dynamic-symbolExport the specified symbolexport-dynamic-symbol-listwarn-commonwarn-constructorsno-error-execstackwarn-execstack-objectsno-warn-execstackno-error-rwx-segmentsno-warn-rwx-segmentswarn-multiple-gpwarn-oncewarn-section-alignwarn-textrelwarn-shared-textrelwarn-alternate-emwarn-unresolved-symbolserror-unresolved-symbolswrapignore-unresolved-symbolpush-statepop-stateprint-memory-usageReport target memory usageorphan-handling=MODEno-print-map-discardedno-print-map-localsno-ctf-variablesctf-share-types=a.outJava../../ld/ldmisc.c%10s%pB: in function `%pT': %pB:%pT(%pA+0x%v)[%s]%s generated%s(%s)(%s)%s%s+0x%v (type %s)%s:%uno symbol%p%ld%lu%%%c%u%scomma]lbrace]quot]rbrace]space]/dev/nullNULcannot find script file %s opened script file %s %s: MRI style script*default*srec%F%P: unknown format type %s SANE_EXPR%X%P: unknown feature `%s' GNU ld fill value%F%P: multiple STARTUP files __load_start_%s__load_stop_%sprogram header typePT_GNU_EH_FRAMEPT_GNU_STACKPT_GNU_RELROPT_GNU_PROPERTYFILEHDRPHDRSVERSION scriptlocalexternsection-ordering-file scriptsyntax errorError: discardingError: poppingmemory exhaustedCleanup: discarding lookaheadCleanup: popping../../ld/ldlex.l in script in expression/ldscripts%F%P: EOF in comment ?*]%X%P: %s ../../ld/ldexp.c%F%P:%pS %% by zero %F%P:%pS / by zero NEXT_SECTIONMAXPAGESIZECOMMONPAGESIZE%F%P:%pS: %s in %s %F%P:%pS: %s %F%X%P: warning: %P: error: PT_NULLPT_LOADPT_DYNAMICPT_INTERPPT_NOTEPT_SHLIBPT_PHDRPT_TLS-z dynamic-undefined-weakELF_PACKAGE_METADATA%P: warning: %s ignored Object-only input files: %pB (%pT) .ctf.exports Set Symbol %G __start_%s__ehdr_start.stabstr.startof.%sphdr flagsphdr load address%F%P: target %s not found %pI ALL%P: cannot find %s (%s): %E %P: cannot find %s: %E %P: cannot find %s inside %s missing-libattempt to open %s failed attempt to open %s succeeded ../../ld/ldmain.c%P: %pB: reference to %s %P: %pB: definition of %s %X%P: cref alloc failed: %E ; %D: first defined here.note.gnu.build-id.note.package.note.GNU-stack.eh_frame_entry.eh_frame.eh_frame_hdr (symbol from plugin)%s needed by %pB LD_LIBRARY_PATHLD_RUN_PATH/etc/ld.so.conf/usr%s/lib%s%s.so../../ld/ldelf.c.gnu.linkonce.t.md5uuid%F%P: invalid data statement endusing multiple gp values%P: %C: %s%s %P: %s%s %P: %pB: %s%s Allocating common symbols %*s0x%-16s%P: %H: %s%s WEAKDEFWEAKUNDEFDEFAULTPROTECTEDINTERNALCOMMONunknown LTO kind value %xCTF warningCTF error*?[.init.finiSHT_PROGBITSSHT_STRTABSHT_NOTESHT_NOBITSSHT_INIT_ARRAYSHT_FINI_ARRAYSHT_PREINIT_ARRAYlib64RIGIN}IB}%.*s%s/%s%.*s%slibc.sofound %s at %s /DISCARD/%P: %pB: bfd_stat failed: %E .so..ctors.dtors.init_array.fini_array.rela.dyn.rel.dyn.mbind.bss.mbind.data.mbind.rodata.mbind.text.rel.gnu.warning..note.plt.tdata.interp.sdata.commentUNKNOWNPREVAILING_DEFPREVAILING_DEF_IRONLYPREEMPTED_REGPREEMPTED_IRRESOLVED_IRRESOLVED_EXECRESOLVED_DYNPREVAILING_DEF_IRONLY_EXP.gnu.warningload basesubsection alignment.stab$GDB_STRINGS$$GDB_SYMBOLS$%F%P: final link failed: %E %F%P: final link failed ../../ld/ldwrite.cinclude0x%s %W %pB %W (size before relaxing) 0x%V (local) %s BYTESHORTLONGSQUAD[unresolved]*undef*[!provide]BEFOREAFTERFail with %d SORT (CONSTRUCTORS) CONSTRUCTORS EXCLUDE_FILE(%s) SORT_BY_NAME(REVERSE(SORT_BY_ALIGNMENT(SORT_NONE(SORT_BY_INIT_PRIORITY(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%-34sTARGET(%s) OUTPUT(%sLOAD %s START GROUP END GROUP INSERT %s %s /dev/urandom0x%V %pT failed to copy private data%P%F: setup_section: %s: %s relocation count is negative%P%F: copy_section: %s: %s %10lu B%10lu GB%10lu MB%10lu KBundefined-symbolNULL TREE %s+0x%vPROVIDE (%s = ("", ASSERT (, %s) (%s)%X%H:+%velf32-bigelf64-bigelf32-littleelf64-little%pS SYSLIB ignored %pS HLL ignored Stack now %d\%03o%F%P: internal error %s %d %F%P: please report this bug [%B]pe-x86-64ei386pep.ca.exe___ImageBase__image_base____size_of_heap_commit____size_of_heap_reserve____size_of_stack_commit____size_of_stack_reserve____major_subsystem_version____minor_subsystem_version____subsystem____major_os_version____minor_os_version____major_image_version____minor_image_version____file_alignment____section_alignment____dll____dll_characteristics__GLOBAL_nativewindowsconsoleposixwincexbox__loader_flags__base-filefile-alignmentmajor-image-versionmajor-os-versionmajor-subsystem-versionminor-image-versionminor-os-versionminor-subsystem-versionsection-alignmentsubsystemsupport-old-codeno-leading-underscoreoutput-defexport-all-symbolsexclude-all-symbolsexclude-modules-for-implibkill-atadd-stdcall-aliasenable-stdcall-fixupdisable-stdcall-fixupwarn-duplicate-exportscompat-implibenable-auto-image-basedisable-auto-image-basedll-search-prefixno-default-excludesenable-auto-importdisable-auto-importenable-extra-pep-debugenable-runtime-pseudo-relocdisable-runtime-pseudo-relocenable-long-section-namesdisable-long-section-namesno-insert-timestampenable-reloc-sectiondisable-reloc-sectiondisable-high-entropy-vadisable-dynamicbasedisable-forceintegdisable-nxcompatdisable-no-isolationdisable-no-sehdisable-no-binddisable-wdmdriverdisable-tsaware+=-=*=/=<<=>>=&=|=^=||&&==!=<<>>LOG2CEILBLOCKSECTIONSSIZEOF_HEADERSMEMORYDEFINEDSEARCH_DIRMAPENTRYNEXTALIGNOFSIZEOFLOADADDRABSOLUTEMAXMINASSERTDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDORIGINLENGTHSEGMENT_START.debug_+%s __pei386_runtime_relocatorarelent: %s@%#lx: add=%li pcrel %d bit rel. %s_nmth%06d.o.idata$4__nm_thnk___nm_%s_fu%06d.o.idata$2_iname%s_rtr%06d.o.rdata_runtime_pseudo_reloc%s_ertr%06d.o.rdatarel: %s Creating library file: %s %X%P: bfd_openr %s: %E %X%P: bfd_close %s: %E LIBRARY NAME BASE=0x%lxDESCRIPTION VERSION %d.%d VERSION %d STACKSIZE 0x%x,0x%x STACKSIZE 0x%x HEAPSIZE 0x%x,0x%x HEAPSIZE 0x%x SECTIONS CLASS READ WRITE EXECUTE SHAREDEXPORTS @%d PRIVATE CONSTANT NONAME DATA IMPORTS == ; no contents available .idata.idata$__head_%s() -%s *%s .buildid%s:%s ->%s .drectveobj%s.%c(data)%X%P: open %s: %E %s is already loaded pe-i386ei386pe.cDllMainCRTStartup@12NtProcessStartupWinMainCRTStartupmainCRTStartup__PosixProcessStartupthumb-entryenable-extra-pe-debugdisable-large-address-awarelib%s.dll.alib%s.alib%s.lib%s%s.dlllib%s.dllldscripts/i386pe.xuldscripts/i386pe.xrldscripts/i386pe.xbnldscripts/i386pe.xnldscripts/i386pe.xaldscripts/i386pe.x%P: %s:%d: %s %s.%sLIBRARY../../ld/pe-dll.cdll stuff%F%P: can not create BFD: %E .edata.reloc$:-_?@$:-_?/@<>CODEBASEconstantDESCRIPTIONDIRECTIVEEXCLUDE_SYMBOLSEXPORTSHEAPSIZEIMPORTSnonameprivateSTACKSIZE%s.%s%s%s_d%06d.o.idata$5.idata$7.idata$6___imp___fu%d_@feat.00_NULL_IMPORT_DESCRIPTORDllMain_DllMainCRTStartupdo_pseudo_reloccygwin_crt0DllMain@12DllEntryPoint@0_cygwin_dll_entry@12_cygwin_crt0_common@8cygwin_attach_dllcygwin_premain0cygwin_premain1cygwin_premain2cygwin_premain3_impure_ptr_fmodeenviron__dso_handleDllEntryPoint_cygwin_dll_entry_cygwin_crt0_common_cygwin_noncygwin_dll_entry_NULL_THUNK_DATA__rtti___builtin__IMPORT_DESCRIPTOR_dllcrt1.odllcrt2.ogcrt0.ogcrt1.ogcrt2.ocrtbegin.ocrtend.olibcegcclibcygwinlibgcclibgcc_slibstdc++libmingw32libmingwexlibg2clibsupc++libobjclibgcjlibmsvcrtlibmsvcrt-oslibucrtlibucrtbasepe-bigobj-i386pei-shlpe-shlpei-mipspe-mipspei-arm-littlepe-arm-littlepei-arm-wince-littlepe-arm-wince-littlepei-aarch64-littlepe-aarch64-littlepe-bigobj-x86-64-heap-attr-export-aligncomm-exclude-symbolsSEGMENTSposix_spawnattr_initposix_spawnattr_setflagsposix_spawn_file_actions_initposix_spawnpposix_spawnclosewait-+ #0%X%P: add symbols %s: %E pex_get_status failederror handling scriptopen temporary output filetokennterm%s %s ("end of file""invalid token"INTLNAMEPLUSEQMINUSEQMULTEQDIVEQ'='LSHIFTEQRSHIFTEQANDEQXOREQ'?'':'ORORANDAND'|''^''&''<''>'GELSHIFTRSHIFT'+''-''*''/''%'UNARY'('ALIGN_KBINDASCIZINSERT_KLINKER_VERSIONSORT_BY_NAMESORT_BY_ALIGNMENTSORT_NONESORT_BY_INIT_PRIORITYREVERSE'{''}'OUTPUT_FORMATFORCE_COMMON_ALLOCATIONOUTPUT_ARCHINHIBIT_COMMON_ALLOCATIONFORCE_GROUP_ALLOCATIONINCLUDEREGION_ALIASLD_FEATURENOLOADDSECTCOPYINFOOVERLAYREADONLYTYPETARGET_KMAX_KMIN_KSTARTUPHLLSYSLIBNOFLOATNOCROSSREFSNOCROSSREFS_TOFILLCREATE_OBJECT_SYMBOLSGROUPOUTPUTCONSTRUCTORSALIGNMODSUBALIGNPROVIDEPROVIDE_HIDDENAS_NEEDEDCHIPNEWLINEENDWORDORDERNAMEWORDASSERT_KPUBLICDEFSYMENDTRUNCATERELINPUT_SCRIPTINPUT_MRI_SCRIPTINPUT_DEFSYMCASEEXTERNVERS_TAGVERS_IDENTIFIERGLOBALLOCALVERSIONKINPUT_VERSION_SCRIPTINPUT_SECTION_ORDERING_SCRIPTKEEPONLY_IF_ROONLY_IF_RWSPECIALINPUT_SECTION_FLAGSALIGN_WITH_INPUTEXCLUDE_FILEINPUT_DYNAMIC_LIST','';'')''['']''!''~'$acceptfilenamedefsym_expr$@1mri_script_file$@2mri_script_linesmri_script_command$@3ordernamelistmri_load_name_listmri_abs_name_listcasesymlistextern_name_list$@4ifile_listifile_p1$@5$@6$@7input_list$@8input_list1@9@10@11sec_or_group_p1statement_anywhere$@12wildcard_namewildcard_maybe_excludewildcard_maybe_reversefilename_specsection_name_specsect_flag_listsect_flagsexclude_name_listsection_name_listinput_section_spec_no_keepinput_section_spec$@13statement$@14$@15statement_liststatement_list_optlengthfill_expfill_optassign_opseparatorassignmentopt_commamemory_spec_list_optmemory_spec_listmemory_spec$@16$@17origin_speclength_specattributes_optattributes_listattributes_stringstartuphigh_level_libraryhigh_level_library_NAME_listlow_level_librarylow_level_library_NAME_listfloating_point_supportnocrossref_listparen_script_name$@18mustbe_exp$@19$@20$@21memspec_at_optopt_atopt_alignopt_align_with_inputopt_subalignsect_constraint$@22$@23$@24$@25$@26$@27$@28$@29$@30$@31$@32atypeopt_exp_with_typeopt_exp_without_typeopt_nocrossrefsmemspec_optphdr_optoverlay_section$@33$@34$@35phdrsphdr_listphdr$@36$@37phdr_typephdr_qualifiersphdr_valdynamic_list_file$@38dynamic_list_nodesdynamic_list_nodedynamic_list_tagversion_script_file$@39$@40vers_nodesvers_nodeverdepvers_tagvers_defns@41@42opt_semicolonsection_ordering_script_file$@43section_ordering_listsection_order$@44$@45%s: error: too many @-files encountered %s: error: @-file refers to a directory %F%P: fatal error: libbfd ABI mismatch %X%P: can't set BFD default target to `%s': %E %P: unrecognised emulation mode: %s %F%P: %s: error loading plugin: %s using external linker script: %s ================================================== %F%P: --no-define-common may not be used without -shared %F%P: cannot open map file %s: %E There are no discarded input sections Linker script and memory map %P: symbol `%pT' missing from main hash table %F%P: %pB: could not read symbols: %E Memory region Used Size Region Size %%age Used %F%P: cannot open dependency file %s: %E %P: link errors found, deleting executable `%s' %F%P: %s: final close failed: %E %F%P: unable to open for source of copy `%s' %F%P: unable to open for destination of copy `%s' %P%F: Failed to create hash table %P%F:%s: final close failed on object-only output: %E %P%F:%s: cannot open object-only output: %E %P%F:%s: cannot stat object-only output: %E %P%F:%s: read failed on object-only output: %E error copying private header datacan't create object-only sectioncan't set object-only section sizeerror adding object-only sectionerror copying private BFD data%P%F: failed to finish output with object-only section %P%F: failed to rename output with object-only section %P%F: failed to add object-only section: %s %s: total time in link: %ld.%06ld %F%P: can not create hash table: %E remap input file '%s' to '%s' based upon pattern '%s' remove input file '%s' based upon pattern '%s' remap input file '%s' to '%s' %F%P: failed creating section `%s': %E %F%P: cannot represent machine `%s' %F%P: Error: unable to disambiguate: %s (did you mean -%s ?) %P: Warning: grouped short command line options are deprecated: %s %F%P: use the --help option for usage information %F%P: unrecognized -a option `%s' %F%P: unrecognized -assert option `%s' %F%P: unknown demangling style `%s' %s: emulation specific options: --ld-generated-unwind-info Generate exception handling info for PLT --no-ld-generated-unwind-info Don't generate exception handling info for PLT --build-id[=STYLE] Generate build ID note Styles: none,md5,sha1,uuid,0xHEX --package-metadata[=JSON] Generate package metadata note --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi|zstd] Compress DWARF debug sections Default: %s -z common-page-size=SIZE Set common page size to SIZE -z max-page-size=SIZE Set maximum page size to SIZE -z defs Report unresolved symbols in object files -z undefs Ignore unresolved symbols in object files -z muldefs Allow multiple definitions -z stack-size=SIZE Set size of stack segment -z execstack Mark executable as requiring executable stack -z noexecstack Mark executable as not requiring executable stack --warn-execstack-objects Generate a warning if an object file requests an executable stack --warn-execstack Generate a warning if creating an executable stack (default) --no-warn-execstack Do not generate a warning if creating an executable stack --error-execstack Turn warnings about executable stacks into errors --no-error-execstack Do not turn warnings about executable stacks into errors --warn-rwx-segments Generate a warning if a LOAD segment has RWX permissions (default) --no-warn-rwx-segments Do not generate a warning if a LOAD segments has RWX permissions --error-rwx-segments Turn warnings about loadable RWX segments into errors --no-error-rwx-segments Do not turn warnings about loadable RWX segments into errors -z unique-symbol Avoid duplicated local symbol names -z nounique-symbol Keep duplicated local symbol names (default) -z globalaudit Mark executable requiring global auditing -z start-stop-gc Enable garbage collection on __start/__stop -z nostart-stop-gc Don't garbage collect __start/__stop (default) -z start-stop-visibility=V Set visibility of built-in __start/__stop symbols to DEFAULT, PROTECTED, HIDDEN or INTERNAL -z sectionheader Generate section header (default) -z nosectionheader Do not generate section header --audit=AUDITLIB Specify a library to use for auditing -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 --no-eh-frame-hdr Do not create .eh_frame_hdr section --exclude-libs=LIBS Make all symbols in LIBS hidden --hash-style=STYLE Set hash style to sysv/gnu/both. Default: -P AUDITLIB, --depaudit=AUDITLIB Specify a library to use for auditing dependencies -z combreloc Merge dynamic relocs into one section and sort -z nocombreloc Don't merge dynamic relocs into one section -z global Make symbols in DSO available for subsequently loaded objects -z initfirst Mark DSO to be initialized first at runtime -z interpose Mark object to interpose all DSOs but executable -z unique Mark DSO to be loaded at most once by default, and only in the main namespace -z nounique Don't mark DSO as a loadable at most once -z lazy Mark object lazy runtime binding (default) -z loadfltr Mark object requiring immediate process -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 now Mark object non-lazy runtime binding -z origin Mark object requiring immediate $ORIGIN processing at runtime -z relro Create RELRO program header (default) -z norelro Don't create RELRO program header -z separate-code Create separate code program header (default) -z noseparate-code Don't create separate code program header --rosegment With -z separate-code, create a single read-only segment --no-rosegment With -z separate-code, creste two read-only segments (default) -z common Generate common symbols with STT_COMMON type -z nocommon Generate common symbols with STT_OBJECT type -z text Treat DT_TEXTREL in output as error (default) -z text Treat DT_TEXTREL in output as error -z notext Don't treat DT_TEXTREL in output as error (default) -z textoff Don't treat DT_TEXTREL in output as error (default) -z notext Don't treat DT_TEXTREL in output as error -z textoff Don't treat DT_TEXTREL in output as error -z memory-seal Mark object be memory sealed -z nomemory-seal Don't mark oject to be memory sealed (default) %F%P: bad --unresolved-symbols option: %s %F%P: unrecognised option: %s %F%P: -r and %s may not be used together %X%P: error: duplicate retain-symbols-file %F%P: bfd_hash_table_init failed: %E %F%P: bfd_hash_lookup for insertion failed: %E %P: `-retain-symbols-file' overrides `-s' and `-S' %P: SONAME must not be empty string; keeping previous one %F%P: invalid common section sorting option: %s %F%P: invalid section sorting option: %s %P: warning: section ordering file changed. Ignoring earlier definition %F%P: invalid argument to option "--section-start" %F%P: missing argument(s) to option "--section-start" %F%P: invalid hex number `%s' %F%P: bfd_hash_lookup failed: %E %F%P: group ended before it began (--help for usage) %F%P: malformed remap file entry: %s %F%P: invalid argument to option --remap-inputs %F%P: invalid cache memory size: %s %X%P: --hash-size needs a numeric argument %F%P: no state pushed before popping %F%P: invalid argument to option "--orphan-handling" %F%P: bad --ctf-share-types option: %s %P: no file/directory name provided for map output; ignored %P: cannot stat linker map file: %E %P: linker map file is not a regular file %P: SONAME must not be empty string; ignored %P: missing --end-group; added as last command line option %F%P: -r and -z nosectionheader may not be used together %F%P: -F may not be used without -shared %F%P: -f may not be used without -shared %F%P: failed to add remap file %s %F%P: invalid --compress-debug-sections option: `%s' %F%P: invalid hash style `%s' %F%P: invalid maximum page size `%s' %F%P: invalid common page size `%s' %F%P: invalid stack size `%s' start-stop-visibility=internalstart-stop-visibility=protected%F%P: invalid visibility in `-z %s'; must be default, internal, hidden, or protected%F%P: invalid number for -z call-nop=prefix-: %s %F%P: invalid number for -z call-nop=suffix-: %s %F%P: unsupported option: -z %s %F%P: invalid option for -z cet-report=: %s %F%P: invalid x86-64 ISA level: %s %F%P: invalid option for -z isa-level-report=: %s %F%P: invalid option for -z lam-u48-report=: %s %F%P: invalid option for -z lam-u57-report=: %s %F%P: invalid option for -z lam-report=: %s (GNU Binutils for Debian) 2.44Copyright (C) 2025 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. %P: %s: error in plugin cleanup: %d (ignored) %F%P: error: linker script file '%s' appears multiple times %F:includes nested too deeply %F%P: cannot open linker script file %s: %E Shared library control for HP/UX compatibilitySpecify target for following input filesForce common symbols to be definedForce group members out of groupsUndo the effect of --export-dynamicEnable support of non-contiguous memory regionsenable-non-contiguous-regions-warningsEnable warnings when --enable-non-contiguous-regions may cause unexpected behaviourDisable the LINKER_VERSION linker script directiveEnable the LINKER_VERSION linker script directiveAuxiliary 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 useProduce an executable with no program interpreter headerAdd 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 readonlySend arg to last-loaded pluginStore plugin intermediate files permanentlyIgnored for GCC LTO option compatibilityIgnored for GCC linker option compatibilityIgnored for gold option compatibilityIgnored for SVR4 compatibilityGenerate relocations in final outputJust link symbols (if directory, same as --rpath)Provide a FILE containing input remapingsRemap input files matching PATTERN to FILEStrip symbols in discarded sectionsDo not strip symbols in discarded sectionsStart with undefined reference to SYMBOLRequire SYMBOL be defined in the final outputDon't merge input [SECTION | orphan] sectionsBuild global constructor/destructor tablesPrint version and emulation informationDiscard temporary local symbols (default)Don't discard any local symbolsDefault search path for Solaris compatibilityAccept input files whose architecture cannot be determinedReject input files whose architecture is unknownOnly set DT_NEEDED for following dynamic libs if usedAlways set DT_NEEDED for dynamic libraries mentioned on the command lineIgnored for SunOS compatibilityDo not link against shared librariesDon't bind global references locallyBind global references locallyBind global function references locallyCheck section addresses for overlaps (default)Do not check section addresses for overlapsCopy DT_NEEDED links mentioned inside DSOs that followDo not copy DT_NEEDED links mentioned inside DSOs that followDemangle symbol names [using STYLE]Do not allow multiple definitions with symbols included in filename invoked by -R or --just-symbolsDo not treat warnings as errors (default)Force generation of file with .exe suffixRemove unused sections (on some targets)Don't remove unused sections (default)List removed unused sections on stderrDo not list removed unused sectionsKeep exported symbols when removing unused sectionsSet default hash table size close to Write a linker map to FILE or DIR/.mapUse less memory and more disk I/ODo not allow unresolved references in object filesDo not display any warning or error messagesAllow unresolved references in shared librariesDo not allow unresolved references in shared libsProvide a script to help with undefined symbol errorsCreate 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 longerSet the maximum cache size to SIZE bytesReduce code size by using target specific optimizationsDo not use relaxation techniques to reduce code sizeKeep only symbols listed in FILESet runtime shared library search pathSet link time shared library search pathCreate a position independent executableCreate a position dependent executable (default)Sort common symbols by alignment [in specified order]Sort sections by name or maximum alignmentSort sections by statements in FILEHow 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 listRead export dynamic symbol 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 output has DT_TEXTREL (default)Warn if an object has alternate ELF machine codeReport unresolved symbols as warningsReport unresolved symbols as errorsInclude all objects from following archivesUse wrapper functions for SYMBOLUnresolved SYMBOL will not cause an error or warningPush state of flags governing input file handlingPop state of flags governing input file handlingControl how orphan sections are handled.Show discarded sections in map file output (default)Do not show discarded sections in map file outputShow local symbols in map file outputDo not show local symbols in map file output (default)Emit names and types of static variables in CTFDo not emit names and types of static variables in CTFHow to share CTF types between translation units. is: share-unconflicted (default), share-duplicated%X%P: unknown language `%s' in version information /* Script for -Ur */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .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 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } .lbss 0 : { *(.lbss) } /* Start of the Large Data region. */ .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } .lbss 0 : { *(.lbss) } /* Start of the Large Data region. */ .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* 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)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 = .); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -n */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } out of dynamic memory in yyensure_buffer_stack() no emulation specific options. %F%P: unrecognised keyword in MRI style script '%s' %F%P:%pS: error: alias for default memory region %F%P:%pS: error: redefinition of memory region alias `%s' %F%P:%pS: error: memory region `%s' for alias `%s' does not exist %F%P:%pS: nonconstant expression for %s %X%P:%pS: section has both a load address and a load region %X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them %X%P:%pS: unknown phdr type `%s' (try integer literal) %X%P:%pS: PHDRS syntax error at `%s' fatal flex scanner internal error--no action found -z noextern-protected-data Do not treat protected data symbol as external -z indirect-extern-access Enable indirect external access -z noindirect-extern-access Disable indirect external access (default) -z dynamic-undefined-weak Make undefined weak symbols dynamic -z nodynamic-undefined-weak Do not make undefined weak symbols dynamic -z noreloc-overflow Disable relocation overflow check -z call-nop=PADDING Use PADDING as 1-byte NOP for branch -z ibtplt Generate IBT-enabled PLT entries -z ibt Generate GNU_PROPERTY_X86_FEATURE_1_IBT -z shstk Generate GNU_PROPERTY_X86_FEATURE_1_SHSTK -z cet-report=[none|warning|error] (default: none) Report missing IBT and SHSTK properties -z report-relative-reloc Report relative relocations -z x86-64-{baseline|v[234]} Mark x86-64-{baseline|v[234]} ISA level as needed -z isa-level-report=[none|all|needed|used] (default: none) Report x86-64 ISA level -z lam-u48 Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U48 -z lam-u48-report=[none|warning|error] (default: none) Report missing LAM_U48 property -z lam-u57 Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U57 -z lam-u57-report=[none|warning|error] (default: none) Report missing LAM_U57 property -z lam-report=[none|warning|error] (default: none) Report missing LAM_U48 and LAM_U57 properties -z mark-plt Mark PLT with dynamic tags -z nomark-plt Do not mark PLT with dynamic tags (default) -z pack-relative-relocs Pack relative relocations -z nopack-relative-relocs Do not pack relative relocations (default) out of dynamic memory in yy_create_buffer()fatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflow%F%P: read in flex scanner failed out of dynamic memory in yy_get_next_buffer()/* Script for -Ur */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) /* 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 { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .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 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } .lbss 0 : { *(.lbss) } /* Start of the Large Data region. */ .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) /* 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 { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } .lbss 0 : { *(.lbss) } /* Start of the Large Data region. */ .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* 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)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -n */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) *(.rela.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-x86-64", "elf32-x86-64", "elf32-x86-64") OUTPUT_ARCH(i386:x64-32) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnux32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/libx32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.got : { *(.rela.got) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) } .rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) } .rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rela.ifunc : { *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); .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 ? 32 / 8 : 1); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -Ur */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .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 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } /* Start of the Large Data region. */ /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } /* Start of the Large Data region. */ /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* 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)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -n */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/i386-linux-gnu/lib32"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/i386-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .relr.dyn : { *(.relr.dyn) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .plt.sec : { *(.plt.sec) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -Ur */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) /* 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 { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .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 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } /* Start of the Large Data region. */ /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) /* 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 { /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id 0: { *(.note.gnu.build-id) } .interp 0 : { *(.interp) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } /* Start of the executable code region. */ .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .plt.got 0 : { *(.plt.got) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } /* Start of the Read Only Data region. */ .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RO { *(.sframe) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Exception handling. */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .sframe 0 : ONLY_IF_RW { *(.sframe) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections. */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ } /* Start of the Large Data region. */ /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes) } /* 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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* 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)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -n */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -pie */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .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.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.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -shared */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* 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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) } .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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } PROVIDE (_edata = .); PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code -z relro -z now --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .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.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.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code --rosegment */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Align the text segment. */ . = ALIGN(CONSTANT (MAXPAGESIZE)); /* Start of the Read Only Data region. */ /* Adjust the address for the rodata segment. We want to adjust up to the same address within the page on the next page up. */ . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT("elf32-iamcu", "elf32-iamcu", "elf32-iamcu") OUTPUT_ARCH(iamcu) ENTRY(_start) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; /* Place the build-id as close to the ELF headers as possible. This maximises the chance the build-id will be present in core files, which GDB can then use to locate the associated debuginfo file. */ .note.gnu.build-id : { *(.note.gnu.build-id) } .interp : { *(.interp) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rel.dtors : { *(.rel.dtors) } .rel.got : { *(.rel.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } /* Start of the executable code region. */ .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .plt.got : { *(.plt.got) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); /* Start of the Read Only Data region. */ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Various note sections. Placed here so that they are always included in the read-only segment and not treated as orphan sections. The current orphan handling algorithm does place note sections after R/O data, but this is not guaranteed to always be the case. */ .note.build-id : { *(.note.build-id) } .note.GNU-stack : { *(.note.GNU-stack) } .note.gnu-property : { *(.note.gnu-property) } .note.ABI-tag : { *(.note.ABI-tag) } .note.package : { *(.note.package) } .note.dlopen : { *(.note.dlopen) } .note.netbsd.ident : { *(.note.netbsd.ident) } .note.openbsd.ident : { *(.note.openbsd.ident) } /* Start of the Read Write Data region. */ /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling. */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections. */ .tdata : { PROVIDE_HIDDEN (__tdata_start = .); *(.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_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = ALIGN(ALIGNOF(NEXT_SECTION)); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that in the common case of there only being one type of .bss section, the 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 do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); /* Start of the Large Data region. */ . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Start of the Tiny Data region. */ /* 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 (INFO) : { *(.comment); LINKER_VERSION; } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* 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_line.* .debug_line_end) } .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) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } } --base_file Generate a base file for relocatable DLLs --dll Set image base to the default for DLLs --file-alignment Set file alignment --heap Set initial size of the heap --image-base
Set start address of the executable --major-image-version Set version number of the executable --major-os-version Set minimum required OS version --major-subsystem-version Set minimum required OS subsystem version --minor-image-version Set revision number of the executable --minor-os-version Set minimum required OS revision --minor-subsystem-version Set minimum required OS subsystem revision --section-alignment Set section alignment --stack Set size of the initial stack --subsystem [:] Set required OS subsystem [& version] --support-old-code Support interworking with old code --[no-]leading-underscore Set explicit symbol underscore prefix mode --[no-]insert-timestamp Use a real timestamp rather than zero (default) This makes binaries non-deterministic --add-stdcall-alias Export symbols with and without @nn --disable-stdcall-fixup Don't link _sym to _sym@nn --enable-stdcall-fixup Link _sym to _sym@nn without warnings --exclude-symbols sym,sym,... Exclude symbols from automatic export --exclude-all-symbols Exclude all symbols from automatic export --exclude-libs lib,lib,... Exclude libraries from automatic export --exclude-modules-for-implib mod,mod,... Exclude objects, archive members from auto export, place into import library instead --export-all-symbols Automatically export all globals to DLL --kill-at Remove @nn from exported symbols --output-def Generate a .DEF file for the built DLL --warn-duplicate-exports Warn about duplicate exports --compat-implib Create backward compatible import libs; create __imp_ as well --enable-auto-image-base Automatically choose image base for DLLs unless user specifies one --disable-auto-image-base Do not auto-choose image base (default) --dll-search-prefix= When linking dynamically to a dll without an importlib, use .dll in preference to lib.dll --enable-auto-import Do sophisticated linking of _sym to __imp_sym for DATA references --disable-auto-import Do not auto-import DATA items from DLLs --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at runtime --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for auto-imported DATA --enable-extra-pep-debug Enable verbose debug output when building or linking to DLLs (esp. auto-import) --enable-long-section-names Use long COFF section names even in executable image files --disable-long-section-names Never use long COFF section names, even in object files --[disable-]high-entropy-va Image is compatible with 64-bit address space layout randomization (ASLR) --[disable-]dynamicbase Image base address may be relocated using address space layout randomization (ASLR) --enable-reloc-section Create the base relocation table --disable-reloc-section Do not create the base relocation table --[disable-]forceinteg Code integrity checks are enforced --[disable-]nxcompat Image is compatible with data execution prevention --[disable-]no-isolation Image understands isolation but do not isolate the image --[disable-]no-seh Image does not use SEH; no SE handler may be called in this image --[disable-]no-bind Do not bind this image --[disable-]wdmdriver Driver uses the WDM model --[disable-]tsaware Image is Terminal Server aware --build-id[=STYLE] Generate build ID --thumb-entry= Set the entry point to be Thumb --[no-]insert-timestamp Use a real timestamp rather than zero (default). export, place into import library instead. --compat-implib Create backward compatible import libs; create __imp_ as well. --enable-auto-image-base[=
] Automatically choose image base for DLLs (optionally starting with address) unless specifically set with --image-base --disable-auto-image-base Do not auto-choose image base. (default) --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at runtime. --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for auto-imported DATA. --enable-extra-pe-debug Enable verbose debug output when building or linking to DLLs (esp. auto-import) --large-address-aware Executable supports virtual addresses greater than 2 gigabytes --disable-large-address-aware Executable does not support virtual addresses greater than 2 gigabytes --[disable-]no-seh Image does not use SEH. No SE handler may be called in this image %P:%pS: warning: redeclaration of memory region `%s' %P:%pS: warning: memory region `%s' not declared %F%P: invalid character %c (%d) in flags %F%P:%pS: error: output section '%s' must already exist %F%P:%pS: error: align with input and explicit align specified %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 %P: warning: address of `%s' isn't multiple of maximum page size %F%P:%pS can not PROVIDE assignment to location counter %F%P:%pS invalid assignment to location counter %F%P:%pS assignment to location counter invalid outside of SECTIONS %F%P:%pS cannot move location counter backwards (from %V to %V) %F%P:%s: hash creation failed %F%P: bfd_hash_lookup failed creating symbol %s %F%P: bfd_link_hash_lookup failed: %E %X%P:%pS: unresolvable symbol `%s' referenced in expression %F%P:%pS: undefined symbol `%s' referenced in expression %F%P:%pS: undefined section `%s' referenced in expression %F%P:%pS: undefined MEMORY region `%s' referenced in expression %F%P:%pS: unknown constant `%s' referenced in expression %X%P: unable to find version dependency `%s' %P:%s: file format not recognized; treating as linker script %F%P: common page size (0x%v) > maximum page size (0x%v) %P: error: unsupported option: %s %F%P: %s: plugin reported error after all symbols read As-needed library included to satisfy reference by file (symbol) %P: warning: CTF section in %pB not loaded; its types will be discarded: %s %P: warning: CTF output not created: `%s' %X%P: unable to read .exports section contents %X%P: %s does not support reloc %s for set %s %X%P: special section %s does not support reloc %s for set %s %X%P: unsupported size %d for set %s %F%P: bfd_merge_sections failed: %E %P: warning: CTF section in %pB cannot be linked: `%s' %P: warning: CTF linking failed; output will have no CTF section: %s %F%P: no sections assigned to phdrs %F%P: bfd_record_phdr failed: %E %X%P: section `%s' assigned to non-existent phdr `%s' %P: warning: --enable-non-contiguous-regions discards section `%pA' from `%pB' %X%P: required symbol `%s' not defined %F%P: input file '%s' is the same as output file %P: warning: could not find any targets that match endianness requirement %F%P: cannot open output file %s: %E %F%P: %s: can not make object file: %E %F%P: %s: can not set architecture: %E %P: invalid origin for memory region %s %P: invalid length for memory region %s %P: warning: %s contains output sections; did you forget -T? %F%P: bfd_hash_allocate failed creating symbol %s %P: %pB: file not recognized: %E; matching formats:%F%P: %pB: file not recognized: %E %F%P: %pB: --just-symbols may not be used on DSO %F%P: %pB: member %pB in archive is not an object %F%P: %pB: error adding symbols: %E %P: About to run error handling script '%s' with arguments: '%s' '%s' %P: Failed to run error handling script '%s', reason: %P: have you installed the static version of the %s library ? %P: note to link with %s use -l:%s or rename it to lib%s %F%P: invalid BFD target `%s' %P: skipping incompatible %s when searching for %s %F%P: attempted static link of dynamic object `%s' %P%F: cannot extract object-only section from %B: %E %pI: no new IR symbols to claim Archive member included to satisfy reference by file (symbol) %P: %pB: warning: definition of `%pT' overriding common from %pB %P: %pB: warning: definition of `%pT' overriding common %P: %pB: warning: common of `%pT' overridden by definition from %pB %P: %pB: warning: common of `%pT' overridden by definition %P: %pB: warning: common of `%pT' overridden by larger common from %pB %P: %pB: warning: common of `%pT' overridden by larger common %P: %pB: warning: common of `%pT' overriding smaller common from %pB %P: %pB: warning: common of `%pT' overriding smaller common %P: %pB and %pB: warning: multiple common of `%pT' %P: %pB: warning: multiple common of `%pT' %X%P: bfd_hash_table_init of cref table failed: %E %X%P: cref_hash_lookup failed: %E %P: %C: warning: multiple definition of `%pT'%X%P: %C: multiple definition of `%pT'%P: disabling relaxation; it will not work with multiple definitions %F%P: %s: can't open for writing: %E %P: warning: unrecognized --build-id style ignored %P: warning: cannot create .note.gnu.build-id section, --build-id ignored %P: warning: --package-metadata is empty, ignoring %P: warning: --package-metadata=%s does not contain valid JSON, ignoring: %s %P: warning: cannot create .note.package section, --package-metadata ignored %F%P: cannot use executable file '%pB' as input to a link %F%P: compact frame descriptions incompatible with DWARF2 .eh_frame from %pB %P: warning: cannot create .eh_frame_hdr section, --eh-frame-hdr ignored %F%P: failed to parse EH frame entries %F%P: could not create dummy IR bfd: %E %F%P: plugin failed to allocate memory for input: %s %F%P: plugin_strdup failed to allocate memory: %s %F%P: %s: plugin reported error claiming file %F%P: failed to add DT_NEEDED dynamic tag %P: warning: %s, needed by %pB, not found (try using -rpath or -rpath-link) %F%P: relocatable linking with relocations from format %s (%pB) to format %s (%pB) is not supported %X%P: %s architecture of input file `%pB' is incompatible with %s output %X%P: failed to merge target specific data of file %pB %F%P: %s: non-ELF symbol in ELF BFD! %F%P: unknown ELF symbol visibility: %d! %F%P: invalid reloc statement %F%P: could not define common symbol `%pT': %E Common symbol size file %F%P: %pB: could not read relocs: %E %F%P: %s: plugin symbol table corrupt (sym type %d) unknown LTO visibility value %x%P: %pB: symbol `%s' definition: %s, visibility: %s, resolution: %s CTF error: cannot get CTF errors: `%s' %F%P: invalid type for output section `%s' warning: INSERT statement in linker script is incompatible with --enable-non-contiguous-regions. %F%P: %s not found for insert unrecognised or unsupported token '%s' in search path %F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E %F%P: %pB: bfd_stat failed: %E %F%P: unsupported input file size: %s (%ld bytes) %P: warning: %s, needed by %pB, may conflict with %s %X%P: error: unplaced orphan section `%pA' from `%pB' %P: warning: orphan section `%pA' from `%pB' being placed in section `%s' %P:%pS: warning: --enable-non-contiguous-regions makes section `%pA' from `%pB' match /DISCARD/ clause. %P:%pS: warning: --enable-non-contiguous-regions may change behaviour for section `%pA' from `%pB' (assigned to %pA, but additional match: %pA) %F%P: illegal use of `%s' section %F%P: output format %s cannot represent section called %s: %E %P: warning: CTF section emission failed; output will have no CTF section: %s %F%P: failed to set dynamic section sizes: %E %F%P: %pB: can't read contents of section .gnu.warning: %E %F%P:%pS: non constant or forward reference address expression for section %s %X%P: internal error on COFF shared library section %s %F%P: error: no memory region specified for loadable section `%s' %P: warning: no memory region specified for loadable section `%s' %P: warning: start of section %s changed by %ld %P: warning: dot moved backwards before `%s' %F%P: can't relax section: %E %F%P: Output section `%pA' not large enough for the linker-created stubs section `%pA'. %F%P: Relaxation not supported with --enable-non-contiguous-regions (section `%pA' would overflow `%pA' after it changed size). %X%P: .eh_frame/.stab edit: %E %X%P: address 0x%v of %pB section `%s' is not within region `%s' %X%P: %pB section `%s' will not fit in region `%s' %F%P: %pA has both ordered and unordered sections %F%P: map sections to segments failed: %E %F%P: failed to strip zero-sized dynamic sections %F%P: looping in map_segments %F%P: failed to record assignment to %s: %E %F%P: %s: can't set start address %F%P: 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 %F%P: --gc-sections requires a defined symbol root specified by -e or -u %F%P: warning: CTF strtab association failed; strings will not be shared: %s %F%P: cannot create split section name for %s %F%P: clone section failed: %E %F%P: bfd_new_link_order failed: %E %X%P: section %s VMA wraps around address space %X%P: section %s LMA wraps around address space %X%P: section %s LMA [%V,%V] overlaps section %s LMA [%V,%V] %X%P: section %s VMA [%V,%V] overlaps section %s VMA [%V,%V] %X%P: region `%s' overflowed by %lu bytes %X%P: region `%s' overflowed by %lu byte %P: warning: .note.gnu.build-id section discarded, --build-id ignored SORT_BY_NAME(SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT(SORT_BY_NAME(%F%P: warning: CTF symbol addition failed; CTF will not be tied to symbols: %s %F%P: warning: CTF symbol shuffling failed; CTF will not be tied to symbols: %s %X%P: %H: prohibited cross reference from %s to `%pT' in %s failed to create output section%X%P: %H: undefined reference to `%pT' %P: %H: warning: undefined reference to `%pT' %X%P: %D: more undefined references to `%pT' follow %P: %D: warning: more undefined references to `%pT' follow %X%P: %pB: undefined reference to `%pT' %P: %pB: warning: undefined reference to `%pT' %X%P: %pB: more undefined references to `%pT' follow %P: %pB: warning: more undefined references to `%pT' follow additional relocation overflows omitted from the output relocation truncated to fit: %s against undefined symbol `%pT' relocation truncated to fit: %s against symbol `%pT' defined in %pA section in %pB relocation truncated to fit: %s against `%pT'%P: warning: .note.package section discarded, --package-metadata ignored %X%H: dangerous relocation: %s %X%H: reloc refers to symbol `%pT' which is not being output %X%P: different relocs used in set %s %X%P: different object file formats composing set %s %P: warning: global constructor %s used %F%P: BFD backend error: BFD_RELOC_CTOR unsupported %F%s: file not recognized: %E %P:%pS: ignoring invalid character `%s'%s %P: internal error: aborting at %s:%d in %s %F%P: invalid hex number for PE parameter '%s' %F%P: strange hex info for PE parameter '%s' %F%P: cannot open base file %s %P: warning: bad version number in -subsystem option %F%P: invalid subsystem type %s use-nul-prefixed-import-tablesenable-runtime-pseudo-reloc-v2/* Script for -Ur */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT(pe-x86-64) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { .text : { *(.text) . = ALIGN(8); } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data : { *(.data) KEEP(*(.jcr)) } .rdata : { *(.rdata) . = ALIGN(4); /* .ctors & .dtors */ . = ALIGN(8); /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, we do not PROVIDE them. This is because the ctors.o startup code in libgcc defines them as common symbols, with the expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.ctors)); KEEP (*(.ctor)); KEEP (*(SORT_BY_NAME(.ctors.*))); LONG (0); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.dtors)); KEEP (*(.dtor)); KEEP (*(SORT_BY_NAME(.dtors.*))); LONG (0); LONG (0); /* .CRT */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ } .eh_frame : { KEEP (*(.eh_frame)) } .pdata : { KEEP(*(.pdata)) } .xdata : { KEEP(*(.xdata)) } .bss : { *(.bss) *(COMMON) } .edata : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) } .idata : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of the .tls section. This is important because _tls_start MUST be at the beginning of the section to enable SECREL32 relocations with TLS data. */ .tls : { *(.tls) } .endjunk : { /* end is deprecated, don't use it */ } .rsrc : SUBALIGN(4) { *(.rsrc) } .reloc : { *(.reloc) } .stab : { *(.stab) } .stabstr : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges : { *(.debug_aranges) } .zdebug_aranges : { *(.zdebug_aranges) } .debug_pubnames : { *(.debug_pubnames) } .zdebug_pubnames : { *(.zdebug_pubnames) } /* DWARF 2. */ .debug_info : { *(.debug_info) } .zdebug_info : { *(.zdebug_info) } .debug_abbrev : { *(.debug_abbrev) } .zdebug_abbrev : { *(.zdebug_abbrev) } .debug_line : { *(.debug_line) } .zdebug_line : { *(.zdebug_line) } .debug_frame : { *(.debug_frame*) } .zdebug_frame : { *(.zdebug_frame*) } .debug_str : { *(.debug_str) } .zdebug_str : { *(.zdebug_str) } .debug_loc : { *(.debug_loc) } .zdebug_loc : { *(.zdebug_loc) } .debug_macinfo : { *(.debug_macinfo) } .zdebug_macinfo : { *(.zdebug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames : { *(.debug_weaknames) } .zdebug_weaknames : { *(.zdebug_weaknames) } .debug_funcnames : { *(.debug_funcnames) } .zdebug_funcnames : { *(.zdebug_funcnames) } .debug_typenames : { *(.debug_typenames) } .zdebug_typenames : { *(.zdebug_typenames) } .debug_varnames : { *(.debug_varnames) } .zdebug_varnames : { *(.zdebug_varnames) } /* DWARF 3. */ .debug_pubtypes : { *(.debug_pubtypes) } .zdebug_pubtypes : { *(.zdebug_pubtypes) } .debug_ranges : { *(.debug_ranges) } .zdebug_ranges : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types : { *(.debug_types) } .zdebug_types : { *(.zdebug_types) } /* DWARF 5. */ .debug_addr : { *(.debug_addr) } .zdebug_addr : { *(.zdebug_addr) } .debug_line_str : { *(.debug_line_str) } .zdebug_line_str : { *(.zdebug_line_str) } .debug_loclists : { *(.debug_loclists) } .zdebug_loclists : { *(.zdebug_loclists) } .debug_macro : { *(.debug_macro) } .zdebug_macro : { *(.zdebug_macro) } .debug_names : { *(.debug_names) } .zdebug_names : { *(.zdebug_names) } .debug_rnglists : { *(.debug_rnglists) } .zdebug_rnglists : { *(.zdebug_rnglists) } .debug_str_offsets : { *(.debug_str_offsets) } .zdebug_str_offsets : { *(.zdebug_str_offsets) } .debug_sup : { *(.debug_sup) } /* For Go and Rust. */ .debug_gdb_scripts : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts : { *(.zdebug_gdb_scripts) } } /* Script for -r */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT(pe-x86-64) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { .text : { *(.text) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data : { *(.data) KEEP(*(.jcr)) } .rdata : { *(.rdata) . = ALIGN(4); /* .ctors & .dtors */ /* .CRT */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ } .eh_frame : { KEEP (*(.eh_frame)) } .pdata : { KEEP(*(.pdata)) } .xdata : { KEEP(*(.xdata)) } .bss : { *(.bss) *(COMMON) } .edata : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) } .idata : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of the .tls section. This is important because _tls_start MUST be at the beginning of the section to enable SECREL32 relocations with TLS data. */ .tls : { *(.tls) } .endjunk : { /* end is deprecated, don't use it */ } .rsrc : SUBALIGN(4) { *(.rsrc) } .reloc : { *(.reloc) } .stab : { *(.stab) } .stabstr : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges : { *(.debug_aranges) } .zdebug_aranges : { *(.zdebug_aranges) } .debug_pubnames : { *(.debug_pubnames) } .zdebug_pubnames : { *(.zdebug_pubnames) } /* DWARF 2. */ .debug_info : { *(.debug_info) } .zdebug_info : { *(.zdebug_info) } .debug_abbrev : { *(.debug_abbrev) } .zdebug_abbrev : { *(.zdebug_abbrev) } .debug_line : { *(.debug_line) } .zdebug_line : { *(.zdebug_line) } .debug_frame : { *(.debug_frame*) } .zdebug_frame : { *(.zdebug_frame*) } .debug_str : { *(.debug_str) } .zdebug_str : { *(.zdebug_str) } .debug_loc : { *(.debug_loc) } .zdebug_loc : { *(.zdebug_loc) } .debug_macinfo : { *(.debug_macinfo) } .zdebug_macinfo : { *(.zdebug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames : { *(.debug_weaknames) } .zdebug_weaknames : { *(.zdebug_weaknames) } .debug_funcnames : { *(.debug_funcnames) } .zdebug_funcnames : { *(.zdebug_funcnames) } .debug_typenames : { *(.debug_typenames) } .zdebug_typenames : { *(.zdebug_typenames) } .debug_varnames : { *(.debug_varnames) } .zdebug_varnames : { *(.zdebug_varnames) } /* DWARF 3. */ .debug_pubtypes : { *(.debug_pubtypes) } .zdebug_pubtypes : { *(.zdebug_pubtypes) } .debug_ranges : { *(.debug_ranges) } .zdebug_ranges : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types : { *(.debug_types) } .zdebug_types : { *(.zdebug_types) } /* DWARF 5. */ .debug_addr : { *(.debug_addr) } .zdebug_addr : { *(.zdebug_addr) } .debug_line_str : { *(.debug_line_str) } .zdebug_line_str : { *(.zdebug_line_str) } .debug_loclists : { *(.debug_loclists) } .zdebug_loclists : { *(.zdebug_loclists) } .debug_macro : { *(.debug_macro) } .zdebug_macro : { *(.zdebug_macro) } .debug_names : { *(.debug_names) } .zdebug_names : { *(.zdebug_names) } .debug_rnglists : { *(.debug_rnglists) } .zdebug_rnglists : { *(.zdebug_rnglists) } .debug_str_offsets : { *(.debug_str_offsets) } .zdebug_str_offsets : { *(.zdebug_str_offsets) } .debug_sup : { *(.debug_sup) } /* For Go and Rust. */ .debug_gdb_scripts : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts : { *(.zdebug_gdb_scripts) } } /* Script for -N */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT(pei-x86-64) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { /* Make the virtual address and file offset synced if the alignment is lower than the target page size. */ . = SIZEOF_HEADERS; . = ALIGN(__section_alignment__); .text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) : { KEEP (*(SORT_NONE(.init))) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = ALIGN(8); KEEP (*(SORT_NONE(.fini))) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); KEEP (*(.gcc_except_table)) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data BLOCK(__section_alignment__) : { __data_start__ = . ; *(.data) *(.data2) *(SORT(.data$*)) KEEP(*(.jcr)) __data_end__ = . ; *(.data_cygwin_nocopy) } .rdata BLOCK(__section_alignment__) : { *(.rdata) *(SORT(.rdata$*)) . = ALIGN(4); __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; /* .ctors & .dtors */ . = ALIGN(8); /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, we do not PROVIDE them. This is because the ctors.o startup code in libgcc defines them as common symbols, with the expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.ctors)); KEEP (*(.ctor)); KEEP (*(SORT_BY_NAME(.ctors.*))); LONG (0); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.dtors)); KEEP (*(.dtor)); KEEP (*(SORT_BY_NAME(.dtors.*))); LONG (0); LONG (0); /* .CRT */ ___crt_xc_start__ = . ; KEEP (*(SORT(.CRT$XC*))) /* C initialization */ ___crt_xc_end__ = . ; ___crt_xi_start__ = . ; KEEP (*(SORT(.CRT$XI*))) /* C++ initialization */ ___crt_xi_end__ = . ; ___crt_xl_start__ = . ; KEEP (*(SORT(.CRT$XL*))) /* TLS callbacks */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ ___crt_xp_start__ = . ; KEEP (*(SORT(.CRT$XP*))) /* Pre-termination */ ___crt_xp_end__ = . ; ___crt_xt_start__ = . ; KEEP (*(SORT(.CRT$XT*))) /* Termination */ ___crt_xt_end__ = . ; ___crt_xd_start__ = . ; KEEP (*(SORT(.CRT$XD*))) /* Dynamic TLS Initializer */ ___crt_xd_end__ = . ; } ___RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; __RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; ___RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; __RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; .eh_frame BLOCK(__section_alignment__) : { KEEP (*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .xdata BLOCK(__section_alignment__) : { KEEP(*(.xdata*)) } .bss BLOCK(__section_alignment__) : { __bss_start__ = . ; *(.bss) *(COMMON) __bss_end__ = . ; } .edata BLOCK(__section_alignment__) : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) *(.note.GNU-stack) *(.gnu.lto_*) *(.gnu_object_only) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ KEEP (SORT(*)(.idata$2)) KEEP (SORT(*)(.idata$3)) /* These zeroes mark the end of the import list. */ LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); . = ALIGN(8); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of the .tls section. This is important because _tls_start MUST be at the beginning of the section to enable SECREL32 relocations with TLS data. */ .tls BLOCK(__section_alignment__) : { ___tls_start__ = . ; KEEP (*(.tls$AAA)) KEEP (*(.tls)) KEEP (*(.tls$)) KEEP (*(SORT(.tls$*))) KEEP (*(.tls$ZZZ)) ___tls_end__ = . ; } .endjunk BLOCK(__section_alignment__) : { /* end is deprecated, don't use it */ PROVIDE (end = .); PROVIDE ( _end = .); __end__ = .; } .rsrc BLOCK(__section_alignment__) : SUBALIGN(4) { KEEP (*(.rsrc)) KEEP (*(.rsrc$*)) } .reloc BLOCK(__section_alignment__) : { *(.reloc) } .stab BLOCK(__section_alignment__) (NOLOAD) : { *(.stab) } .stabstr BLOCK(__section_alignment__) (NOLOAD) : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_aranges) } .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_aranges) } .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubnames) } /* DWARF 2. */ .debug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_info .gnu.linkonce.wi.*) } .zdebug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_info .zdebug.gnu.linkonce.wi.*) } .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_abbrev) } .debug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line) } .zdebug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line) } .debug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_frame*) } .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_frame*) } .debug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str) } .zdebug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str) } .debug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loc) } .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loc) } .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_weaknames) } .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_funcnames) } .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_typenames) } .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_varnames) } /* DWARF 3. */ .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_types .gnu.linkonce.wt.*) } .zdebug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_types .gnu.linkonce.wt.*) } /* DWARF 5. */ .debug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_addr) } .zdebug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_addr) } .debug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line_str) } .zdebug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line_str) } .debug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loclists) } .zdebug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loclists) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } .debug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_names) } .zdebug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_names) } .debug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_rnglists) } .zdebug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_rnglists) } .debug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str_offsets) } .zdebug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str_offsets) } .debug_sup BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_sup) } /* For Go and Rust. */ .debug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_gdb_scripts) } } /* Script for -n */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT(pei-x86-64) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { /* Make the virtual address and file offset synced if the alignment is lower than the target page size. */ . = SIZEOF_HEADERS; . = ALIGN(__section_alignment__); .text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) : { KEEP (*(SORT_NONE(.init))) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = ALIGN(8); KEEP (*(SORT_NONE(.fini))) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); KEEP (*(.gcc_except_table)) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data BLOCK(__section_alignment__) : { __data_start__ = . ; *(.data) *(.data2) *(SORT(.data$*)) KEEP(*(.jcr)) __data_end__ = . ; *(.data_cygwin_nocopy) } .rdata BLOCK(__section_alignment__) : { *(.rdata) *(SORT(.rdata$*)) . = ALIGN(4); __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; /* .ctors & .dtors */ . = ALIGN(8); /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, we do not PROVIDE them. This is because the ctors.o startup code in libgcc defines them as common symbols, with the expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.ctors)); KEEP (*(.ctor)); KEEP (*(SORT_BY_NAME(.ctors.*))); LONG (0); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.dtors)); KEEP (*(.dtor)); KEEP (*(SORT_BY_NAME(.dtors.*))); LONG (0); LONG (0); /* .CRT */ ___crt_xc_start__ = . ; KEEP (*(SORT(.CRT$XC*))) /* C initialization */ ___crt_xc_end__ = . ; ___crt_xi_start__ = . ; KEEP (*(SORT(.CRT$XI*))) /* C++ initialization */ ___crt_xi_end__ = . ; ___crt_xl_start__ = . ; KEEP (*(SORT(.CRT$XL*))) /* TLS callbacks */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ ___crt_xp_start__ = . ; KEEP (*(SORT(.CRT$XP*))) /* Pre-termination */ ___crt_xp_end__ = . ; ___crt_xt_start__ = . ; KEEP (*(SORT(.CRT$XT*))) /* Termination */ ___crt_xt_end__ = . ; ___crt_xd_start__ = . ; KEEP (*(SORT(.CRT$XD*))) /* Dynamic TLS Initializer */ ___crt_xd_end__ = . ; } ___RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; __RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; ___RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; __RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; .eh_frame BLOCK(__section_alignment__) : { KEEP (*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .xdata BLOCK(__section_alignment__) : { KEEP(*(.xdata*)) } .bss BLOCK(__section_alignment__) : { __bss_start__ = . ; *(.bss) *(COMMON) __bss_end__ = . ; } .edata BLOCK(__section_alignment__) : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) *(.note.GNU-stack) *(.gnu.lto_*) *(.gnu_object_only) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ KEEP (SORT(*)(.idata$2)) KEEP (SORT(*)(.idata$3)) /* These zeroes mark the end of the import list. */ LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); . = ALIGN(8); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of the .tls section. This is important because _tls_start MUST be at the beginning of the section to enable SECREL32 relocations with TLS data. */ .tls BLOCK(__section_alignment__) : { ___tls_start__ = . ; KEEP (*(.tls$AAA)) KEEP (*(.tls)) KEEP (*(.tls$)) KEEP (*(SORT(.tls$*))) KEEP (*(.tls$ZZZ)) ___tls_end__ = . ; } .endjunk BLOCK(__section_alignment__) : { /* end is deprecated, don't use it */ PROVIDE (end = .); PROVIDE ( _end = .); __end__ = .; } .rsrc BLOCK(__section_alignment__) : SUBALIGN(4) { KEEP (*(.rsrc)) KEEP (*(.rsrc$*)) } .reloc BLOCK(__section_alignment__) : { *(.reloc) } .stab BLOCK(__section_alignment__) (NOLOAD) : { *(.stab) } .stabstr BLOCK(__section_alignment__) (NOLOAD) : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_aranges) } .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_aranges) } .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubnames) } /* DWARF 2. */ .debug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_info .gnu.linkonce.wi.*) } .zdebug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_info .zdebug.gnu.linkonce.wi.*) } .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_abbrev) } .debug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line) } .zdebug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line) } .debug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_frame*) } .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_frame*) } .debug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str) } .zdebug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str) } .debug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loc) } .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loc) } .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_weaknames) } .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_funcnames) } .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_typenames) } .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_varnames) } /* DWARF 3. */ .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_types .gnu.linkonce.wt.*) } .zdebug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_types .gnu.linkonce.wt.*) } /* DWARF 5. */ .debug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_addr) } .zdebug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_addr) } .debug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line_str) } .zdebug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line_str) } .debug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loclists) } .zdebug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loclists) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } .debug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_names) } .zdebug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_names) } .debug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_rnglists) } .zdebug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_rnglists) } .debug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str_offsets) } .zdebug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str_offsets) } .debug_sup BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_sup) } /* For Go and Rust. */ .debug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_gdb_scripts) } } /* Script for --enable-auto-import */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT(pei-x86-64) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { /* Make the virtual address and file offset synced if the alignment is lower than the target page size. */ . = SIZEOF_HEADERS; . = ALIGN(__section_alignment__); .text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) : { KEEP (*(SORT_NONE(.init))) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = ALIGN(8); KEEP (*(SORT_NONE(.fini))) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); KEEP (*(.gcc_except_table)) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data BLOCK(__section_alignment__) : { __data_start__ = . ; *(.data) *(.data2) *(SORT(.data$*)) *(.rdata) *(SORT(.rdata$*)) KEEP(*(.jcr)) __data_end__ = . ; *(.data_cygwin_nocopy) } .rdata BLOCK(__section_alignment__) : { . = ALIGN(4); __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; /* .ctors & .dtors */ . = ALIGN(8); /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, we do not PROVIDE them. This is because the ctors.o startup code in libgcc defines them as common symbols, with the expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.ctors)); KEEP (*(.ctor)); KEEP (*(SORT_BY_NAME(.ctors.*))); LONG (0); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.dtors)); KEEP (*(.dtor)); KEEP (*(SORT_BY_NAME(.dtors.*))); LONG (0); LONG (0); /* .CRT */ ___crt_xc_start__ = . ; KEEP (*(SORT(.CRT$XC*))) /* C initialization */ ___crt_xc_end__ = . ; ___crt_xi_start__ = . ; KEEP (*(SORT(.CRT$XI*))) /* C++ initialization */ ___crt_xi_end__ = . ; ___crt_xl_start__ = . ; KEEP (*(SORT(.CRT$XL*))) /* TLS callbacks */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ ___crt_xp_start__ = . ; KEEP (*(SORT(.CRT$XP*))) /* Pre-termination */ ___crt_xp_end__ = . ; ___crt_xt_start__ = . ; KEEP (*(SORT(.CRT$XT*))) /* Termination */ ___crt_xt_end__ = . ; ___crt_xd_start__ = . ; KEEP (*(SORT(.CRT$XD*))) /* Dynamic TLS Initializer */ ___crt_xd_end__ = . ; } ___RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; __RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; ___RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; __RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; .eh_frame BLOCK(__section_alignment__) : { KEEP (*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .xdata BLOCK(__section_alignment__) : { KEEP(*(.xdata*)) } .bss BLOCK(__section_alignment__) : { __bss_start__ = . ; *(.bss) *(COMMON) __bss_end__ = . ; } .edata BLOCK(__section_alignment__) : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) *(.note.GNU-stack) *(.gnu.lto_*) *(.gnu_object_only) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ KEEP (SORT(*)(.idata$2)) KEEP (SORT(*)(.idata$3)) /* These zeroes mark the end of the import list. */ LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); . = ALIGN(8); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of the .tls section. This is important because _tls_start MUST be at the beginning of the section to enable SECREL32 relocations with TLS data. */ .tls BLOCK(__section_alignment__) : { ___tls_start__ = . ; KEEP (*(.tls$AAA)) KEEP (*(.tls)) KEEP (*(.tls$)) KEEP (*(SORT(.tls$*))) KEEP (*(.tls$ZZZ)) ___tls_end__ = . ; } .endjunk BLOCK(__section_alignment__) : { /* end is deprecated, don't use it */ PROVIDE (end = .); PROVIDE ( _end = .); __end__ = .; } .rsrc BLOCK(__section_alignment__) : SUBALIGN(4) { KEEP (*(.rsrc)) KEEP (*(.rsrc$*)) } .reloc BLOCK(__section_alignment__) : { *(.reloc) } .stab BLOCK(__section_alignment__) (NOLOAD) : { *(.stab) } .stabstr BLOCK(__section_alignment__) (NOLOAD) : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_aranges) } .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_aranges) } .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubnames) } /* DWARF 2. */ .debug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_info .gnu.linkonce.wi.*) } .zdebug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_info .zdebug.gnu.linkonce.wi.*) } .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_abbrev) } .debug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line) } .zdebug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line) } .debug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_frame*) } .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_frame*) } .debug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str) } .zdebug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str) } .debug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loc) } .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loc) } .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_weaknames) } .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_funcnames) } .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_typenames) } .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_varnames) } /* DWARF 3. */ .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_types .gnu.linkonce.wt.*) } .zdebug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_types .gnu.linkonce.wt.*) } /* DWARF 5. */ .debug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_addr) } .zdebug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_addr) } .debug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line_str) } .zdebug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line_str) } .debug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loclists) } .zdebug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loclists) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } .debug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_names) } .zdebug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_names) } .debug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_rnglists) } .zdebug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_rnglists) } .debug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str_offsets) } .zdebug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str_offsets) } .debug_sup BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_sup) } /* For Go and Rust. */ .debug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_gdb_scripts) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2025 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ OUTPUT_FORMAT(pei-x86-64) SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { /* Make the virtual address and file offset synced if the alignment is lower than the target page size. */ . = SIZEOF_HEADERS; . = ALIGN(__section_alignment__); .text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) : { KEEP (*(SORT_NONE(.init))) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = ALIGN(8); KEEP (*(SORT_NONE(.fini))) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); KEEP (*(.gcc_except_table)) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data BLOCK(__section_alignment__) : { __data_start__ = . ; *(.data) *(.data2) *(SORT(.data$*)) KEEP(*(.jcr)) __data_end__ = . ; *(.data_cygwin_nocopy) } .rdata BLOCK(__section_alignment__) : { *(.rdata) *(SORT(.rdata$*)) . = ALIGN(4); __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; /* .ctors & .dtors */ . = ALIGN(8); /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, we do not PROVIDE them. This is because the ctors.o startup code in libgcc defines them as common symbols, with the expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.ctors)); KEEP (*(.ctor)); KEEP (*(SORT_BY_NAME(.ctors.*))); LONG (0); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); LONG (-1); KEEP (*(.dtors)); KEEP (*(.dtor)); KEEP (*(SORT_BY_NAME(.dtors.*))); LONG (0); LONG (0); /* .CRT */ ___crt_xc_start__ = . ; KEEP (*(SORT(.CRT$XC*))) /* C initialization */ ___crt_xc_end__ = . ; ___crt_xi_start__ = . ; KEEP (*(SORT(.CRT$XI*))) /* C++ initialization */ ___crt_xi_end__ = . ; ___crt_xl_start__ = . ; KEEP (*(SORT(.CRT$XL*))) /* TLS callbacks */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ ___crt_xp_start__ = . ; KEEP (*(SORT(.CRT$XP*))) /* Pre-termination */ ___crt_xp_end__ = . ; ___crt_xt_start__ = . ; KEEP (*(SORT(.CRT$XT*))) /* Termination */ ___crt_xt_end__ = . ; ___crt_xd_start__ = . ; KEEP (*(SORT(.CRT$XD*))) /* Dynamic TLS Initializer */ ___crt_xd_end__ = . ; } ___RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; __RUNTIME_PSEUDO_RELOC_LIST_END__ = __rt_psrelocs_end; ___RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; __RUNTIME_PSEUDO_RELOC_LIST__ = __rt_psrelocs_start; .eh_frame BLOCK(__section_alignment__) : { KEEP (*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .xdata BLOCK(__section_alignment__) : { KEEP(*(.xdata*)) } .bss BLOCK(__section_alignment__) : { __bss_start__ = . ; *(.bss) *(COMMON) __bss_end__ = . ; } .edata BLOCK(__section_alignment__) : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) *(.note.GNU-stack) *(.gnu.lto_*) *(.gnu_object_only) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ KEEP (SORT(*)(.idata$2)) KEEP (SORT(*)(.idata$3)) /* These zeroes mark the end of the import list. */ LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); . = ALIGN(8); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of the .tls section. This is important because _tls_start MUST be at the beginning of the section to enable SECREL32 relocations with TLS data. */ .tls BLOCK(__section_alignment__) : { ___tls_start__ = . ; KEEP (*(.tls$AAA)) KEEP (*(.tls)) KEEP (*(.tls$)) KEEP (*(SORT(.tls$*))) KEEP (*(.tls$ZZZ)) ___tls_end__ = . ; } .endjunk BLOCK(__section_alignment__) : { /* end is deprecated, don't use it */ PROVIDE (end = .); PROVIDE ( _end = .); __end__ = .; } .rsrc BLOCK(__section_alignment__) : SUBALIGN(4) { KEEP (*(.rsrc)) KEEP (*(.rsrc$*)) } .reloc BLOCK(__section_alignment__) : { *(.reloc) } .stab BLOCK(__section_alignment__) (NOLOAD) : { *(.stab) } .stabstr BLOCK(__section_alignment__) (NOLOAD) : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_aranges) } .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_aranges) } .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubnames) } /* DWARF 2. */ .debug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_info .gnu.linkonce.wi.*) } .zdebug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_info .zdebug.gnu.linkonce.wi.*) } .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_abbrev) } .debug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line) } .zdebug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line) } .debug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_frame*) } .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_frame*) } .debug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str) } .zdebug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str) } .debug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loc) } .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loc) } .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_weaknames) } .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_funcnames) } .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_typenames) } .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_varnames) } /* DWARF 3. */ .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_types .gnu.linkonce.wt.*) } .zdebug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_types .gnu.linkonce.wt.*) } /* DWARF 5. */ .debug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_addr) } .zdebug_addr BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_addr) } .debug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line_str) } .zdebug_line_str BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_line_str) } .debug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loclists) } .zdebug_loclists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_loclists) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } .debug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_names) } .zdebug_names BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_names) } .debug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_rnglists) } .zdebug_rnglists BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_rnglists) } .debug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str_offsets) } .zdebug_str_offsets BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_str_offsets) } .debug_sup BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_sup) } /* For Go and Rust. */ .debug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_gdb_scripts) } } %P: warning, file alignment > section alignment %P: warning: --export-dynamic is not supported for PE+ targets, did you mean --export-all-symbols? %P: %H: cannot get section contents - auto-import exception import of 0x%lx(0x%lx) sec_addr=0x%lxcreating runtime pseudo-reloc entry for %s (addend=%d) %X%P: %H: variable '%pT' can't be auto-imported; please read the documentation for ld's --enable-auto-import for details %P: warning: .buildid section discarded, --build-id ignored %P: base relocation for section `%s' above .reloc section %X%P: error: %d-bit reloc in dll %X%P: can't open .lib file: %s %X%P: %s(%s): can't find member in non-archive file%X%P: %s(%s): can't find member in archive%X%P: bfd_set_archive_head: %E %P: can't open output def file %s %P: warning: cannot create .buildid section, --build-id ignored %F%P: cannot perform PE operations on non PE output file '%pB' Info: resolving %s by linking to %s (auto-import) %P: warning: auto-importing has been activated without --enable-auto-import specified on the command line; this should work unless it involves constant data structures referencing symbols from auto-imported DLLs warning: resolving %s by linking to %s Use --enable-stdcall-fixup to disable these warnings Use --disable-stdcall-fixup to disable these fixups %P: warning: overwriting decorated name %s with %s %X%P: cannot export %s: invalid export name %X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d) %P: warning, duplicate EXPORT: %s %X%P: cannot export %s: symbol not defined %X%P: cannot export %s: symbol wrong type (%d vs %d) %X%P: cannot export %s: symbol not found %X%P: error: ordinal used twice: %d (%s vs %s) %X%P: error: export ordinal too large: %d %X%P: unable to process relocs: %E %X%P: %s: this doesn't appear to be a DLL %s %s: 0x%08lx-0x%08lx (0x%08lx) %s dll-name: %s sym: %s addr: 0x%lx %s %P: warning: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols? %P: warning: resolving %s by linking to %s enable-runtime-pseudo-reloc-v1%X%P: error: can't use long section names on this arch %s:%d: Warning: path components stripped from %s, '%s' %X%P: unsupported PEI architecture: %s considering exporting: %s, abfd=%p, abfd->my_arc=%p %X%P: can not create .edata section: %E %X%P: can not create .reloc section: %E Warning: .drectve `%s' unrecognized Warning: corrupt .drectve at end of def file %P: error: NULL decorated name for %s _cygwin_noncygwin_dll_entry@12posix_spawn_file_actions_adddup2posix_spawn_file_actions_addclosecould not create temporary filePEX_STDERR_TO_PIPE used in the middle of pipelineÍæéÿóÕéÿÍæéÿÂÕéÿÍæéÿ²Õéÿ¢Õéÿ’Õéÿ‚ÕéÿrÕéÿiÕéÿYÕéÿ#ÕéÿÕéÿ ÕéÿúÔéÿ@Õéÿ3ÕéÿIÕéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿêÔéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿÍæéÿ;ÔéÿêÞèÿ{{æÿ3ßèÿr{æÿßèÿ»Þèÿ-�æÿãåèÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿŒ€æÿv€æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿº€æÿ-�æÿ3ˆæÿ-�æÿ-�æÿ-�æÿO‰æÿˆæÿçœæÿ-�æÿêèèÿ-�æÿ-�æÿÆåèÿ+œæÿœæÿ—™æÿ-�æÿ-�æÿE™æÿë•æÿ¦êèÿ-�æÿ#…æÿ-�æÿ …æÿa†æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ8†æÿ$†æÿ†æÿ•æÿýêèÿT…æÿÚåèÿ9…æÿUêèÿ-�æÿ-�æÿpæèÿÚåèÿI�æÿ†æèÿ-�æÿo�æÿUêèÿc�æÿÕŠæÿœ�æÿ‰�æÿ{�æÿ¹šæÿašæÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿ-�æÿÖ™æÿÊ™æÿzŒæÿAŒæÿ›æÿêèèÿ5ŒæÿÚåèÿ,‡æÿ‡æÿ‡æÿ‡æÿO‰æÿY‡æÿ´ëèÿÚåèÿï~æÿã~æÿf~æÿñ˜æÿå˜æÿÙ˜æÿ™æÿ™æÿ+™æÿʘæÿ–æÿòêèÿ(•æÿ#ëèÿ‚–æÿŠéèÿ9…æÿ_—æÿ°–æÿ_‚æÿS‚æÿëèÿú�æÿâ�æÿŠœæÿö›æÿÛ›æÿÅ‘æÿŠœæÿª‘æÿ�‘æÿƒ‘æÿé�æÿu�æÿf�æÿ5�æÿ�æÿÍ�æÿx�æÿ#�æÿ�æÿçŽæÿªŽæÿžŽæÿ’Žæÿ†ŽæÿzŽæÿ{�æÿnŽæÿbŽæÿVŽæÿŽæÿð�æÿ�æÿ�æÿ�æÿ£æèÿæêèÿK�æÿ?�æÿ3�æÿ'�æÿlŸæÿÑŸæÿ æÿ‘ŸæÿÅŸæÿ¹Ÿæÿ•æÿî”æÿý˜æÿd‹æÿ…”æÿo”æÿW”æÿ?”æÿ3”æÿ”æÿ”æÿ”æÿù“æÿí“æÿÕ“æÿ·“æÿ«“æÿŸ“æÿŒ“æÿ€“æÿt“æÿh“æÿ÷Œæÿìéèÿ­’æÿu’æÿC‰æÿ7‰æÿ‰æÿ‰æÿ+’æÿì‘æÿéèÿùåèÿv–æÿ÷‰æÿë‰æÿ؉æÿ½‰æÿÔæèÿ¯æèÿ ŠæÿŠæÿ,Šæÿ¿‡æÿëŒæÿߌæÿÓŒæÿÇŒæÿ»Œæÿ¯Œæÿ£Œæÿ�ŒæÿÖžæÿÉŠæÿ Šæÿ”Šæÿ?‹æÿ%‹æÿK‹æÿGˆæÿyˆæÿmˆæÿaˆæÿUˆæÿ�ˆæÿ‘ˆæÿ¯æÿ¾øèÿ>úèÿò£æÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿæ£æÿÚ£æÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿGöèÿΣæÿ“£æÿp£æÿ‚úèÿŸ£æÿçùèÿ§¤æÿŒ¤æÿF¤æÿ:¤æÿ¯ŸæÿN§æÿ:§æÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿ.§æÿ"§æÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿãñéÿ§æÿ §æÿç¦æÿϦæÿ[¦æÿ¦æÿÄ¥æÿ©¥æÿ<¥æÿ0¥æÿ‚¥æÿ£±æÿ�±æÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿƒ±æÿw±æÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿoôéÿœ²æÿ�²æÿm²æÿU²æÿ䲿ÿ¨²æÿ³æÿ\±æÿ±æÿ ±æÿþ°æÿß½æÿ¾æÿë½æÿ¾æÿ1¾æÿ½æÿ¸½æÿn½æÿ ½æÿ¬½æÿcmdline_remove_object_only_filesz:P: #   cmdline_get_object_only_input_files@@@BY@ÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ#Eg‰«Íïþܺ˜vT2ðáÒà uêÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿrêÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿ} êÿ} êÿÂÌæÿgêÿ} êÿ} êÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿñêÿËæÿËæÿËæÿËæÿËæÿêÿÁêÿ[êÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿþêÿËæÿËæÿËæÿËæÿËæÿËæÿËæÿÔÍæÿËæÿËæÿËæÿ›êÿËæÿËæÿñêÿËæÿ|Ìæÿ7êÿËæÿŸÌæÿÉæÿÉæÿRêÿRêÿÉæÿÉæÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿÇêÿÇêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿmêÿRêÿRêÿRêÿRêÿRêÿRêÿRêÿkêÿRêÿRêÿRêÿŒêÿRêÿRêÿêÿRêÿmêÿÇêÿRêÿmêÿyêÿA êÿêÿêÿl êÿ,êÿQêÿåêÿåêÿåêÿåêÿåêÿåêÿ¡ÈæÿåêÿåêÿåêÿåêÿåêÿåêÿåêÿåêÿfÈæÿùÈæÿÁêÿùÈæÿ¶éÿÒüèÿæíæÿ� éÿ,üèÿ,üèÿ,üèÿ,üèÿùâæÿàâæÿ,üèÿ,üèÿÉâæÿ›âæÿ„âæÿCâæÿ,âæÿâæÿþáæÿÙáæÿ´áæÿ„áæÿ_áæÿ,üèÿ,üèÿ:áæÿ!áæÿáæÿóàæÿ,üèÿ,üèÿ,üèÿààæÿ,üèÿËàæÿ,üèÿ¹Òæÿ•Òæÿ,üèÿsÒæÿQÒæÿ-Òæÿ ÒæÿöÑæÿ,üèÿ,üèÿãÑæÿ#ÓæÿÓæÿøüèÿÒüèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿüÒæÿ—éÿJ׿ÿyéÿéÿìéÿ„ÖæÿrÖæÿ`Öæÿ,üèÿÜéÿÌéÿMÖæÿ:Öæÿ,üèÿp׿ÿÝÒæÿ¶éÿÒüèÿNÓæÿ6Óæÿ¸Îæÿm éÿ‡éÿÒüèÿÍéÿÃÓæÿ–éÿ®Óæÿ-Õæÿîéÿ2éÿÕæÿ2éÿãÔæÿ2éÿTéÿ,üèÿ,üèÿ,üèÿ,üèÿ¶éÿ,üèÿ¶éÿ׿ÿüèÿýèÿÚéÿ,üèÿµ×æÿ,üèÿ�׿ÿã׿ÿñãæÿ,üèÿYéÿËãæÿ§éÿ¥ãæÿãæÿYãæÿ¢ìæÿ3éÿtìæÿFìæÿ ìæÿÊëæÿŸëæÿééÿ éÿéÿèÿxýèÿUëæÿëæÿêêæÿ¡êæÿVýèÿqêæÿ,üèÿ²éÿ éÿ,üèÿ,üèÿ¸ÏæÿºÔæÿ±éÿ,üèÿŸÔæÿ¼éÿüïæÿ)éÿ¶éÿwÔæÿ^êæÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿKêæÿ8êæÿ%êæÿêæÿÓíæÿ¦ éÿmíæÿÿèÿ`Ìæÿ¬Ìæÿ™Ìæÿ†ÌæÿsÌæÿ¸àæÿ¥àæÿ’àæÿàæÿ,üèÿ,üèÿáéÿ<àæÿàæÿéÿpéÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿ,üèÿõßæÿ,üèÿâßæÿ,üèÿÉßæÿ•ßæÿ,üèÿ,üèÿ,üèÿ,üèÿyßæÿZßæÿßæÿ,üèÿîÞæÿÛÞæÿÈÞæÿ,üèÿMåæÿ,üèÿ,üèÿ,üèÿ:åæÿåæÿëäæÿøüèÿŽéÿqéÿCéÿÎäæÿ\éÿ®äæÿ‘äæÿ~äæÿaäæÿ@äæÿ˜éÿäæÿ¹éÿ±éÿLíæÿ+íæÿ íæÿméÿéìæÿÍéÿ)׿ÿÈìæÿLéÿ:ðæÿ—ÎæÿÒéÿÕÖæÿ´Öæÿ–Öæÿ+ÿèÿkéÿNéÿ1éÿZÔæÿ1ÜæÿËéÿ8Þæÿ­éÿÛÓæÿ éÿçéÿÉéÿøüèÿÒüèÿéÿÞæÿÄéÿõÝæÿEÐæÿ%ÐæÿÐæÿëÏæÿÍÏæÿÀÝæÿ+þèÿ§ÝæÿÜüèÿ“ÝæÿÜüèÿÉèæÿýèÿ…éæÿÜüèÿ6éÿIéÿréæÿýèÿèþèÿ�þèÿjþèÿ¾ýèÿ,üèÿ¶éÿÒüèÿ™éæÿú éÿ,üèÿ¶éÿ¤Ûæÿ,üèÿ‘Ûæÿ,üèÿ|ÛæÿºéÿºéÿºéÿºéÿjÐæÿPÛæÿ¿Úæÿ,üèÿýèÿýèÿ/éÿêüèÿeÛæÿáÛæÿÍÛæÿêüèÿøÛæÿÏÔæÿÖæÿSþèÿ?þèÿBÕæÿ,üèÿmÕæÿÒüèÿëéÿ,üèÿ,üèÿ,üèÿ,üèÿ¶éÿÒüèÿÎçæÿ% éÿ[ææÿýåæÿÖåæÿêüèÿÂåæÿvåæÿeåæÿ,üèÿ,üèÿ,üèÿWéæÿ éæÿeåæÿÜèæÿÒüèÿ,üèÿ,üèÿ<ÙæÿÙæÿýØæÿãØæÿÇØæÿÊÑæÿ¯Ñæÿ”ÑæÿÐÐæÿ°ÐæÿÀéÿŠÐæÿoÑæÿGÑæÿ%ÑæÿëÐæÿÓÝæÿ}ÞæÿVÞæÿŸÞæÿ ÜæÿÀÍæÿ™ÍæÿpÍæÿ,üèÿ,üèÿ$Íæÿeåæÿ,üèÿ,üèÿ,üèÿôÌæÿ×Ìæÿ®éÿÊöèÿÞçæÿ…éÿ$öèÿ$öèÿ$öèÿ$öèÿñÜæÿØÜæÿ$öèÿ$öèÿÁÜæÿ“Üæÿ|Üæÿ;Üæÿ$Üæÿ ÜæÿöÛæÿÑÛæÿ¬Ûæÿ|ÛæÿWÛæÿ$öèÿ$öèÿ2ÛæÿÛæÿÛæÿëÚæÿ$öèÿ$öèÿ$öèÿØÚæÿ$öèÿÃÚæÿ$öèÿ±Ìæÿ�Ìæÿ$öèÿkÌæÿIÌæÿ%ÌæÿÌæÿîËæÿ$öèÿ$öèÿÛËæÿÍæÿÍæÿðöèÿÊöèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿôÌæÿ�ûèÿBÑæÿqéÿúéÿäéÿ|ÐæÿjÐæÿXÐæÿ$öèÿÔéÿÄéÿEÐæÿ2Ðæÿ$öèÿhÑæÿÕÌæÿ®éÿÊöèÿFÍæÿ.Íæÿ°ÈæÿeéÿéÿÊöèÿÅþèÿ»ÍæÿŽéÿ¦Íæÿ%Ïæÿæéÿ*éÿÏæÿ*éÿÛÎæÿ*éÿLéÿ$öèÿ$öèÿ$öèÿ$öèÿ®éÿ$öèÿ®éÿùÐæÿöèÿ÷èÿÒüèÿ$öèÿ­Ñæÿ$öèÿ‡ÑæÿÛÑæÿéÝæÿ$öèÿQýèÿÃÝæÿŸþèÿ�ÝæÿwÝæÿQÝæÿšææÿ+ýèÿlææÿ>ææÿææÿÂåæÿ—åæÿáûèÿýèÿáùèÿp÷èÿMåæÿÿäæÿâäæÿ™äæÿN÷èÿiäæÿ$öèÿªúèÿ˜úèÿ$öèÿ$öèÿ°Éæÿ²Îæÿ©éÿ$öèÿ—Îæÿ´éÿôéæÿ!éÿ®éÿoÎæÿVäæÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿCäæÿ0äæÿäæÿ äæÿËçæÿžéÿeçæÿùèÿXÆæÿ¤Ææÿ‘Ææÿ~ÆæÿkÆæÿ°Úæÿ�ÚæÿŠÚæÿwÚæÿ$öèÿ$öèÿÙúèÿ4Úæÿ Úæÿ üèÿhüèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿ$öèÿíÙæÿ$öèÿÚÙæÿ$öèÿÁÙæÿ�Ùæÿ$öèÿ$öèÿ$öèÿ$öèÿqÙæÿRÙæÿøØæÿ$öèÿæØæÿÓØæÿÀØæÿ$öèÿEßæÿ$öèÿ$öèÿ$öèÿ2ßæÿ ßæÿãÞæÿðöèÿ†þèÿiúèÿ;úèÿÆÞæÿTüèÿ¦Þæÿ‰ÞæÿvÞæÿYÞæÿ8Þæÿ�üèÿÞæÿ±üèÿ©ýèÿDçæÿ#çæÿçæÿeþèÿáææÿÅéÿ!ÑæÿÀææÿDþèÿ2êæÿ�ÈæÿÊýèÿÍÐæÿ¬ÐæÿŽÐæÿ#ùèÿcéÿFéÿ)éÿRÎæÿ)ÖæÿÃûèÿ0Øæÿ¥ûèÿÓÍæÿéÿßÿèÿÁÿèÿðöèÿÊöèÿwýèÿØæÿ¼úèÿí׿ÿ=ÊæÿÊæÿÊæÿãÉæÿÅÉæÿ¸×æÿ#øèÿŸ×æÿÔöèÿ‹×æÿÔöèÿÁâæÿúöèÿ}ãæÿÔöèÿ.üèÿAüèÿjãæÿúöèÿàøèÿˆøèÿbøèÿ¶÷èÿ$öèÿ®éÿÊöèÿ‘ãæÿòéÿ$öèÿ®éÿœÕæÿ$öèÿ‰Õæÿ$öèÿtÕæÿ²ÿèÿ²ÿèÿ²ÿèÿ²ÿèÿbÊæÿHÕæÿ·Ôæÿ$öèÿ÷èÿ÷èÿ'úèÿâöèÿ]ÕæÿÙÕæÿÅÕæÿâöèÿðÕæÿÇÎæÿýÏæÿKøèÿ7øèÿ:Ïæÿ$öèÿeÏæÿÊöèÿãéÿ$öèÿ$öèÿ$öèÿ$öèÿ®éÿÊöèÿÆáæÿéÿSàæÿõßæÿÎßæÿâöèÿºßæÿnßæÿ]ßæÿ$öèÿ$öèÿ$öèÿOãæÿãæÿ]ßæÿÔâæÿÊöèÿ$öèÿ$öèÿ4ÓæÿÓæÿõÒæÿÛÒæÿ¿ÒæÿÂËæÿ§ËæÿŒËæÿÈÊæÿ¨Êæÿ¸éÿ‚ÊæÿgËæÿ?ËæÿËæÿãÊæÿË׿ÿuØæÿNØæÿ—ØæÿÖæÿ¸Çæÿ‘ÇæÿhÇæÿ$öèÿ$öèÿÇæÿ]ßæÿ$öèÿ$öèÿ$öèÿìÆæÿÏÆæÿoìæÿ éÿ�ìæÿÒ éÿŒéÿöìæÿâìæÿºìæÿ?ææÿßææÿ ìæÿ éÿÛ éÿìæÿGìæÿ3ìæÿ÷ëæÿãëæÿÏëæÿ»ëæÿ§ëæÿ“ëæÿëæÿkëæÿï éÿÞéÿë éÿ{ææÿ·ææÿ£ææÿÿ éÿ�ææÿ_ éÿK éÿ7 éÿŽéæÿ/ëæÿëæÿ9éÿéÿòéÿ™éÿ{éÿÞéÿùéÿ[ìæÿWëæÿCëæÿºêæÿ¦êæÿ’êæÿ~êæÿîèæÿ¶éÿ¯ éÿ› éÿÇ éÿÎêæÿBêæÿ³ éÿÚèæÿÆèæÿ²èæÿžèæÿ.êæÿŸ éÿzéæÿféæÿc éÿ éÿéæÿ‹ éÿÏîæÿ¢éÿjêæÿVêæÿw éÿ éÿRéæÿ>éæÿ× éÿbèæÿŠèæÿvèæÿà éÿËææÿgææÿSææÿ6åæÿ+ææÿ; éÿ' éÿ»îæÿ§îæÿ“îæÿîæÿêæÿêæÿòéæÿÞéæÿ¢éæÿs éÿÊéæÿ¶éæÿ2íæÿíæÿwéÿFíæÿwéÿûéÿ‡ éÿëæÿóêæÿ^åæÿJåæÿïæÿO éÿ*éæÿÓéÿ¿éÿéæÿºêæÿºêæÿîèæÿîèæÿ2ïæÿZïæÿFïæÿªïæÿ–ïæÿ‚ïæÿnïæÿòéÿ# éÿMéÿçéÿÊéÿãîæÿïæÿËéÿËéÿïîæÿÚèæÿâåæÿÓåæÿ¿åæÿ«åæÿ—åæÿƒåæÿ^ðæÿJðæÿ6ðæÿ"ðæÿðæÿúïæÿæïæÿÒïæÿ¾ïæÿïîæÿÚèæÿâåæÿÓåæÿ¿åæÿ«åæÿ—åæÿƒåæÿ^ðæÿJðæÿ6ðæÿ"ðæÿðæÿúïæÿzéæÿæïæÿÒïæÿ¾ïæÿâêæÿ·éÿråæÿ éÿ(éÿZíæÿ?éÿaéÿoéÿËéÿËéÿ8 éÿ íæÿ"åæÿzéæÿG éÿkíæÿˆíæÿ¡íæÿÂíæÿÑíæÿçíæÿ îæÿDîæÿöåæÿéÿéÿéÿéÿéÿéÿéÿéÿéÿéÿ· çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿ¤ êÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿ­ çÿË çÿË çÿ­ çÿË çÿË çÿË çÿË çÿË çÿ� êÿË çÿË çÿË çÿË çÿ– êÿ‹ êÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿ¤ êÿË çÿË çÿË çÿË çÿË çÿË çÿË çÿ­ çÿË çÿË çÿ­ çÿË çÿË çÿË çÿË çÿË çÿ� êÿË çÿË çÿË çÿË çÿ– êÿ‹ êÿ éÿ0éÿ0éÿ éÿéÿéÿéÿÐéÿ�éÿ›.éÿIéÿÔéÿåçÿåçÿåçÿwéÿ?éÿåçÿ†éÿåçÿéÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿ¶éÿåçÿ•éÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿåçÿçÿ�éÿðéÿ éÿéÿéÿéÿéÿÀéÿ€éÿ‹-éÿ�çÿðçÿ¿éÿðéÿàéÿ…éÿ"éÿéÿÕçÿÕçÿCéÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿ‘éÿéÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿÕçÿ¦éÿ¹çÿÌéÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ6éÿ!çÿ!çÿ!çÿ!çÿ!çÿéÿéÿÑéÿ¬ éÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ^ éÿ!çÿ( éÿpop_stat_ptrpush_stat_ptr !"#$%&&&&'()*+,-./01234##56789#:;<#=#####>###########?##@######ABCDEF‹HIJKÚLMNÛ"#‹ëçáìâèãïéÄðÄäí�åæòûîóõöøzýùüÖþú÷ÿEFŒHIJKLMNÅÅ8Ú%&6n9"#7' 'o'':0^./<u;Ö=v>_OPQRSTUVWXYZ[\]^_`aabcdefghijklmm]no]]pqrst]uvw]]]]]]O]Ox]mmmmmm]]]]]]]]]]]]]]yz{|}~€�‚ƒ !"„…†‡ˆˆ‰'Š‹Œ�Ž��‘’“”„„•„„–„—˜™„„𛄄„„„„œ„�ž„Ÿ ¡’¢£„„„„¤„¥¦§„¨©„„AªC«¬¬­®¯¬°¬±¬¬¬¬¬¬()²³¬´µ¶¬·¸¬¹º¬»¼¬¬¬½¾¿À¬¬¬¬¬¬¬Á¬Â쬬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ABC¬ÆÇÆÄÇÇÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÈÉ­®Ç%&ÄÇÇN‹1'I'2'N'Ai‹BjI3CÙDFËYÌRN§ÍZcvwyIzÎÏÙ{ÇŽ‹ÄÇÇSNF²€|³TNN�IÜÜÜÜÜ«IIUNW¬ÜÜÜÜܦVI…ÝNÝËØ̆Ù‡ÍÛIÝÞÝ}ÜNÎÏÕÕÕÕÕI~ÝhÝÕÕÕÕÕÕÞ¥ÝfÝÒ¦ÓagNN»§¼‹¨b½II‹ÕÕÕÕÕÕÜÜÜÜÜdeà''€ÝáÝ‹N#‹"I‹Ý�Ý'Ý'ÝÝ ÝskþN‚t!m!̃lIí'ÝÍÝÝ Ý‹„!''''''‹'N'(')''*‹IN+NÔNï…,-I¨I*„Ið†‹…''''''‡*'ˆ'ՉЋ*JJJJJ>ŒJJJJJJ'�'Ž'�'?n�]‘’“U”•–—JJJJJJNNNNN˜™š›œ�NONNNNžPŸ ¡Q¢£¤¥¦§¨©ª«¬P­®¯‹‹°±NNNNNN²P³´µ¶·¸¹º»¾¿PÕÕÕÕÕ¼ÀÁÂýÕÕÕÕÕÕÄÅÆÇ�È�ÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÕÕÕÕÕÕÛÜÝ�Þ�ßàáâãäåæçèÊéÊêëìíîïðñòóôõö÷øùúûüýþÊÿÊJJJJJJJJJJJ  ìì   JJJJJJì ìôô!ôôô"ôôôôô#ô$%&'()*+,ôôôôô-./0123456789:;<=>?@ABCDEFGHIôJKLMNOPQRSTUVWXYZ[\]^ôôôÿÿ_ÿÿÿ`ÿÿÿÿÿaÿbcdefghijÿÿÿÿÿklmnopqtuvrwxyz{~€|�‚ƒs„…†‡ˆÿ‰Š}‹Œ�Ž��‘’“”•–—˜™š›œÿÿÿôô�ôôôžôôôôôŸô ¡¢£¤¥¦§¨ôôôôô©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅôÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרyxôôôÿÿwÿÿÿtÿÿÿÿÿsÿrqpo‹jihgÿÿÿÿÿfedcba`_^]\[ZYXWVUTSRQPONMLKJÿIHGFEDCBA@=<;:9876543ÿÿÿGGGGGGGGGGGGÊÊÊÊÊÊÊÊÊÊÊÊÑÑÑÑÑÑÑÑÑÑÑÑÓ2ÓÓÓÓÓÓÓÓÓÓÔÔÔÔÔÔÔÔÔ10/.-,+GGGGGGGGGGGGII*IIIIIIK)KKKKKKKKKKM(MMMMMMMMMMqqqqqqqqqq‰'‰‰‰ŠŠ&%ŠŠ$ŠŠŠ��ÇÇÇÇÇÇÇÇÇÈÈÈÈÈÈÈÈÈõ#õõõõõõõõõõ"ô!ôôôôôôôôôôÿ ÿÿÿÿÿÿÿÿÿÿ     þýüûúùø÷öóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±°¯®­¬«ª©¥¤£¢¡ Ÿž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡†ƒ‚�€~}|{zyxwvurqponmlkjihgfedcba`_^\[ZYXWVTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$Š‹      ÿýüûúùø÷öõôóòñîHëêéèçæåäãâßÞÝÚ×ÖÑÐÏÎ’‘ËÉÆÅÄÃÂÁÀ¿¾º¹¸·¶µ´±°¯ª©¤£¢¡ Ÿž�œ›š™˜—–•”“’‘ÒЋÚˆ„ƒ‚~}|{xàutsrÖpmlk `]\[X$LH E@?54$ÙØ×ÒÐÚÒÐ    ôñêàßÙØ×ÖÒÐÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÌ$$eeË  /-,/,-,1- 1,0ÌV,,3703556&9867V865889Ë` ;q^;gg‡p¨q;`‹‹;;^pk;k¨^‚jkjrkš‡jkkjsr‚sjjsš øzø��’aa"bbbbll’llam mv¤lÍv¤m llvbªmmvza–��"–a ´´¶�¶ba'Í!‘‘ªü¼)ü‘“”¼‘%%%%%÷“”“£”÷&&&&&!“£À%¢%5À5À7¢&%&*7ŸŸ+%£%%ô&¢&0ô0Ÿ¢¡Nô�ôŸ¡N-ŽTTTTTÜÜÜÜÜ¡TTTTTT¡;'~'v.Ü;Ü'ŒaŽ~�''vaTTTTTT_____¦Ü/Ü_______(_(_�_�îa(O0î_Œ((1O______O_)_)_�_�#¦2)_iiiii))1¨1Riiiiii1i§RSic11dR3iiS#ciÿd«S4ÿiiiiii5i262«2¨§7:;2i€€€€€22c×<d€€€€€€Í=Í>Õ?Õ×AÍÕBCÕEÍÍÍGHÕÕIK€€€€€€�����MNOPQR������S�TUX�Z[\`bcdfghi�jklmnoq������r�suvxyz{|~�‚�ÕÕÕÕÕƒ„…†ÕÕÕÕÕÕ‰‹Œ�Õ�Õ�‘”•–—™š›œžŸ ¢£¤¥¦ÕÕÕÕÕÕ§¨ªÕ«Õ¬®¯±³´µ¶·º»¼½¾¿ÀÂÃÅÆÈÊÍÎÏÑÒÚÛÜÝÞßJJJJJáâãäàåJJJJJJàæçèJàJéêëìíîïðéóôõ÷øùúöûJJJJJJöüýJþJ{{ÿ{{{{{{{{{  {{{{{ !"#$%&'()*,-./{0123456789:;<=>?@ABCD{{{‹‹E‹‹‹F‹‹‹‹‹G‹IJKLMNOPR‹‹‹‹‹TUVWXZ[\]^[_acdefgiejkl[mnopq‹rsetuvz{|}�‚…†‡ˆ‰Š‹Œ�‹‹‹õõŽõõõ�õõõõõ�õ‘’“”•—™š›õõõõõœž ¡¢£¤¥¦§¨©ª«¬­¯±²³´¶·¸¹º»¼½õ¾¿ÁÂÃÄÅÆÇÈÉÊËÌÍÑÓÖ×$"õõõ!     þýüúù÷óòñðîíìëêéèçæåäãâáàßÞÜÛÚØÖÕÔÓÒÑÐÏÎÍÌÚÚÚÚÚÚÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞßËßßßßßßßßßßàààààààààáÊÉÈááÆááâÅÄÃâââââããããããããããããääÂääääääåÁååååååååååæÀææææææææææççççççççççè¿èèèéé¾½éé¼éééêêëëëëëëëëëìììììììììíííî»îîîîîîîîîîï¹ïïïïïïïïïïð¸ððððððððððñ·ññññññññññµ³±°¯­¬©¥¤£¢ žœ›š˜—–”“’‘�ŽŠ‰…„ƒ‚�~zyxtsrponmlkjihgfdcb`_^]\ZYWVTSRQPONMLKJIHGFEDCBA@?=<;:9876543210/.-,+)('&$      þýüûúùø÷öõôóñðïíëêéèçæåäãâáàßÜÛÚÙØ×ÖÔÓÒÑÐÏÎÌËÉÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±¯¬«ª©¨§¦¥£¢¡ Ÿž�œ›š™˜—–•”“‹Š‡†…„ƒ‚�€}|{zyxponmlkjihgfeb`_^]\[ZYXWVUTQGEDCBA@?>=<:98643/.,+&"    ÿþýûúùöõóòñðïîíìëêéèçåäãâáàßÑÐÊÄÿ¾½»º¹¸·µ³±°¯®­©§¦¥ž›™˜—•Œ…ƒ~xwutonf\ZYRQPNLKFEB@?>=<:42.+)" ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙS¥÷J�suðC–­®®ª®®¦Ø�®®�Ž®�W¬¸®®�®Š_[y]^Zukxtypot€£ƒ~„]Q®�®˜”®®®R‹g®“zŽ®‚®®xw®v»8�NQ®®Yu¯®v¹JOic«©ÂÁ^jOUo®0®®®n„´®Ôlk—¸j8®äi•Aœ�Y_eSOÄQ®®dÇPè¶©-A1-�/c_^]\[Y^>d>LKEM‘?;J®P]®®®®Q]C\®®ea®"®®®®® ®KJ4B1;0<311*7('+')3*Ý&¦&$–$&((#ë#&$®öû®®X®®AÀ ®® ®®®@^  Öqœ¸Àýû   òù®!®ŽéKþtýðñÿîÿòúûùúåÑ�„ÐÔÅÆÄÓÇÎÏÍλØÝåæÜãá×ÖÔáËÑÍÉâá!ôü;®®ÌÈÔÑÒÇÑÑÀÑȾÊÍʷǾÀ³ÂÀ¾À˳­®³¥¶¬©¨£¯¥¢¨¯° °¤¨›Ÿ™œ¹£¤¤¤“Œ£½ ž•‘˜š¥ˆ‰‹€‘…€‘‡Ž��‹€H‰ˆ|†}}tƒ�€xopsSo[ZOXPIVTSLDEGilk\ma`g^TX\_O`^PM_�KlSLOJIOE9I=C@NBL;M:;G7IF687&;.6.70;47,1%,.1,/0&#$%&## Õ þæßâÞì'ÜâØæíôñðîýììúõëèÜö9„yä‚äòõâïåÓÙׯ¯¦œŸ˜nhrVPIXRGL0ð÷ûæñ÷äèñôߣßñÞëáêåèæ×äÞØäàÕÔÛßÖÉÐÎÇÖyÖ×¥«©£Ë±²½¾Êʿȧ³À°H%™Ç­º¨°·²Í­˜—w}ˆ²Î×þ2/6[tt��ž˜£¡¨¸©¶ÂÄÅÊÆ¿ÍÆÛÕÎÄØäÙßêÝÁÆÃà×òóæÛöøåðýúöþüðûÿõö %''%* '"1,688>9*E645GBJKP]O]RTX`]aXgiy[cl`kapbux|{zŒ„‚†y‡’’�šŒ–—�Ž¢®�¡¡�Ÿ•©œ£¬¢¦³´¸Çª¼¼¼À»ÇÃÒÖ×Õ»ÍÉÙÝÛÎÜÖÚÑáÝÞÛàÖÝÍàÏîìÞàïìâØôçõèùøïöüúîþöæçùúþ þ  % -.$#$&"&6)+'0242.88B=>,7A@J=KMA@LRKLJYL[f`Tbagj`dqntjp}kqss€ƒyxx†‚xl‹yp�~‰Ž€Œ““�†�“Ž�‘�ˆž”–‘¢™Ÿšœ®)5AMYbkt€‰•¡«°º½ÅÎÑÝéõ        ÚÚÙÛÛÙÙ Ù ÜÜÙÝÝÙÙÙÙÙÙÞßàÙÙÙÙÙÙÙààÙÙÙÙÙÙÙààààààààààààààààààÙààÙÙÙàÙÞàÙÙÙÙàáàÙÙÙÞßâÙÙÙÙÙÙÙÙâÙÙ__aÙÙÙÙÙÙâiiiiââââââââââÙÙÙÙÙÙÙãäÙÙåää__abæÙÙÙÙä�����äääääääÙÙÙ�����ääääääÙäçÙçççççÙççççççççççççççççÙÙèÙÙÙééééÙÙÙÞÙßààÙÙÙÙÙàÙÙêÙÙàààààààààààààààààààààààààààààààààààààààààààÙààÙëìàÙââÙÙÙ_abíííÙÙêÙÙÙÙÙiiiâââââââiiâââââââââââââââââââÙãÙääååæ��ää��äääääääääääää�ä��ääääääääääääççççççççççççççççççççççççèéÙéééàêÙÙààààààààààààààààààààààààààààààààààààààààààààààààààààëìàâÙâiâââââââiââââââââââââââââââââââääääääääääääääääääääääääääääääääääçççççççççççççççççççéééàààààààààààààààààààààààààààààààààààààààààààààààÙââââââââââââââââââââââââââââââäääääääääîäääääääääääääääïäääääääçççççççççççççççççççéééààààààààààààààààààààààààààààààààààààààààààààÙââââââââââââââââââââââââääääääðîäääääääääñïääääççççççççççççççéééààààààààààààààààààààààààààààààààààààààÙâââââââââââââââââââââââäääääääääääääççççççççççççééàààààààààààààààààààààààààààààÙââââââââââââââââââäääääääççççççççççààààààààààààààààààààààÙâââââââââââââääääääççççççççààààààààààààààààÙâââââââççççççççççààààààààààààààààââââââââçççççççççààààààààààààââââââçççççççççàààààààààààââââââçççççççççààààààààààââââââççççççààààààààààâââââââççççççàààààààââââççççàààààààââââççççàààààââççççàààààââçççààààâçççààààâççààààâççààààâààààÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ¶¶ÉÈÆ¹¸ƺ±Æ*)Æ !±±+,Æ&±±±±±±±±±±±±±±±±±±Æ{y(Æ'¹È±*)ȱȱǹǺ´#*) !´"+,$&´´´´´´´´´´´´´´´%('Љ°#°",$&°°°°°°°°°°°°°%°°°°°°°°°°°¶¶¶¶¶&ƶ¶¶¶¶¶¶¶¶¶¶¶¶¶ÆÁÀ»Âÿ¿¿¿ÄŹ·º±±±±±±€±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±²± ´ ´´´´´€´´´´´´´´´´´´´´´´´´´´´´´´ ‰‰°‹Œ°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°¶¶€¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶À¿¿¿¿±±±±±±±±±±±±±±±±±\±±±±±±±±F=±>±±±±±±±±±±±±±±±±±±±±|z³²±´´´´´´´´´´´´´´´´´=>´´´´´´´´´´´´´°°°°°�°°°°°°°°°°°°°°°°ž°°°°°°°°°°¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¿¿¿±9±±±±3±±±±±±±±±±±±±±±±±±±C±±±±±±±±±±±±±±±±±±±±´9´´3´´s´´´´´t´´´C´´´´´´´´´´´u°°°’š‘°°°œ•˜°°�°°°°°£«¢°°®¦©°°¯°°¶¶c¶¶¶X¶¶¶†¶a¶_¶¶l¶¿¿¿±V5±±2±±±A±^±L±±±K±±±±±±±±±±±±±±±±±±±±±±±±±´5´2´´´r´´´´´´´´´´´´´´´´°“�°°°œœ—°›°°¤¡°°®®¨°­°d¶¶¶¶¶¶¶¶¶¶b¶`¿¿½±±±@W±±±B±ƒ±±U±4±±-±±±0J±±±±±±G±±±]H±±´´´@´´´ƒ´4´´´p´0´´´´G´´°°B™°–°°°¬ª§°@¶¶¶ƒ¶¶¶¶¶¶¶¾¼±;±±±N±±~±±±±±f±±i„±±±±±xY±1±´;´´´N~´´´´i„´´´x´°°~°°°°¶¶¶~¶¶„o¶¶<±ˆ±±±±±:?±±±±±±±T±±‚±<´ˆ´:?´´´q´´‚Ž�”Ÿ ¥¶¶¶¶¶¶¶¶±±±±±±±±±±±±±±±Mµ´´´´´´´¶¶¶¶¶¶¶¶¶n±±±±±/±vw±±±±I±±´´´vw´´´¶¶¶¶¶¶¶¶¶±±±±±g[±±±±±´´g´´´¶¶¶¶¶¶¶¶¶±±±±±±±±.±±´´´´´´P¶‡¶¶¶¶¶j±±±±±±Z±E±´´´´E´¶¶¶¶¶¶±±±±±±±h…D´´´´h…D¶¶e…¶¶±±±±±±±´´´´¶¶¶¶�±8±±±±�´8´¶¶¶¶±±±±±´´¶¶k¶6±±±±6´¶¶¶±±±±´¶}¶±±±±´¶¶±±±±´Om7±R±7Q±±S   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSyylexuv€�Šw†‡ˆ‘’›¤²³¨©¦§*+´ªpqrÙ>Œ"#,>012ABCDEGHIJSTUV^_`abcdijk}Š�µ¿ÁÙÛæçéë !'Gmtuvwxz{|€‚ƒ„‰Š‹« ×&&&Š�Ž�%&>#Á-Ž�&>>34&&¥>&&&&&&&&&&&&¶&Â&œ�Ø�¥ &'(678@FRWXYZ[\]egw}~š¡¢ñ¯®­ñ°±yïðï?�%?�À·GÜÝÞ¥¥¥ž¥èêì칺&¥&¸> œ¬ œñññ&&&&&ò&&íîííí&&íí&&&&ññ !"#œ œñœœœ œñœœœñ >&&�Š�Ž�?.�?GOjÁú?œžž´ß¥?œÚœžžžžžžžÚžÚœìžžžs»¹žñ±"ññªññžñññññ&ñ&ñññññññññññññññññññññññññññññïïï(��Œ�$>û¥ÿ%&ãàÞ¥¥ì&sœžœž?%œžžœœžžžœœžœžžžžž&�>Œ�*+,-./59;=Gfhl}“—™�ŸÃÄÅÆÉÌÍÏÒÓÔÙ&)ññ ñœ¡äåÜž¼&sñññóžñññ�)'&&&¥&Ð&&&9:;<=ÅÇË&9ŸÆÏ?&ØKLMNOPQž&&nõÀc nžåeá%»¾&žžžžœžžž?&&=lÅÅ9ÄÑÕï&ÎÈÃÊ&&&&& ÚË&Ë&/ï& žñ&'ö%õ>&&ž Úž»½ñ�)&žžž&žÓžñÌžžÃ9:Å9:ÅÅÅ9<Çž ËÚžQñžñ&˜÷oøÀññ�ïgâž»ž?Ä%œžÃ&&ž&&žžž&&ž (žñø&?žž žžÅÅÅÅÄÄñ&ž”•–ùñ>ïžžžžžžžžžñüžØžžžžžžž> Ó?? ý>nô Ó ô? Ö ÕÖ ÚþÖÚÚˆ aÃÂÀËÍ A–åþùúw#®qBßV˜GŠŒH ˆ <„   …FlœD“Eèéê_ÅnáÄFGôHõI÷†Ñ ,<`¡×ÙW¼"8O¾þ$K¿eZd7@.5HRJàZÀ¨h¦"#~KLºuv5´3 {O˜òüòü´ÿòüòüòüòüòüòüòüòüòüòü$òüòüEòüòüòüòü(òüÑþòüòüòüòü^þñÿòüÏþÓýþ’òüòüòüáýžòüòü#òüòüòü”ýòüéÿóüòüöýóÿÿòüjòüÍòüòüòüòüòüòüòüòüòüòüòüòüÿúòü£ÿòü°ÿòüòüøÿÒòüòücòüòüòüòüòüòüòüòüòüòüòüòüòüòüùý|òüòüûüòüòüòüòüòüòüòüòüòüòüzýòüòüòüòüòüòüòüòüòüSçÿòüÇæÿòüòüÅòüòüòüòüòüòü£¤¤¤¤¤¤¥§¦©¨ªª««««««««««««««««««««««««««¬«««­­­®®¯¯°°°±±±³²´´µµµµµµµµµµµµµµµµµµµµ¶µµ·µµµ¸µµµµµº¹»»»»»»¼»½»¾»¿ÀÀÀÁÁÂÁÃÄÄÅÅÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÈÈÉÊÊËËÌÌÌÌÌÌÍÎÍÏÏÏÏÏÏÏÏÏÏÐÏÑÏÒÒÓÓÔÔÔÔÔÕÖÖ××××××××רØÙÙÙÙÙÚÚÛÜÜÝÝßÞàÞáâããääååæççèèéêêëëìììîíðïñññññññññññññññññññññññññññññññññññññññòóñññññññññôôõõöö÷÷øøùùùùûüýþúÿúúú          ! ""###$$%%%%%&&&&'&(&&&&&&&))+*,,,./-   : d„^=ˆ; oeh…_`NPOÞßRsG<?E>ABCD@F/4³´µ¶å·¸¹º»åu€t|~oi‡†|~apSUÇÝàà_Y½¼r)ãããããã2 0!"%&5'7(+ ¾¿p‰c[\=ÊÄÉØÚÄÄà_ëçêì.8æåååzjw�v}b'm,1onURTKMfÐÌÅÃ^HITqÖ×ÛàáWXQad`J,èÿþüûúôõøùö÷òóðñíîï31-$#69qrmk©?4?VÇÈÙÜâgcfSZg*  éÀÁ‚xnl�«¬­®¯¢›œ£™vxz–ž¨ª?pFG2XYÔÒ]kbeäýƒ ¥å—u~�Ä‘§Šåš6789:<@BEH\VÕÑÓÄÍit   {‚©°‰�’ÄÄÄ>A 5"pYLåhs�{|y¡u‹ŒŽ”“Ä‹Ÿ=?"-ZWÎËly¦˜Šw€�†•&3]YåjC#$%(.[Ï};!M¤ƒ‚„…‡ˆ?©NJD)J©IK²KOå/²K±LÄ*²0ÄP+ÄQ½cŸQxC‡Ð]ǃlnÒ?zFø@@@¸tu8:ÿ?ÜfÓæ%&XÌÍ”ÌÍ–@RSTUVWXD:ÿ1LbGE’PîïMñó!€�w¸üABCDEöbìÍJmF»¹FnÌÍY@ƒoíç~ƒ„�5@@a½2p<‚ÎÌÍ�[p\A\YøƒævgK…÷Kø÷pø'b†ÎÁÂÎ`~ÃÆÇȇòF‚€ÉF@ÊÒz¿k}~€�9@ƒ„…†‡FGŠÏ0¬ÏŒ�  Ž��ù>Î’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§±²³Îo«¬ÿÊILp@Ï⾊ ‰Ú@q½rst/01‹%bÏk‹bImqš›r|}ŒbÈÌÉ­®/$%&�ŽÄÅ��~+,-./01'()*+~,-./‘­-./01’0123“”C•456789:Àb—ö;<=™xž ¾¿ÁyÄ>ÅÆÈJÉÏKLMÊÌã?¡¢ÎÓ)šþ«*+ÔÕÖë./Ù×@Ø1ÚÝÞéáJ£¤KLêâ㥦§:Ϩ©ªQäëìíð«öûýÿ3¬Q  RSTUVWX­  ®¯°±²³´67µ¶¢=>>BCDEHR™P·ˆN]dS¸¹eafgT‰‹¡¢‘S3h�3i¨©Tjqªrsy3º¯|}YU°»¼£¤·¯¥¦§Uµ¶»Á>ÃÇ˺¨©ªÐÛÞ>ëÜ«äæçè ¬$(Ò0ß"Ô4678­Û9Ý;®¯°±²³´=>-2NO?µQ¶IS¡¢^P[i_:cjom·rswz‡¸¹{‰@�ûŽ�£¤�‘‹ÿ•—¥¦§š›¡¢œžŸ¤ ¥º§4¨©ªª»¼© b«°²Ø¶¬£¤³Ñ´µ·¦§­¹!ÐÕ®¯°±²³´¨©ªàÖÞåµç¶«pÿéêìí¬ïðîôñõ÷ò·óý­¸¹®¯°±²³´ ¡¢µ¶-\4369:º;;?B·»¼¸¹£¤C&J'¥¦§()¡¢*+{xM˼¨©ª^ºIN!Æ«»¼lA£¬£¤ü€=Û¥¦§±­®¯°±²³´¨©ª|µ¶«¬·­¸¹®¯°±²³´îµ¶bcdefghijkºÜ·»¼¸¹ïðñòóôõö÷øº»¼ù !"#$%&'()*+,-./01úûübcdefghijkýÂbcdefghijk$%&þÿ'()*+‹ÿ,-./0123456789:;<=ÕÖ>'()*+,-./01? !"#$%&'()*+,-./01@ !"#$%&'()*+,-./01 !"#$%&'()*+,-./01 !"#$%&'()*+,-./01 !"#$%&'()*+,-./01 !"#$%&'()*+,-./01 !"#$%&'()*+,-./01‚ !"#$%&'()*+,-./01× !"#$%&'()*+,-./01Ú !"#$%&'()*+,-./01Ý !"#$%&'()*+,-./01á !"#$%&'()*+,-./01ã !"#$%&'()*+,-./01t !"#$%&'()*+,-./01u !"#$%&'()*+,-./01v !"#$%&'()*+,-./01x !"#$%&'()*+,-./01y !"#$%&'()*+,-./01Ó !"#$%&'()*+,-./01ä !"#$%&'()*+,-./01ú !"#$%&'()*+,-./01 !"#$%&'()*+,-./01 !"#$%&'()*+,-./01 !"#$%&'()*+,-./01  !"#$%&'()*+,-./01# !"#$%&'()*+,-./01,Q#$%&'()*+,-./012 !"#$%&'()*+,-./01Ñ !"#$%&'()*+,-./01ØÿMSTÙ3MßNUà>ÔNO !"#$%&'()*+,-./01\âOPèQRSTUÔÿVWXYZ[\]P^_`QRSTUVWXYZ[\]^_`å !"#$%&'()*+,-./01b !"#$%&'()*+,-./01 !"#$%&'()*+,-./01!"#$%&'()*+,-./01"#$%&'()*+,-./01$%&'()*+,-./01%&'()*+,-./01 QéO!f[9ôõl ”„%¦>?IL>KLMNOPQ ?GœA M�ŽH�‘>78>Œ—9:;<=œ£¤Œ &I�L&  ?‘&�G=34»¼>¾Œ?öÆ>—Œ�œžÑ&ž(²pqr¶sn9&;9=;=sœ&s9:sç=�Ž��ž“9•9—œ<ž™™ýžž¡œ¡œ    רœ-žœ™ôõÓ9s !"#$%&'()*+,-./01234BCDsœ:;™—o™œŸœ#Ÿœ™žžìí&ïð>¤™Š™S�Ž�!"#?œœžž&œžŠœ��Ž�&œlžn,012&&9:&&= !"#ABCDE=GHIJ&q !"#&STUV&&^”•–&^_`abcdŒœ&žijk&|pqrl¼¾¿À}Šy�Ž�®ŠÕ�nØÙ™¿ßà?�å�?™�´Š �Ž�&'(†‡ˆ°±²ù»µ¶˜‘’678›@&&>VF&&&KLMNOPQR&&&&WXYZ[\]œpqr&œ&e&g%œ&&}&œ >�?P�w&?žœG}~ž ?žžO&GVž[ žOžžžžžVš45žj¡¢ pqrw&'(j��>}pqr&&‡678ž}>œž@žžžžF&›ªžŸ&&R¥&§&WXYZ[\]&&ž�K?&eOg&R&&n c%„ew&žœž&}~?&Õ&& &&&&&&'(& ž&>'&š&œ678 ¡¢ž÷œ@�&oý&F žQžžž&'()Rž ž&WXYZ[\]678g˜�?e%g@žž&&F&&ž&ž& žwž&R ž}~WXYZ[\]&>žežg>ž&?ž>šnœ?wž¡¢žž}~ žžž&'(žžžž-þû“ˆ678åš9D Åc@¡¢=dF ׿"8w&'(}RÿÿÿÿÿÿÿÿWXYZ[\]678ÿÿÿÿÿÿÿeÿÿg@ÿÿÿÿÿÿÿÿÿÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿRÿÿÿÿ}~WXYZ[\]ÿÿÿÿÿÿÿÿÿÿÿÿeÿÿg šÿÿÿÿÿÿwÿÿ¡¢ÿÿÿÿ}~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*+,-./ÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿ9ÿÿ;ÿÿ=šÿÿÿÿÿÿÿÿÿÿÿÿ¡¢Gÿÿ !"#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfÿÿhÿÿÿÿÿÿlÿÿÿÿÿÿpqr }ÿÿÿÿÿÿÿÿÿÿÿÿ% 012ÿÿ“ÿÿÿÿÿÿ—ÿÿ™ÿÿÿÿÿÿ�ÿÿŸABCDE&GHIJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSTUVÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^_`abcdÿÿÿÿÿÿÿÿijkÿÿÿÿÿÿÿÿpqrÿÿÿÿœÿÿžÿÿÿÿÿÿÿÿÿÿ} !"#Š !"#�ÿÿ !"#ÿÿ !"#ÿÿ !"#ÿÿ !"#ÿÿ !"#ÿÿ !"#ž !"#ÿÿž !"#ž !"#ž !"#ž !"#ž !"#ž !"#ž !"#ÿÿž !"#ž !"#ž !"#ž !"#ž !"#ž !"#ž !"#ÿÿž !"#ž !"#ž !"#ž !"#ÿÿž !"#œ !"#œ !"#ÿÿÿÿœ?ÿÿÿÿÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿOÿÿÿÿœÿÿÿÿÿÿVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœÿÿ'ÿÿjÿÿÿÿÿÿÿÿÿÿpqrÿÿÿÿÿÿÿÿÿÿÿÿÿÿœÿÿÿÿ}ÿÿ%ÿÿ'ÿÿÿÿÿÿÿÿÿÿG !"#ÿÿÿÿ&ÿÿÿÿœGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿÿÿœtuvwxyz{|ÿÿÿÿ€ÿÿ‚ƒ„ÿÿmÿÿÿÿ‰Š‹ÿÿtuvwxÿÿz{|ÿÿÿÿ€ÿÿ‚ƒ„ÿÿÿÿÿÿÿÿ‰Š‹ !"# !"#ÿÿ !"# !"# !"# !"# !"#¡#&ž!œ "� Ÿ >?¢ $%'()*+,-./0123456789:;<=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›!òüòüòüòüòüòü=òüòüòüòüòüòüðÿòüòüòüòüö¨â27?òü{ ðÿòümŽòü/96gòüpòüòü�ÃØîø"òüòü'(-òü7òü<òüòüòüòü}òüòüòüòüòüòüòüíÿòü`�aòüefiòüòünpqruyzòüòüòüòüòüòüòüòüòüòüòü€†ˆòü‰òü�ƒRù{òü{òüòüòüòüXüòüòüòü—žŸ´òüòü µ¶·��¹�òü»»òüš�›òüòüòüòü„TòüWòüòü ¡¢«¬òüòü­®òüòüòüòüº¼òüòü¾ÂÃÅàòü@òüEòüòüieKòüòüPòüòüòüòüòüãä岎ŽTí¸òüWí³#òüòüâÿZòüòü�Àùÿòü]_bclosòüòütyMtvwòüxzðÿòüòüòüMÐÿòüÞòüòüòüòüòüòüòüe  òüe òüeòüòüòüòü��òüòü"òüòüòü¾ÿðòüâòü�òüòüòüòüòüòüòü+òüòüÔòüòüòü 1òüòüòüòüòüòüòü�òü�»òüòüòüòüòüòü'�òüô äÿeeÁeeòü­b v8£Š91Ežk²¥=v†W”¡99$$êêòüòüòüeeeòüòüòüeeòüòüòüòü¦§¨ŽíòüòüÉÿu‘òüñ‘¤òü6 òü°òüòüòüòüòüòü#!òüFòüòüòüòüòüòüòüòüòüÄòüHòüòüòüòüòüÆ?òüòüòüôòüòüòüòüòüMòü,-0�2òüòüòü:;@òüòüòüòüDSòüòüòüu&I}~JÞ]òüòüQòüemòüqòüQòüòüòüòüTÝÆÚïàòüßeíBŽŽòüÿ+kòüòüXòü~òü^`adeòüòüŸÿfghòüòüòüòüòüòüòüòüòül‰òüøåÿ†òürsÁòüòü[uwòüòüòüòü˜ òü$òüòüòüòüòüòüòüòüòü Æ…ˆuòüVòü]òü_ò++mòüƒ+¶ÿ  bòü+òü™3òü=òü/òüòücòü[?íŽòüòüòüòüªòü45Ðòüòü¯°<²³>ACµ·òüòüòüÀòüòüÔe\Sòü=¼òüggòü|òüòüÚòüòüuòüòüGòüëòüòüòü++òü++òüòüòüòüÊàòü�¼´òüòüòüòüUY\_knot¤òüòüòüòüòüòü¸òüòüòüòü}vx|}€�òüÌ»òüòüòüòüòüòüòüòüòüÕu5í½òüåòüòüÂý–åuòüìòü–È-òüòüòüòüòü-òüòüòü òü-òü òüòü òüvfinfo½èÿ½èÿ½èÿ½èÿÞ½èÿ½èÿ¦¥æÿ½èÿ½èÿˆ½èÿ½èÿ½èÿ½èÿ½èÿ½èÿʽèÿ½èÿ½èÿ½èÿ½èÿ½èÿx½èÿ½èÿx¥æÿ½èÿ½èÿ½èÿ½èÿ½èÿ½èÿ½èÿü¼èÿg½èÿ½èÿø¿èÿ@Àèÿø¿èÿø¿èÿ�Àèÿø¿èÿø¿èÿðÀèÿø¿èÿ Àèÿø¿èÿø¿èÿø¿èÿD¨æÿØ¿èÿOÁèÿ¸›éÿ†›éÿu›éÿõšéÿ‡ÈæÿÜèÿ ÝèÿDÞèÿÜèÿìÛèÿÔÜèÿúÊæÿÜèÿÜèÿ$ÜèÿÜèÿ ÞèÿËæÿÜèÿìÛèÿ#ÞèÿÜèÿëØæÿàéèÿ´êèÿêèÿ�êèÿéèÿaÙæÿêèÿéèÿ éèÿéèÿêèÿêèÿéèÿpèèÿ êèÿêèÿþØæÿkëèÿcëèÿE׿ÿèêèÿ(ìèÿ�ìèÿìèÿÈëèÿèëèÿèëèÿèëèÿØëèÿìèÿ[ìèÿªìèÿŒìèÿ¤ëèÿ*ìèÿ*ìèÿ*ìèÿ´ëèÿŒìèÿ7ìèÿ†ìèÿhìèÿ€ëèÿìèÿìèÿìèÿ�ëèÿhìèÿìèÿbìèÿDìèÿ\ëèÿâëèÿâëèÿâëèÿlëèÿDìèÿàëèÿ&ìèÿìèÿ8ëèÿéëèÿéëèÿéëèÿHëèÿìèÿy¬éÿT¬éÿ(¬éÿp¬éÿØèæÿ’¬éÿcompare_sectionget_symbolslang_do_assignments_1multiple_definitioncmdline_object_only_list_appendcmdline_load_object_only_sectioncmdline_check_object_only_sectioncmdline_on_object_only_archive_list_pload_symbols×®éÿЮéÿЮéÿ©®éÿЮéÿ‡ëæÿpéÿx éÿHéÿîñæÿ¨ éÿ�éÿòæÿpéÿpéÿ éÿpéÿXéÿ$ðæÿpéÿ¨ éÿéÿÿîæÿ4éÿUéÿLéÿéÿéÿÜéÿÜéÿËéÿØéÿ¨éÿ¨éÿ¨éÿ�éÿ¨éÿ¨éÿ¨éÿ¨éÿÈéÿßéÿñ çÿ³ÃéÿQçÿçÿÜçÿšÃéÿ1çÿ¥çÿª çÿÃéÿêçÿlçÿÍçÿ¦çÿ}Âéÿ“çÿwçÿzÅéÿŠÅéÿšÅéÿµÅéÿÅÅéÿ Åéÿçÿóçÿåçÿzçÿçÿ·Ìéÿâçÿ�çÿsÌéÿ•Ìéÿ¾çÿ¾çÿçÿÝçÿ(çÿ5çÿÜ2çÿÉ/çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿ/0çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿm5çÿ!2çÿÿ1çÿÝ1çÿ™1çÿ»1çÿî1çÿª1çÿÌ1çÿ2çÿG0çÿ0çÿV5çÿ�2çÿ¨2çÿ·2çÿÍ2çÿ3çÿ3çÿ,3çÿ;3çÿJ3çÿY3çÿh3çÿw3çÿ†3çÿ¡3çÿ°3çÿ¿3çÿè3çÿÌ3çÿÛ3çÿm5çÿm5çÿm5çÿÌ3çÿõ2çÿH2çÿW2çÿf2çÿ÷3çÿ4çÿ4çÿO4çÿk4çÿ‡4çÿ£4çÿ¿4çÿØ4çÿî4çÿu2çÿ�2çÿm5çÿ#4çÿ24çÿ:4çÿ]4çÿy4çÿ•4çÿ±4çÿÍ4çÿã4çÿù4çÿB4çÿ4çÿset_pep_nameis_underscoringprint_cmdline_listreloc_overflow€€print_data_statementbuild_link_orderlang_size_sections_1Oœçÿá™çÿΖçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¡œçÿ4—çÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ¸œçÿ&™çÿ™çÿâ˜çÿž˜çÿÀ˜çÿó˜çÿ¯˜çÿјçÿ™çÿL—çÿ—çÿ¡œçÿ’™çÿ­™çÿ¼™çÿÒ™çÿšçÿ"šçÿ1šçÿ@šçÿOšçÿ^šçÿmšçÿ«šçÿºšçÿÕšçÿäšçÿóšçÿ+›çÿ›çÿ›çÿ:›çÿF›çÿ›çÿ›çÿú™çÿM™çÿ\™çÿk™çÿR›çÿa›çÿn›çÿš›çÿ¶›çÿÒ›çÿî›çÿ œçÿ#œçÿ9œçÿz™çÿ†™çÿ¸œçÿv›çÿ…›çÿ�›çÿ¨›çÿÄ›çÿà›çÿü›çÿœçÿ.œçÿDœçÿmainCRTStartupgldi386pe_set_symbolsset_pe_nameis_underscoringpep_implied_import_dllpep_find_data_importspep_fixup_stdcallsgldi386pep_after_openmainCRTStartupgldi386pep_set_symbols&µçÿ:µçÿQµçÿÕµçÿöµçÿ¶çÿ,¶çÿ¼çÿ¼çÿ¼çÿA¶çÿY¶çÿz¶çÿ¹¶çÿ¼çÿ¼çÿ¼çÿ¼çÿL·çÿc¹çÿÇ·çÿØ·çÿØ·çÿð·çÿð·çÿ¸çÿ¸çÿ ¸çÿ ¸çÿ¼çÿ¼çÿ8¸çÿZ¸çÿz¸çÿš¸çÿ¸¸çÿظçÿ¼çÿ¼çÿö¸çÿ¹çÿc¹çÿ»çÿ¼çÿ¼çÿ»çÿ‚¹çÿØ·çÿð·çÿ¸çÿ ¸çÿ�¹çÿ›¹çÿ§¹çÿ³¹çÿ¿¹çÿ˹çÿ×¹çÿã¹çÿï¹çÿû¹çÿºçÿºçÿºçÿ+ºçÿ7ºçÿCºçÿOºçÿ[ºçÿgºçÿsºçÿºçÿ‹ºçÿ—ºçÿÜ»çÿ£ºçÿ,»çÿ½ºçÿ½ºçÿÜ»çÿÓ»çÿÜ»çÿ»çÿ»çÿ‚¹çÿÜ»çÿ»çÿÜ»çÿ#»çÿÜ»çÿ,»çÿ]»çÿÁ»çÿÁ»çÿÁ»çÿÜ»çÿÓ»çÿÜ»çÿÓ»çÿâ»çÿ¼çÿLÐçÿ¨Ðçÿ[ÐçÿjÐçÿjÐçÿyÐçÿÄÓçÿÔçÿÛÓçÿÔçÿÔçÿ(Ôçÿèçÿqèçÿ$èçÿ3èçÿ3èçÿBèçÿ½ëçÿLìçÿìçÿLìçÿLìçÿeìçÿ�‘@ùÖÀŸåðœå<�Ð`+@ ÿ%��make_onepe_dll_id_target�‘@ùÖÀŸåðœå<�Ð`+@ ÿ%��make_onepep_dll_id_target<=‡ˆ@A:;6VS7*+,{m\PEGr~0v«ÿ«ÿƒ«ÿX«ÿ«ÿS«ÿ[ýÿ¬ÿlAqùÿ–Äÿ«ÿ«ÿtôÿ«ÿ«ÿ«ÿûÿ«ÿ$%%&&&&&&&&&&&&&&&'''())********++,,,,,,--..//0011222233333333333333333333333444445566778899:::;;;<<==>?TTD=KB8;NS\\g223456 . * Z "]`OP/,+)X!^daRQ1-Y0Vcfbh[W(e_ 00UVVVV'%&VV#$1F>C8DB]^.x !"#$%&'M(I)/9 �Ž>Xy ze2345€CfDdg�‚ƒ„?i�‘’“…†kbcHt—˜pyKs�w NÐÿÐÿÐÿÐÿ ‹/O[ŒU2345•/R`WahylbnoU–qu}|‰ŠJ_ZY”j-LTQ  "  m)   ‡ˆ<9 G K !NRŠ‹Œ�[ !d•–` c  l  "|!! "# !� @<:ŽVÿÿ)ÿÿÿÿ1ÿÿÿÿÿÿ-! "# ]ò&&.åå9$««««««««««««««««««««««««=L«ff««__««««W«Wd««Tç.«a«e5g%«««L«b«««««&«W««cjk««måg««n«««io««p«g«««8rs«U««««««««««ii«h?hh8«`««««hh««pe_implied_import_dllpe_find_data_importspe_fixup_stdcallsgldi386pe_after_openÐëéÿÐëéÿÐëéÿÐëéÿÐëéÿ;x®Ô°åÿÄ4ÁåÿìtÁåÿT‹Áåÿ ­ÁåÿèÂåÿXˆÃåÿ˜—Ãåÿ=ÄåÿxDÄåÿ¨bÄåÿ½ÄåÿHïÄåÿ¸§èåÿ€éåÿì$óåÿ<9æÿŒÈ æÿ¨2æÿèDæÿpfæÿè•æÿT²æÿ¨½æÿèæÿdªæÿ´éæÿHñæÿ¨Žæÿ@ êæÿ  æÿä æÿ!æÿ”!~!æÿl""æÿ $VFæÿ%:RæÿP%@Ræÿd%åTæÿ”%þTæÿÐ%Wæÿ`&Wæÿ¸&uXæÿ'ˆXæÿD'ŽXæÿl'.[æÿ”'n]æÿ¨'3_æÿÄ'}bæÿ(�bæÿ(¨bæÿD(¾bæÿ\(ccæÿ¨(ycæÿÀ(>jæÿø(…jæÿ0)›jæÿd)±jæÿ|)¶qæÿ´)Iræÿ *Xræÿ|*græÿ +µræÿx+sæÿ$,ÈsæÿÌ,×sæÿ- tæÿ¨-tæÿ.Ætæÿ”.wæÿX/«wæÿˆ0Ã|æÿ˜1&}æÿÐ1r}æÿ”2°}æÿ3î}æÿ¬3)~æÿP4Ù~æÿ¬4å~æÿì4Wæÿ`5ÚŽæÿÔ5�æÿ,6º�æÿh6‘æÿÈ6F‘æÿ7G‘æÿŒ7k‘æÿÐ7»‘æÿ88!“æÿp8Ä“æÿÐ8ù“æÿ49_—æÿ¤9šæÿ :4œæÿ�:Œ�æÿä:��æÿ$;´�æÿh;žæÿØ;Qžæÿ <žæÿä<ö æÿ=�¢æÿ\=¦¢æÿ°=¯§æÿ >m©æÿX>·©æÿè>;­æÿ4?D­æÿt?q­æÿŒ?„­æÿð?$¯æÿ @e°æÿA¾±æÿpA²æÿÜA?³æÿBü³æÿ|B1´æÿðB µæÿ\C&¶æÿ�C±¶æÿØCû¶æÿðC7¸æÿèDθæÿEC¹æÿhE¡¹æÿ¼EìºæÿØE+¼æÿpFZ¼æÿ°Fp¼æÿøF«¼æÿ´GC¾æÿ$H&Áæÿ`HFÁæÿI¾Áæÿ¤IÝÁæÿXJþÃæÿ°JHÄæÿK€ÄæÿhK7ÇæÿLtÇæÿ|LËÈæÿÈLÉæÿàLCÊæÿhM³Êæÿ˜MYËæÿøM¼ÌæÿdNžÎæÿÈNÏæÿ OæÏæÿœO1ÐæÿPÑÒæÿ„P+ÔæÿðPjÕæÿ QØæÿìQ+Øæÿ0RsØæÿ¬RÅØæÿTSÁÚæÿ�SáÚæÿÔS!ÛæÿlT<Ûæÿ”T?ÛæÿèTƒÛæÿlUmáæÿÄUåáæÿàUéâæÿúæÿ˜_?úæÿ`Åçÿð`ÚçÿTa´çÿ�a”çÿbçÿ4b‡çÿ¼b[çÿcÇçÿlcpçÿðcçÿPdKçÿ deçÿ¼dÆ çÿ¨eª çÿdf¿ çÿ€fIçÿÐf§çÿgÆçÿ0gççÿDgèçÿXgõçÿ€göçÿ”g çÿ¬g2çÿÀgvçÿøgºçÿ0híçÿ�hjçÿØh¡çÿiWçÿ8i"çÿdi_çÿŒi€çÿ¤i¡çÿ¼içÿjçÿ j„çÿXjªçÿljYçÿœjÙçÿÈj%çÿðj›çÿk2çÿPk~çÿlkˆçÿ€kµçÿ¨kçÿÐkVçÿìk‹çÿlãçÿ(lêçÿÔ»èÿH?4¼èÿ ?ÁèÿÀ@4Âèÿ$A4ÃèÿüAôÃèÿ”B´ÅèÿC4Éèÿ¸C”Éèÿ€DdÍèÿLE”Íèÿ€E$ÎèÿHF”ÎèÿÜFDÏèÿ,G”ÏèÿhG$ÒèÿDIDÒèÿÌI„ÒèÿôIDÖèÿxJ¤×èÿØJDØèÿœLÔØèÿ,MÔÙèÿ„MdÚèÿ¬M$ÞèÿN$àèÿ„NTáèÿäNâèÿPO¤âèÿ¸OtêèÿQ„ñèÿðR”óèÿ¨SôóèÿTôèÿU´éÿTVéÿ�WÄéÿÜW¤éÿ4X¤éÿ„X$éÿ$Y„éÿŒZôéÿØZ´ éÿt[„ éÿÀ\¤ éÿè\ä éÿ] éÿ8]d éÿ„_” éÿðaéÿ(dTéÿ”téÿd:éÿ8¤:éÿlÄ:éÿ„4<éÿ�d<éÿÀÔ<éÿØD=éÿð¤=éÿ Ô=éÿØt>éÿ?éÿH´?éÿ”CéÿXtGéÿÔ¤GéÿütHéÿ4tIéÿŒJéÿÌ$JéÿtJéÿl„Jéÿ€ÔJéÿ ¤Méÿ˜ôMéÿÌÔNéÿ4Oéÿ\4PéÿàQéÿ ôQéÿ\ ´Téÿ¸ TUéÿ4!d_éÿ´!Ä`éÿ"daéÿ0"Ôaéÿ "ôaéÿ´"4béÿÈ"„béÿ#Äbéÿ#céÿH#dcéÿt#ôcéÿ<%4déÿ€%ddéÿ¨%Ädéÿì%¤eéÿ8&féÿx&´géÿØ&„héÿ0'´héÿX'4jéÿ€'léÿì'Äléÿ((ôléÿŒ($méÿ)TméÿH)„méÿ$*Ôméÿ”*néÿ¨*néÿ(+TnéÿD+Änéÿ°+ônéÿÄ+oéÿD,¤oéÿ4-äoéÿ\-$péÿH.DqéÿÌ.dqéÿä.¤qéÿø.äqéÿ /„réÿp1¤réÿ°1äréÿü1Tséÿ(2ôséÿ¬2”uéÿ43ÔuéÿÌ3véÿô3Tvéÿ4”véÿ$44wéÿh4dwéÿ�4ôwéÿÀ4xéÿL6Txéÿ€6”xéÿ˜6Äxéÿà6yéÿ7$yéÿ07„yéÿ\7¤yéÿp7zéÿ¤7”zéÿŒ8´zéÿ 8Ôzéÿ,:4}éÿÐ:T}éÿ <Ä}éÿL<Ô}éÿ`<~éÿ|<D~éÿÐ=T~éÿä=d~éÿø=t~éÿ ?ä~éÿ@ô~éÿ$@éÿ8@”éÿT@$„éÿ�AÄ…éÿ,B†éÿ@BT†éÿXBô†éÿ|CD‡éÿ8Et‡éÿˆF´‡éÿÈFćéÿGÔ‡éÿÔGŠéÿDHTŠéÿxHdŠéÿŒHt‹éÿØH„‹éÿìHÔ‹éÿXIÄŒéÿKDŽéÿ¤KT’éÿ0L´“éÿAƒu¬«åÿƒÄ0$éÿA]Ü8$éÿnD iøãªåÿ" 0 hèÿYA†CƒD u HAB KCA @½ªåÿe ƒ†[ AAA HdpèÿB�BŽE �E(ŒD0†C8ƒDP# 8D0A(B BBBA °²ªåÿvPƒ†Œ�Ž�Ðèÿ®OƒY A ðè«åÿƒ`Œèÿ\B�BŽI �H(ŒG0†C8ƒD@W 8A0A(B BBBA § 8C0A(B BBBA l{«åÿ¦@ƒ†Œ�Ž�ŒhèÿDU(¤pèÿøA†DƒG Ö DAA н«åÿ ƒ†èœ#éÿ.Ff”«åÿTœ#éÿbA`0ô#éÿbA`HL$éÿ[AY`R«åÿ[AY$x|$éÿ.A†CƒD cAA m«åÿ2 ƒ†cDDLÀTèÿüB�GŽJ �B(ŒA0†A8ƒGàx 8A0A(B BBBH /«åÿ¸#àƒ†Œ�Ž�40ô#éÿ™B�EŒD †D(ƒH0{(A ABB4h\$éÿ™B�EŒD †D(ƒH0{(A ABB4 Ä$éÿ™B�EŒD †D(ƒH0{(A ABB4ØÎåÿpB�EŒD †D(ƒH0R(A ABB0(èÿG BŒA†A ƒD@y  AABK D#Îåÿ @ƒ†Œ0`¤$éÿÑBŒA†A ƒD0y  AABA ”à×åÿ 0ƒ†Œ0°4(éÿÑBŒA†A ƒD0y  AABA ä¥äåÿ� 0ƒ†Œ(ñåÿj A†AƒD0a AA,˜+éÿ"@Býåÿ4T +éÿÄA†MƒE V ADG LAA8Œ8,éÿÿB�HŒA †D(ƒD0Ñ (A ABBE ÈÌüåÿ"0ƒ†Œ�<äà,éÿŽBŽB�I ŒA(†A0ƒq (A BBBA $0-éÿHƒS@vüåÿ/ƒ$X-éÿDA†IƒH oAA(€ä.èÿ§A†DƒD Y AAD ¬9üåÿ ƒ†Ä-éÿ$Øü,éÿBA†IƒA tAAüåÿ  ƒ†ADA8 ô.èÿ�IŒA†A ƒ ABA P ABE \±ûåÿ+ ƒ†Œ@x¬,éÿÂBŽB�B ŒD(†D0ƒD@F 0A(A BBBA 0¼|ûåÿÂ@ƒ†Œ�ŽY 0D(D DBBE ð/éÿCAƒ} îûåÿ?ƒ~8$ /éÿÓB�GŒA †D(ƒJ@q (A ABBA (` D/èÿ.A†GƒG \AAŒ ˜/éÿ;  ™ûåÿH´ °/éÿB�JŽE �B(ŒD0†D8ƒE@× 8D0A(B BBBA 4 Aûåÿ�@ƒ†Œ�Ž�A 8D0A(B BBBB (8 L0éÿÃA†AƒJð´AA0d ð0éÿãBŒA†D ƒGðÐ AAB˜ Fûåÿ\ðƒ†Œ@´ �1éÿ·Cƒ] A À A \ A U A c A U A b A ø Bûåÿƒ( ô3éÿšA†AƒA a AAA < üåÿ  ƒ†T �-èÿûOƒ¤ A t ëûåÿƒ\Œ 4éÿ B�HŽB �E(ŒD0†A8ƒG�M 8A0A(B BBBA ®˜F _˜B�ì ‚ûåÿ`�ƒ†Œ�Ž�H ¨=éÿWB�EŽB �B(ŒA0†D8ƒA@o 8A0A(B BBBA ,X ¼>éÿ’BŒI†D ƒ_ ABA 8ˆ ,?éÿgBŽB�B ŒK(†D0ƒw (A BBBA Ä ÿåÿš0ƒ†Œ�Žä -èÿAø ,?éÿ 8?éÿ24 d?éÿJB�BŒI †D(ƒD0n(A ABBX |?éÿ=Aƒw(t  ?éÿNA†DƒA l AAA (  Ä?éÿLA†IƒA u AAA HÌ è?éÿ…B�KŒD †H(ƒA0} (A ABBA T(D DDB\,èÿZB�HŽB �B(ŒA0†A8ƒGð\Uø\q€]Jˆ]G�]Ið\ø\H€]Dˆ]B�]Kð\dxðýåÿ>$ð\ƒ†Œ�Ž�¤ø\H€]Hˆ]B�]Ið\mø\D€]Eˆ]B�]Ið\  8A0A(B BBBA �à´@èÿÝ B�BŽB �B(ŒA0†A8ƒD`Ú 8A0A(B BBBA Z 8F0A(B BBBA N 8F0A(B BBBA W 8F0A(B BBBA t2!æÿä `ƒ†Œ�Ž�”°>éÿ4¨â,æÿA¼Ô,æÿ¥AƒšØ¬>éÿ%ìI/æÿA$´>éÿSA†LƒI°xCA(&/æÿAƒúHDÐ>éÿÕB�BŽB �B(ŒA0†D8ƒGPW 8A0A(B BBBA $�d?éÿSA†IƒA EAA¸›0æÿ  ƒ†<Є?éÿ°PŽP�B ŒE(†A0ƒk (D BBBA O0æÿf0ƒ†Œ�Ž80Ô@éÿÄB�BŒA †D(ƒE0¥ (A ABBA lY1æÿ0ƒ†Œ�ˆLAéÿ.œ<1æÿA°TAéÿqÄ1æÿ Ø¬BéÿÖì’3æÿ@¾5æÿÅAƒº$g7æÿJ"†\ƒ AAÃÆD Déÿ­Xu:æÿls:æÿA€”Déÿ!IƒWœ\:æÿƒ´Z:æÿ¥AƒšÐ¤Fèÿ%ä`Déÿ!IƒW³:æÿƒ±:æÿÅAƒº4pFèÿfDW A P>AæÿGq J lDéÿ!IƒWˆMAæÿƒ Déÿ!IƒW¼/AæÿƒÔ-AæÿAƒúð$Fèÿ?Oƒo úGæÿ“ƒ$0Fèÿ(8 ƒ†(@Aéÿ“A†DƒIð¤ CAA (0”cèÿüA†DƒG � AAE \¤Jæÿ> ƒ†tPdèÿDV(ŒXBéÿ?BŒH†D ƒmABH¸,dèÿùB�BŽB �B(ŒA0†K8ƒDP¡ 8A0A(B BBBE :Jæÿ;Pƒ†Œ�Ž�$$Béÿ:A†DƒI iAALBéÿ:`DBéÿ6Aƒt(|hBéÿ˜A†AƒA s AAA ¨ÑIæÿ° ƒ†$ÀÄBéÿ-A†AƒH `AAèÌBéÿˆD c A %Jæÿ  (,CéÿBŒA†A ƒQAB DñIæÿr ƒ†ŒgABLhœcèÿE B�BŽB �B(ŒA0†A8ƒGÐŒ 8A0A(B BBBI 4¸ïIæÿƒÐƒ†Œ�Ž�ûØOàGèGðIÐ8ðdpèÿKŒA†G ƒr ABH `ÃÆÌH ƒ†Œ, þXæÿ, ƒ†Œ8H ,qèÿÄBŽB�B ŒA(†A0ƒU (A BBBA „ ÒXæÿ´0ƒ†Œ�ޤ ÀAéÿ=^ƒXAÃÀ JZæÿIƒØ ÌAéÿ2Apð ôAéÿ!!@rèÿVjaF !3ZæÿC~$8!ÜAéÿ6A†AƒI hAA`!ôAéÿt!"Zæÿ(ˆ!ìAéÿQBŒH†I ƒsAI´! BéÿÈ!,BéÿYAƒSä!³Yæÿ$ƒc(ü!XBéÿ�BŽA†C ƒe ABA ("“YæÿP ƒ†ŽHD"`qèÿ§B�BŽI �E(ŒH0†C8ƒG`U 8A0A(B BBBE 4�"{Yæÿf`ƒ†Œ�Ž�Þ 8J0A(B BBBE È"©Zæÿ£Gà›ä"Béÿø" Béÿ #Hsèÿ1Iƒ`AÃ(#ìZæÿ5ƒH@#TsèÿôB�BŽB �B(ŒA0†A8ƒDp 8D0A(B BBBA Œ#½Zæÿfpƒ†Œ�Ž�L¬#èuèÿ·I�BŒA †A(ƒG`O (A ABBA UÃÆÌÍA`ƒ†Œ�ü#³]æÿ·`ƒ†Œ�H$éÿ |*È>éÿ�*Ä>éÿŽGà†H¬*8?éÿ�B�BŽB �I(ŒA0†A8ƒG°Ô 8A0A(B BBBA ø*|næÿA°ƒ†Œ�Ž�@+L€èÿBŽB�B ŒA(†A0ƒD@Ø 0A(A BBBA \+YoæÿY@ƒ†Œ�ŽH|+�èÿþB�BŽB �B(ŒA0†A8ƒD@‹ 8A0A(B BBBA È+FpæÿW@ƒ†Œ�Ž�Hè+ŒBéÿ”B�BŽB �B(ŒD0†C8ƒD`¯ 8A0A(B BBBA 4,1pæÿ*`ƒ†Œ�Ž�T,0�èÿ¸GठA p,qæÿ½à„,�Céÿ3˜,¼CéÿED @ °,ôCéÿžAƒI A RÔ,xqæÿ5ƒXì,X�èÿºBŽB�E ŒD(†D0ƒG@q 0F(A BBBJ à 0A(A BBBB H-9qæÿÙ@ƒ†Œ�ŽHh-œ‚èÿwB�BŽI �E(ŒD0†D8ƒG`Q 8A0A(B BBBD ´-¦qæÿ`ƒ†Œ�Ž�Ô-pCéÿD$è-Žræÿ‹A†AƒD0‚AA.t…èÿVAƒD OA0.ÑræÿJ ƒŒH.sæÿ<B�EŽE �E(ŒD0†D8ƒE@z 8G0Q(D BBBE Z 8D0D(I DBBE X 8G0D(D IBBE A8A0A(B BBBdØ. …èÿÎ`�BŽE �B(ŒA0†A8ƒD€& 8A0A(B BBBA ‰ÃÆÌÍÎÏA€ƒ†Œ�Ž�@/Gsæÿ—€ƒ†Œ�Ž�,`/¾sæÿuBŒG†D ƒG@\ AAB�/Béÿ+¤/ˆèÿ*HƒaÀ/Ósæÿ^ƒ8Ø/ ˆèÿ„NŽBŒA †A(ƒGPS (F ABBA 0ÝsæÿKPƒ†ŒŽl00 uæÿ?K�BŽB �E(ŒA0†D8ƒGPý 8DÃ0AÆ(BÌ BÍBÎBÏE D8A0A(B BBBAÃÆÌÍÎÏ$ 0Ô‡èÿnI†DƒG0WAAÈ0³uæÿ/0ƒ†$à0ä@éÿ3A†DƒE fAA1¢uæÿ ƒ† 1ä@éÿ41°‡èÿ®Aƒr E P1puæÿ;Iƒql1¨@éÿAM8„1ˆèÿFB�BŒA †A(ƒD0M (A ABBA HÀ1$ˆèÿ‚B�BŽE �B(ŒA0†I8ƒGp· 8D0A(B BBBH  2ïtæÿ˜pƒ†Œ�Ž�L,2ø?éÿ;B�IŽN �N(ŒP0†H8ƒJÐw 8A0A(B BBBA |2væÿãЃ†Œ�Ž�œ2ÈAéÿ8Iƒn¸2¾xæÿ ƒÐ2ÔAéÿHä2ÐAéÿB�DŽB �B(ŒA0†A8ƒGPR 8A0A(B BBBA 03”Béÿ$D3�BéÿIA†KƒE iIA,l3*xæÿx ƒ†c ADA A GAE œ3؈èÿH°3tBéÿìY�BŽB �B(ŒA0†A8ƒD@l 8A0A(B BBBA $ü3xæÿ@ƒ†Œ�Ž�NÃÆÌÍÎÏ$$4pˆèÿ9A†DƒA pAA`L4ˆˆèÿºB�BŽB �B(ŒD0†H8ƒG@Å 8A0A(B BBBF u 8A0A(B BBBA °4}wæÿ!@ƒ†Œ�Ž�4Ð4Ä‹èÿQK†HƒG j AAJ ¦ÃÆA ƒ†$5FyæÿJ ƒ†| AÃAÆE (05ÄŒèÿ–HƒS A _ A N A J\5äŸèÿQL†DƒD c AAA ,>‡æÿ@ ƒ†D>�HéÿX>œHéÿl>ØŸèÿ €>”HéÿUAƒH i AA ¤>ÐHéÿS½ A tÄ>­†æÿØ>¬Jéÿ"ì> †æÿ<?´JéÿíBŽD�B ŒA(†D0ƒc (A BBBA @?O†æÿD0ƒ†Œ�Ž`?DLéÿ5Lt?ðžèÿ  B�BŽB �B(ŒA0†A8ƒD°x 8A0A(B BBBH Ä?†æÿê°ƒ†Œ�Ž�4ä?LéÿHKŒA†A ƒSABAÃÆÌA ƒ†Œ@¡‹æÿx ƒ†Œ,8@ý‹æÿLŒA†H ƒêABAÃÆÌh@ÌKéÿ |@ÈKéÿ'A`”@¥ŒæÿT(¬@X«èÿOBŽDƒD0` ABA ,Ø@Œæÿ”0ƒŽ@ FBE tLBHAlKéÿœB�BŽB �H(ŒH0†A8ƒDPC 8A0A(B BBBA TA—ŒæÿPƒ†Œ�Ž�tA Léÿ•ˆAxŽæÿ0œAMéÿMA†AƒD0y AAE DAAÐA>Žæÿ]0ƒ†,èAlªèÿ¼BŽA†H ƒV ABD BSŽæÿ) ƒ†Ž84BàªèÿßB�IŒD †D(ƒG0B (D ABBK pB$Žæÿ0ƒ†Œ�0ŒBh¬èÿñBŒD†D ƒG0P  AABK ÀBò�æÿ 0ƒ†Œ4ÜB­èÿuF†DƒG c AAA iÃÆA ƒ†C§�æÿ. ƒ†,CØKéÿ@CÔKéÿTCÐKéÿhC��æÿ |Cø¬èÿTAƒL E AœC¨Kéÿ#°CE�æÿ0ÄC°Kéÿ©BŒA†A ƒD0¡  AABA (øCþŒæÿH0ƒ†ŒR  IABE $DMéÿ"AƒH@WADDú�æÿl@ƒH\DøLéÿB�DŽB �B(ŒA0†A8ƒD ’ 8A0A(B BBBD 8¨DŽæÿ½ ƒ†Œ�Ž� 8A0D(D BBBE ,äDð«èÿeBŒA†D ƒV ABA ES’æÿD ƒ†ŒX0E¬èÿ±BŽB�B ŒA(†A0ƒG@d 0A(A BBBE m 0A(A BBBK ŒE’æÿt@ƒ†Œ�ެE¸LéÿLJ E AHÌE8®èÿÉB�BŽB �B(ŒA0†A8ƒDp  8A0A(B BBBA PF•æÿªpƒ†Œ�Ž�–xI€UxApAxG€vxBpS 8D0A(B BBBE $lF]–æÿþ‚†DƒuAAÃÆ”FðKéÿ¨FüKéÿ†Aƒ„ÄF—æÿ)ƒÜF—æÿ„ðF„—æÿGƒ—æÿG¼¯èÿ,Gq—æÿ $@G´¯èÿ4A†AƒA nAAhG̯èÿ|GA—æÿ $�Gįèÿ^A†AƒA SFA0¸G|Kéÿ[B�BŽB �B(ŒA0†G8ƒGÀ8ìGñ–æÿÁÀƒ†Œ�Ž�Y 8A0A(B BBBA 8(HlMéÿºBŽB�B ŒA(†K0ƒ�(D BBBLdHðMéÿ.B�BŽB �E(ŒA0†A8ƒG€ 8A0A(B BBBA 4´Hê—æÿ€ƒ†Œ�Ž�\ 8D0A(B BBBE ìH˜OéÿI´™æÿ�Aƒj A IxOéÿ0I„Oéÿ(DIšæÿO†DƒA ÷CAAÃÆHpIdOéÿQB�BŽB �B(ŒA0†A8ƒDP68C0A(B BBB¼I›šæÿ7Pƒ†Œ�Ž�ÜIØ­èÿ(ðIžšæÿ`J0PéÿÔB�BŽB �B(ŒA0†A8ƒDp) 8A0A(B BBBA X 8C0A(B BBBE ÈhJ'šæÿ†pƒ†Œ�Ž�# 8J0A(B BBBE D 8A0A(B BBBE k 8M0A(B BBBE K 8C0A(B BBBE Ø 8K0H(B BBBE D 8I0A(B BBBE V 8C0A(B BBBE 4KàRéÿ1HKÍ æÿL\KøRéÿuB�BŽE �E(ŒD0†D8ƒTàX 8A0A(B BBBA 8¬K~ æÿÚàƒ†Œ�Ž�¶ 8C0A(B BBBE DèK¡æÿàB�JŽB �B(ŒD0†A8ƒA@½8C0A(B BBB0L¤Téÿ-dE HLœ«èÿ{GƒG@] AA lLx¡æÿn@ƒ`GÃ<ŒLÆ¡æÿ…BŽH�E ŒD(†D0ƒG`^0A(A BBBDÌL8TéÿmB�EŽB �B(ŒD0†A8ƒGpK8A0A(B BBBDMáæÿÔpƒ†Œ�Ž�c 8D0A(B BBBE &xD€PxAp\MO£æÿlHƒP B QD|MøSéÿ¬B�BŽB �B(ŒA0†A8ƒDP“8A0A(B BBB4ÄMS£æÿ©Pƒ†Œ�Ž�t 8J0C(B BBBE HüM(TéÿB�BŽB �B(ŒA0†A8ƒD`ú 8A0A(B BBBA 4HNx£æÿ—`ƒ†Œ�Ž�R 8L0A(B BBBE €Nä©èÿ>”N°Téÿd¨N¯£æÿDAk J E,ÈNìTéÿkBŒA†D ƒG0X AABøN££æÿ0ƒ†Œ�O¡£æÿaB�EŽE �E(ŒD0†D8ƒG€q 8G0L(B BBBE r 8J0A(B BBBE } 8G0D(D BBBE D8A0A(B BBB¨O|TéÿhAƒG A Z4ÈOÌTéÿFA†HƒD I AAE ¯ AAE lP¥æÿä ƒ†a AAE ~ AAA f AAE � CAE t AAE A MAE A HCE HpPtUéÿ²B�IŒG †C(ƒC0] (A ABBE k(A ABB¼P>¦æÿ0ƒ†Œ�LØP7¦æÿŠIŽB�E ŒA(†D0ƒ^ (C BBBE A(A BBBH(Qq§æÿ^B�BŽB �B(ŒA0†A8ƒDPB8D0A(B BBBtQƒ¨æÿˆQލæÿ!œQ›¨æÿ°Qˆ¨æÿ ÄQàTéÿØQm¨æÿìQZ¨æÿAIRU¨æÿ)4Rj¨æÿDB�NŒD †D(ƒI0G(R ABB4PRv¨æÿDB�NŒD †D(ƒI0G(R ABB\ˆR‚¨æÿ3B�EŽE �E(ŒD0†D8ƒB@¾ 8D0D(D BBBE x8A0A(B BBBDèRU©æÿ}B�BŽE �E(ŒD0†D8ƒD@X8A0A(B BBB$0SŠ©æÿ7A†DƒA nAA4XS™©æÿ¶B�EŒD †A(ƒA0Ÿ(D ABB(�SªæÿËHŒA†D ƒ¸CB$¼S¶ªæÿ=A†DƒD qAAäS˪æÿ!AVüSÔªæÿ!AVHTݪæÿoB�EŽE �E(ŒD0†D8ƒGPD8A0A(B BBB`T¬æÿAM4xT÷«æÿeB�IŒA †I(ƒK0r(D FBB°T$¬æÿ&A,ÄT6¬æÿ¯BŒA†D ƒG0œ AAB(ôTµ¬æÿ€BŒD†D ƒrAB$ U ­æÿLA†AƒG@jJJ(HU-­æÿvK†MƒA RDÃAÆ0tUw­æÿ—A†DƒD ~ ADG AAA¨UÚ­æÿLNƒzAÃÄU ®æÿ $ØU®æÿ-A†OƒF FIC$V®æÿ\A†DƒD PAA(V9®æÿEIƒ{DVb®æÿ5Iƒk`V{®æÿXBŒI†J ƒ€V³®æÿ(”V¦®æÿrBŒH†H ƒOHDÀVì®æÿ�AƒF xAàVM¯æÿCAADøVx¯æÿÝB�IŽB �E(ŒA0†D8ƒDP·8A0A(B BBB$@W °æÿcA†FƒD0UAA<hWH°æÿXA†DƒB _ AAE X DDG AAAH¨W`°æÿúB�BŽB �B(ŒA0†A8ƒFPß8A0A(B BBBôW¶æÿ%X¶æÿ<XG¶æÿNAƒD E C8A0A(B BBBHä[zÈæÿVB�BŽB �B(ŒA0†A8ƒD€=8A0A(B BBBT0\„Þæÿ’B�BŽB �B(ŒD0†A8ƒGpÊxG€JxAp”8D0A(B BBB<ˆ\¾áæÿ WŽI�B ŒD(†D0ƒë(A BBBAÃÆÌÍÎÈ\žâæÿAT$à\Ÿâæÿ=A†DƒD qAAÈ]´âæÿ B�BŽE �E(ŒA0†D8ƒDp xO€ÙxApØxI€^xBpXxR€xApHxK€ZxApcxO€|xBp«xO€‡8D0A(B BBBEpr 8R0A(B BBBE D8A0A(B BBBHÔ]øëæÿB�BŽB �B(ŒA0†D8ƒGÀò8A0A(B BBB| ^½íæÿsB�BŽB �B(ŒA0†A8ƒD O 8D0D(D BBBE I 8A0D(D BBBE —8A0A(B BBBX ^° çÿhB�BŽB �B(ŒA0†A8ƒJÀÈÈ\ÐFÈAÀ^8A0A(B BBBü^¼çÿ�AƒF xA_çÿCAAD4_HçÿÝB�IŽB �E(ŒA0†D8ƒDP·8A0A(B BBB$|_ÝçÿcA†FƒD0UAA<¤_çÿXA†DƒB _ AAE X DDG AAAHä_0çÿ9B�BŽB �B(ŒA0†A8ƒDP 8A0A(B BBB`0`çÿ~B�BŽB �B(ŒA0†A8ƒA@S 8A0D(D BBBE A8A0A(B BBB(”`7çÿÇA†AƒA • AAE À`Òçÿ¬[ƒT ÃJ qAÃ,ä`Zçÿ¦BŒH†A ƒ“ABaÐçÿ(aËçÿcKf J A¬aQçÿ"A`Äa[çÿ$(ØakçÿFBŒD†D ƒxAB4b…çÿfB�EŒD †D(ƒH0H(A ABBA|H¬fF'çÿXB�BŽE �E(ŒD0†D8ƒG`-8D0A(B BBBHøfR)çÿn B�EŽB �B(ŒA0†A8ƒI�K 8C0A(B BBB(Dgt6çÿVBŒD†D ƒHABHpgž6çÿ>B�BŽB �B(ŒA0†A8ƒDP"8D0A(B BBBH¼g�7çÿŒB�BŽB �E(ŒA0†A8ƒJPG 8A0A(B BBBE (hÐ8çÿBŒA†D ƒABH4hÃ:çÿVB�BŽB �B(ŒA0†A8ƒA@@8A0A(B BBB8€hÍ<çÿæB�BŒH †G(ƒF@ž (A ABBA 8¼hw=çÿŽBŽB�I ŒD(†A0ƒm(D BBBHøhÉ=çÿYB�BŽE �B(ŒD0†D8ƒF€58A0A(B BBBHDiÖ?çÿMB�GŒH †F(ƒA0© (A DDBE n(D ABB0�i×@çÿ¯K†DƒD ‚ DFE ADA8ÄiRAçÿ½BŽB�K ŒM(†D0ƒ�(G BBBjÓAçÿnHƒRHj%BçÿÿB�DŽB �B(ŒA0†A8ƒNP×8D0A(B BBBHhjØDçÿ5B�DŽB �B(ŒA0†A8ƒNP 8D0A(B BBBH´jÁFçÿbB�BŽB �B(ŒA0†D8ƒG�@8D0A(B BBBHk×Mçÿ¯B�LŒA †A(ƒJÀmÈGÐBØBàV(A ABB$Lk:NçÿFA†IƒG0rAA$tkXNçÿEA†IƒG0qAAXœkuNçÿZB�BŽB �B(ŒA0†A8ƒQÀ³È\ÐFÈAÀ^8A0A(B BBBøksUçÿ>Kf J A8l‘UçÿŽBŽB�I ŒD(†A0ƒm(D BBBDTlãUçÿÇB�EŽE �E(ŒD0†G8ƒDPœ8A0A(B BBBTœlbVçÿ8B�DŽB �B(ŒA0†A8ƒNPõXN`iXAP£8D0A(B BBB8ôlBXçÿ½BŽB�K ŒM(†D0ƒ�(G BBB0mÃXçÿnHƒR`LmYçÿ B�DŽB �B(ŒA0†A8ƒNPöXO`WXLPUXK`HXAPT8D0A(B BBBܰm¾[çÿÛB�BŽB �B(ŒA0†D8ƒG�L˜S O˜A�I˜N R˜B�A˜O X˜A�R˜S O˜A�`˜N S˜B�\˜O U˜A�^˜N R˜A�K˜N Z˜B�t˜O r˜B�8D0A(B BBB|�n¹bçÿ B�BŽB �B(ŒA0†A8ƒD° 8A0D(D BBBE ] 8C0A(B BBBE T8A0A(B BBBHoB€çÿAB�BŽB �B(ŒA0†A8ƒD€(8A0A(B BBBH\o7–çÿ¯B�LŒA †A(ƒJÀmÈGÐBØBàV(A ABB@¨o<=éÿYE�HŽF �B(ŒA0†A8ƒ80A(B BBBHìoXDéÿ«B�EŽB �B(ŒD0†A8ƒGPà 8A0A(B BBBD @8p¼FéÿÉB�EŽB �B(ŒA0†A8ƒ²0A(B BBBd|pHYéÿGB�BŽB �B(ŒD0†D8ƒGPZ 8A0A(B BBBE   8A0A(B BBBF äp@\éÿ$øp<\éÿLA†AƒD CAA qd\éÿ-D4q€\éÿ Hq|\éÿ,\q˜\éÿHpq”\éÿSB�BŽE �E(ŒD0†D8ƒG€J 8A0A(B BBBG 8¼q¨`éÿ¤B�EŒD †C(ƒJÀx (A ABBJ øqaéÿ raéÿ raéÿ4Aƒc L C`@r4aéÿGB�BŽB �B(ŒG0†A8ƒDP€XR`MXAPV 8D0A(B BBBI LXT`UXAP@¤r béÿ›BŽB�B ŒA(†D0ƒG`M 0D(A BBBF èr|eéÿ7G oLs¤eéÿ4BŽD�B ŒA(†A0ƒÊ (A BBBE { (A BBBF Psò’çÿ0ƒ†Œ�Žpstféÿ7(„s féÿƒBŒD†A ƒxAB°s«’çÿ ƒ†ŒÌsèféÿ&0àsgéÿ»BŒA†D ƒGð¥ DAB`tL’çÿƒB�EŽB �B(ŒD0†A8ƒD`w 8D0D(D BBBE 8A0A(B BBB(xtk“çÿvBŒD†D ƒhAB`¤tµ“çÿƒB�EŽB �B(ŒD0†A8ƒD`w 8D0D(D BBBE 8A0A(B BBB0uÔ”çÿaA†IƒG } DDG AAA(NiZNRRŽNè²gN.ŽN ³yN-†NP³“Nss�N¯NSS»NÖNý€³ÓNþ¨³æNttìNÍ\TTŽNýNO ŽNO:O äRuuÖOس=OÖO´üGîMO8´XOÆh´ISÈv[OV˜´uOxx�O›OXXÀ´ªOøð´·OyyÖOÄOYiaµÝO((éO÷O))PPÿ@µ P€µ-PÜ*PÝ;PÞ¸µ8PßðµEP–VK`¶LP—UPsP—vP—‚P¬€¶ŠP¬�P¬ƒP¬˜P±¨¶¥P»Ð¶¯P¼ð¶ÆPè·ÃPéH·ØPÜx·ÕPݰ·ïP˜ôP9D™Q#Q‡Rš3Qð·UMU@¾TU·`Ux¾xU·„U¸‘U°¾ U¹ŽNྶUùÉU¿ÏUÚÝU8¿åUÙôU`¿ýUºV!Vï�¿-V½ÖO7VMVŰ¿`VínV~V~l¾vV›V²V¿vV·VÓVÀvVÙVöVÁvVüVWÂvV'WCWÃvVSWqWÄvV€W�WØ¿ÇWǹW�ÀÃWÇÏWÉŽN¸ÀÞWÊÖOØÀöWÎ@ÁXÌhÁXÍ7XUXËŽNbXtXÏÖOŠX¦XÐŽN˜ÁÁXѸÁÍXÒàÁâX"ßX#òX$ Y% Y&Y)Y*4Y'1Y(FYÖÂWY×@ÂaYØhÂtY Â�Y•YȧYÿY(à TÛPÃØYàÖO€ÃÝYÖO¨ÃöYàÃZÄ ZZ9ZIZPÄRZ€ÄOZ¸ÄiZðÄfZÅ}ZPÅzZ €Å‹Z!¸Å x gj^r^z^…^�^—^ ^¨^1d_b9dHd^dldyd…d“d dWb_bebwb¬j³j»jÃjÉj Ïjåj1s�ïjžÄw§þjŸk #k¡;k¢Ok£`k¤xk¥ü`>Šk¦”k¨€¡Á¥k¨kûk©»k©Ækªãw«Ùk¬"K0íkÀl­l®"l¯7l°Ml±dl²dl²rl³‰l´¡lµ³l¶Çl·Úl¸îl¹mº!m» ¡¿>mÄXmźmÜÒmÆæmÇùmÈ nÉnÊ.nË>nÌPnÍvmÎsmÏÛ`/‡mÑœmÒ²mÛÊmÓÞmÔñmÕnÖn×&nØ6nÙHnÚÞ€ûLXn[n^nan dn hn ln on rnunxn{n~nenin�n„nm‡nZ{�nªe©e¤eže™e!–n/Ÿn7®nAµnByCC½nDÈnEÌnFÒnH×nGßnIênJæn‰fqfïnKønLünlot2N'o(o)1oTBoVIo5PoMr^rprr ^rpr¬j³j»jÃjÉj Ïjåj1s�ïjžÄw§þjŸk #k¡;k¢Ok£`k¤xk¥ü`>Šk¦”k¨•r=€¡Á¥k¨kÃvmÎsmÏ»k©»k©Ækªãw«Ùk¬"K0íkÀl­l®"l¯7l°Ml±dl²dl²rl³‰l´¡lµ³l¶Çl·Úl¸¡r¹mº!m»øƒ¾ ¡¿¿r¼·r½>mÄXmÅÒmÆÊmÓæmÇÞmÔùmÈñmÕ nÉnÖnÊn×.nË&nØ>nÌ6nÙPnÍHnÚÛ`/‡mÑœmÒÓrÖrßrêrçrñrúrýrMr^rprr ^rpr³tËtÔtÓtloæt³töt u u8ru2uÈ…HuZujuzuŠuloæt›u šu ¦u­uµu ³tËtÔtÓtloæt³töt ËtÂu ÔtÐuâuöuZujuzuŠuloæt›u šu ¦u­uµu óov#v+v Øo¶q6vd_vgvovJv Tv ^vfvnvvv �vŠv“v �v¤v­v ·v Âv ÍvÔv Þvævív ÷v w w óov#v+v Øo¶q6vd_vgvovJv Tv ^vfvnvvv �vŠv“v �v¤v­v ·v Âv ÍvÔv Þvævív ÷v w w Ãwû`Éw Ïw ×wâwttfq txq–g t t*t>q:t BtKt  sûLpqSt]qZt1q–n ów GqbtÇy 7qÓrÖrßrêrçrñrúrýrçx±bõxyûL yyyy%y+y/y8yAyHyGyMyQyUyZyayeyiyDy‹{myqy]@uyxyy†yŠyŽy’y–yšy»{ y¤y�n¬yªe©e¤eže™e±y–n¿\·yÖeÏeÀyoo1oÏyÜyîyøyzzzŸnz,zDzPzjzPo�z®n‰z–z¡z¨z®z³z¸zÀzÉzµnÎz½nÈnÌnÒnßn×nênæn×zÝzãzëzïzøzözþz {Bo{Io{§|4{:{A{N{)zW{p{`{h{w{�{È|©zïn£z†{Ž{–{œ{¥{‡n%z®{µ{t�z¿{È{Ì{Ù{ê{÷{ü{Xo| ||#|)|2|G|e|j|u|€|ˆ|œ|­|fqº|Í|Ñ|Õ|Ù|Ý|á|å|é|�Mñ|ú|} }}}/}B}F}T}g}y}…}Ž‚–}š}¥}®}²}¶}º}Å}É}Õ}Ø}Ü}mCà}ð}~~~-~D~R~d~s~~~�~¢~½~Ð~Õ~ß~ä~é~ø~ $.8CµRMbs„‰•¡°ÀÒÚí €€8€O€_€q€v€�€}€†€‹€�€Ÿ€¦€°€Å€Ò€îVâ€ç€ì€ñ€ö€û€�� ���x\��1�F�V�b�k�{�€�…�Š���š�Ÿ�¤�©�³�Ã�Ì�Þ�ã�ö�‚‚-‚IS2‚7‚B‚L‚S‚\‚g‚k‚o‚}‚š‚Ÿ‚µ‚ÂÈ‚°"À"#ð"`'( (0( "e{‡— ð Ô50Ó8Óõþÿo°X  è?x¨Çx40“ ûÿÿoþÿÿo¨3ÿÿÿoðÿÿo^1ùÿÿo (=6ðFðVðfðvð†ð–ð¦ð¶ðÆðÖðæðöðññ&ñ6ñFñVñfñvñ†ñ–ñ¦ñ¶ñÆñÖñæñöñòò&ò6òFòVòfòvò†ò–ò¦ò¶òÆòÖòæòöòóó&ó6óFóVófóvó†ó–ó¦ó¶óÆóÖóæóöóôô&ô6ôFôVôfôvô†ô–ô¦ô¶ôÆôÖôæôöôõõ&õ6õFõVõfõvõ†õ–õ¦õ¶õÆõÖõæõöõöö&ö6öFöVöfövö†ö–ö¦ö¶öÆöÖöæööö÷÷&÷6÷F÷V÷f÷v÷†÷–÷¦÷¶÷Æ÷Ö÷æ÷ö÷øø&ø6øFøVøføvø†ø–ø¦ø¶øÆøÖøæøöøùù&ù6ùFùVùfùvù†ù–ù¦ù¶ùÆùÖùæùöùúú&ú6úFúVúfúvú†ú–ú¦ú¶úÆúÖúæúöúûû&û6ûFûVûfûvû†û–û¦û¶ûÆûÖûæûöûüü&ü6üFüVüfüvü†ü–ü¦ü¶üÆüÖüæüöüýý&ý6ýFýVýfývý†ý–ý¦ý¶ýÆýÖýæýöýþþ&þ6þFþVþfþvþ†þ–þ¦þ¶þÆþÖþæþöþÿÿ&ÿ6ÿFÿVÿfÿvÿ†ÿ–ÿ¦ÿ¶ÿÆÿÖÿæÿöÿ&6FVfvHH 5Æ«SÌSÇÏŽÐE&ÀÊ û/Zà·ðyÛÕïÑ5J