ELF>pê@ˆ5@8 @@@@hh¨¨¨ÐËÐËÐÐÐMþMþÐÐÐ�Ø�Øð«ð»ð»0ˆx¦€ €€ÄÄÄDDPåtd ÿ ÿ ÿŒŒQåtdRåtdð«ð»ð»dd/lib64/ld-linux-x86-64.so.2GNUGNUSï¿ÈŽþáÊ­3.÷ËÁBAˆ/cܤ¡®–#¼5”€G‘ÜÝÞàâäæèëíîðñUÀf3Ä÷†ð–|uÜ µnmŸÿÍ@ÛæèïpT“˜<­¶úëOŽýDø¡9ò‹L>¥ h �HÁ³÷>[³¢÷jšufUaÑeÎm�Çà`(Œ�cÿ0 ÐÀ_æÜuÇŒD % L » 7 öþ  Ø ³× ã ©ý Q¸ “âÑ u * “¼ i’  Â&r C 1 "X'  ’ 9 | „ - § Ê – †`  Š ‚  ü 2Ô;Þ +  Õ ªL† û;TÈì ³  ?Ò ¬Œ  hÛ) r   _è� ìÔÁ8í ^É 1 � 5 >n  Ø žY_ˆ? »™ ›\þ·  M CÐ ÆmmãÛ™ ùÌqX A{Ì 9Ä © ‹… ¨Z î h Z I Zh < º²ù ø  ò 7 g K  �OŒó)  ˆ ùÙ þŸ § æ µ î.D ¸@ Šq÷ ÿ U;Õ� J±± ®ë‡ ˜h ¬ ¾ i„PB XDÏM`€D`%€ÿ  ÐÌ)× DàÊœ€S  Iy`ÌeT àH1I7  Ì7L `Da ËR PDô "r  Ëõå  D« @Dlibbfd-2.31.1-system.so_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTablehtab_find_slotbfd_elf_parse_eh_frame_entriesbfd_elf_set_dt_needed_namebfd_getb64bfd_cache_close_allbfd_set_section_sizebfd_link_add_undefbfd_check_formatbfd_hash_newfuncxexitbfd_set_archive_headbfd_target_listbfd_set_section_contentsxstrdupbfd_get_archbfd_make_section_anyway_with_flagsregister_ld_plugin_object_pbfd_set_gp_sizexmemdupbfd_emul_get_commonpagesizecplus_demangle_name_to_stylebfd_set_assert_handlermake_relative_prefix_sch_tolowerconcatbfd_get_reloc_sizebfd_set_errorbfd_set_error_program_namehtab_hash_stringbfd_elf_get_dt_soname_sch_istablebfd_make_readablebfd_elf_set_dyn_lib_classbfd_section_already_linked_table_initxmalloc_set_program_namebfd_allocbfd_check_format_matchesbfd_close_bfd_pex64i_swap_debugdir_outbfd_elf_get_bfd_needed_listbfd_get_machbfd_close_all_donebfd_hide_sym_by_versionbfd_make_section_old_way_bfd_pei_write_codeview_recordxcallocbfd_errmsgbfd_find_targetbfd_elf_size_dynsym_hash_dynstrbfd_openr_next_archived_filebfd_plugin_target_pbfd_get_arch_infobfd_new_link_orderbfd_hash_set_default_sizebfd_hash_lookupbfd_section_already_linked_table_freefilename_ncmpbfd_arch_mach_octets_per_bytebfd_elf_get_runpath_listbfd_get_section_by_namelrealpathbfd_get_target_infobfd_emul_set_maxpagesize_bfd_pex64i_write_codeview_recordbfd_map_over_sectionsbfd_elf_get_dyn_lib_classbfd_scan_archbfd_get_gp_sizebfd_bwriteunlink_if_ordinarybfd_make_writablebfd_elf_get_needed_list_bfd_elf_map_sections_to_segmentsxmallocbfd_set_section_flags_bfd_std_sectionbfd_get_unique_section_namebfd_putl16bfd_set_arch_infobfd_arch_get_compatiblecplus_demangle_set_stylebfd_elf_size_dynamic_sectionsbfd_iterate_over_targetsbfd_set_default_targetbfd_link_hash_lookupbfd_set_format_bfd_elf_match_sections_by_typebfd_get_next_section_by_namexreallocbfd_emul_get_maxpagesizebfd_elf_discard_infobfd_set_symtabbfd_get_reloc_code_namebfd_set_error_handlerbfd_putl32bfd_octets_per_bytebfd_emul_set_commonpagesizebfd_link_hash_traversebfd_seekbfd_record_phdrbfd_plugin_open_inputbfd_hash_table_initbfd_generic_link_read_symbolsbfd_link_check_relocsbfd_scan_vmabfd_hash_allocatebfd_get_section_by_name_ifbfd_getb16lbasenamebfd_statbfd_createbfd_hash_traversebfd_demanglebfd_putl64bfd_use_reserved_idbfd_arch_bits_per_addressbfd_hash_table_freegetpwd_bfd_fix_excluded_sec_symsbfd_wrapped_link_hash_lookupbfd_get_errorbfd_make_section_with_flagsbfd_breadbfd_getb32bfd_get_section_contentsbfd_reloc_type_lookupbfd_openr_bfd_pei_swap_debugdir_outbfd_openwbfd_hash_table_init_nhtab_findfilename_cmphtab_createcurrent_demangling_styleobjalloc_free_blockbfd_elf_record_link_assignmentbfd_set_start_addressbfd_initbfd_printable_namebfd_canonicalize_relocbfd_get_reloc_upper_boundbfd_make_section_anyway_bfd_elf_tls_setup_xexit_cleanuplibz.so.1libdl.so.2dlclosedlsymdlopendlerrorlibc.so.6fflushstrcpyfnmatchsprintfsetlocalefopenstrncmpdcngettextoptindstrrchrperrordcgettextftellstrncpytimeputcharabortstdinstrpbrkrewindstrtokstrtolisattymmapfeoffgetcfgetsstrlenungetcmemsetglobstrstrstrcspn__errno_locationfseekmemcmpgetpagesizestdoutfputcgetrusagefputslseekmemcpyfclosestrtoulstrcatstrcasecmpgetenv_obstack_allocated_poptargstderrmunmap_obstack_begin_1_obstack_newchunkgetopt_longstrtoullfileno_obstack_memory_usedfwritefreadstrchrfprintfqsortobstack_alloc_failed_handler__cxa_finalize__xstatmemmove_obstack_beginbindtextdomainopterrstrcmp__libc_start_mainferrorstpcpyglobfreegetopt_long_only_obstack_freeGLIBC_2.2.5GLIBC_2.27GLIBC_2.14ž  ui ‡Æ ‡‘–“”‘–žui ‡ð»Pëø»ë¼½Ñ¼ÅѼÍѼØÑ ¼âÑ(¼êÑ0¼óÑ8¼ûÑ@¼ÒH¼FÑP¼ÒX¼Ò`¼°ªh¼Òp¼Òx¼#Ò€¼+Òˆ¼2Ò�¼8Ò˜¼<Ò ¼EÒ¨¼NÒ°¼TÒ¸¼YÒÀ¼]ÒȼaÒмfÒؼmÒà¼qÒè¼uÒð¼QÒø¼NÕ½yÒ½}Ò½Vß½�Ò ½„Ò(½‹Ò0½’Ò8½–Ò@½šÒH½žÒP½¢ÒX½¦Ò`½‡Õh½¬Òp½°Òx½¸Ò€½¾Òˆ½ÄÒ�½ÃÒ˜½ÉÒ ½ÎÒ¨½ÔÒ°½ÙÒ¸½ÑÀ½âÒȽëÒнñÒؽøÒའÓè½"Óð½3Óø½@Ó¾RÓ¾\Ó¾rÓ¾vÓ ¾zÓ(¾‰Ó0¾—Ó8¾¯Ó@¾»ÓH¾ÕÓP¾ìÓX¾úÓ`¾Ôh¾ Ôp¾Ôx¾!Ô€¾(Ôˆ¾.Ô�¾3Ô˜¾8Ô ¾@Ô¨¾HÔ°¾QÔ¸¾\ÔÀ¾`ÔȾfÔоkÔؾrÔà¾~Ôè¾zÔð¾ƒÔø¾‰Ô¿�Ô¿—Ô¿›Ô¿¤Ô ¿¢Ô(¿ªÔ0¿¶Ô8¿ÅÔ@¿ÌÔH¿ÑÔP¿ØÔX¿ZÖ`¿îÔh¿ôÔp¿ûÔx¿Õ€¿”Óˆ¿Õ�¿*Õ˜¿Õ ¿"Õ¨¿1Õ°¿;Õ¸¿{ÖÀ¿)ÔÈ¿@Õп#ÔØ¿IÕà¿QÕè¿YÕð¿_Õø¿hÕÀqÕÀ�ÓÀzÕÀ�Õ À‹Õ(ÀÔ0À�Õ8À™Õ@À�ÕHÀªÕPÀ»ÕXÀÈÕ`ÀÍÕhÀôÓpÀÔÕxÀÝÕ€ÀíÕˆÀôÕ�ÀúÕ˜ÀÖ ÀÖ¨ÀÖ°À(Ö¸À3ÖÀÀ;ÖÈÀOÖÐÀ`ÖØÀÚòàÀmÖèÀ€ÖðÀ„ÖøÀˆÖÁŒÖÁ�ÖÁ”ÖÁ˜Ö ÁœÖ(Áǯ0Á¤Ö8Á­Ö@Á¹ÖHÁ½ÖPÁÍÖXÁÑÖ`ÁâÖhÁõÖpÁùÖxÁ×€Á׈Á,×�Á8טÁI× ÁMרÁÁÖ°Ác׸Ág×ÀÁr×ÈÁ{×ÐÁרÁƒ×àÁŽ×èÁ’×ðÁž×øÁ¡×Â¥×ÂJ¯Â©×Â¹× ÂÌ×(ÂÑ×0Âß×8Âö×@ÂØHÂØPÂ%ØXÂ0Ø`ÂBØhÂTØpÂoØx‚؀‡؈‘Ø�–ؘ›ؠªب½ذÂÄØ¸ÂÍØÀÂÖØÈÂÒÐÂàØØÂëØàÂ+°èÂõØðÂ ÙøÂÙÃ'ÙÃ,ÙÃ1ÙÃ=Ù ÃIÙ(ÃXÙ0ÃhÙ8ÃzÙ@ÂÙHÕÙPòÙXÃÄÙ`ÃàÙhÃ÷ÙpÃÚxÃÚ€ÃÚˆÃÚ�Ã&Ú˜Ã-Ú Ã7Ú¨ÃLÚ°ÃYÚ¸Ãâ³ÀÃiÚÈÃnÚÐÃsÚØÃxÚàÃ}ÚèÂÚðÃ‡ÚøÃŒÚÄ‘ÚÄ–ÚÄ›ÚÄ Ú Ä¥Ú(Ä Ã0ĪÚ8İÚ@ÄÂÚHÄ×ÚPÄçÚXÄóÚ`ÄüÚhÄ ÛpÄÛxÄÛ€ÄÛˆÄ!Û�Ä+Û˜Ä0Û Ä5Û¨Ä:Û°ÄDÛ¸ÄTÛÀÄ]ÛÈÄoÛÐÄtÛØÄ‡ÛàÄ™ÛèĪÛðÄ¾ÛøÄµ°ÅÃÛÅÈÛÅÓÛÅÝÛ ÅäÛ(ÅíÛ0ÅøÛ8ÅüÛ@Å܈Å|©�Å8‚ Åˆ©ÈŶÓÐÅ„©àÅ˱Æ·æÆ” Æ•©HÆæ§PÆ ©`ƾ©�Æ0” ÆÁ©àÆÄ©ÇX” Ç&+HÇ�³PÇÛ©`Ç ª�Çí© ÇªÐÇ€”àǪȪ ÈšÕPÈ5ª`ÈPªˆÈíÑ�Ȩ” ÈZªÈÈíÑÐÈØ”Éaª ÉiªHÉÝåPÉ•`ÉpªˆÉwª�É0• É‹ªÈÉ€ªÐÉX•àɈªÊˆ• ÊS²HÊ­ªPÊšª`ʵªˆÊª�ÊÈ• Ê̪ÐÊð•ËgßËઠËîªPË–`Ëøª�Ëÿª Ë«ÐË@–àË«Ìx– Ìö«HÌæ§PÌ «�Ì5« ÌJ«ÈÌæ§ÐÌU«àÌ«Ím«Ít« ͆«HÍ‘«PÍ –`Í•«�ÍÀ– Íš«ÐÍÀ–àͪ«Îð– ζ«PÎ —`γ«�Î — ÎÆ«ÐÎH—àÎÉ«Ïh— ÏÕ«PÏá« Ïý«ÈÏæ§ÐÏ�—àÏ ¬Ð¬ Ð&¬PÐ2¬`ÐM¬�ÐÈ— ÐJ¬ÐÐð—àÐ]¬Ñc¬ ÑÑHÑæ§PÑt¬`ч¬ˆÑæ§�Ñ–¬ Ñ±¬àÑÒÒT­Ò ˜ Ò´¬HÒT­PÒP˜`ÒĬˆÒˬ�Ò€˜ ÒÖ¬ÐÒ°˜àÒµ°ÓÙ¬PÓà˜`Óó¬�Óÿ¬ Ó­ÐÓ™àÓ(­Ô8™ Ô5­HÔT­PÔB­ˆÔYø �ÔX™ Ô[­ÐÔg­àÔu­Õ­ ÕŽ­PÕˆ™`Õ‹­�ÕÈ™ Õ«­àÕ¨­ Ö¹­PÖš`Ö¶­�Ö8š ÖíÈÖ|©ÐÖ¨šàÖÊ­×Ó­ ×`×`×ñ­ ×ý­Ð×Èšà×® Ø®`Øþ­ Ø®ÐØðšàخٛ Ù4®PÙ8›`Ù1®�Ùh› ÙF®ÐÙ˜›àÙC®ÚЛ Ú]®PÚb®`Ú–§ˆÚ®�Ú‘® Úý¯ÈÚ¡®ÐÚœàÚª®Û8œ ÛÄ®PÛÔ®`Û ¯�Ûí® Û¯ÐÛ¨œàÛ?¿ÜT­Ü¯ Ü3¯PÜØœ`ÜG¯�Ü� ÜD¯ÐÜ8�àÜV¯Ý`� ÝS¯P݈�`Ýh¯�ݰ� Ýy¯ÐÝè�àÝ™¯ÞŒ¯ Þ9¿HÞT­PÞž¯`Þ·¯ˆÞæ§�Þ»¯ Þ̯ÐÞݯàÞú¯ß° ß#°Pßž`ß2°�ß@ž ßB°Ðßxžàß?°à¨ž àX°Pàr°`à�°�ࢰ à½°Ðà̰ààê°áàž á±PáŸ`á±�á@Ÿ á+±Ðá<±àáU±âpŸ âd±`âs±�â Ÿ â|±Èâ·æÐℱà⢱㶱 ãÒ±Pãà±`ãö±�ã  ãý±Ðã  àã²äX  ä²Pä� `ä²ˆäæ§�äÈ  ä2²ÈäYø Ðäð àä8²åYø å¡ å;§PåC²`å[² å2§ÐåH¡àåf² æu²Hæ�²Pæx¡`晲 æ¥²Èæ²²Ðæ°¡àæÁ²çÔ²çà¡ çÚ²Hçè²Pç¢`çð²ˆçÿ²�ç8¢ ç³Ðç³àç,³èh¢ è8³HèT­PèB³`èX³�舢 èk³Èèy³Ð艳à観é�³é«³ édzHé�³Péͳ`é곈é�³�éð³ é ´Èé�³Ðé´àé7´ê�³êG´ êe´Hê�³Pêt´`ê‘´�ê°¢ ê»´Èê­´Ðêh£àê·´ ëôHëæ§Pë�£`ëÒ´ˆëT­�ë°£ ëê´Ðë¤àëü´ì@¤ ìµPì+µ`ìIµˆìæ§�ìVµ ìhµÐìp¤àìtµí˜¤ 통PíФ`í—µ�íø¤ í¡µÐí ¥àí´µîX¥ îȵP`îÚµ� îòµÐîà¥àîG±ï¦ ï ¶HïT­Pï8¦`ﶈïT­�ï`¦ ï)¶Ðàï4¶ðЦ ð>¶PðQ¶`ðl¶ˆð|¶�ð§¨ðeÚ¸ð°ªÈð&æØð)æèð,æøð/æñ2æñ6æ(ñ:æ8ñ=æHñ@æXñCæhñFæxñIæˆñ3æ˜ñ7æ¨ñLæ¸ñOæÈñqÕØñÕèñ¸ÒøñÄÒòÃÒòÉÒ(òÎÒ8òÔÒHòÙÒXòzÓhòÔxò@Ôˆò·æ˜òQÔ¨ò\Ô¸ò`ÔÈòfÔØòrÔèòkÔøò~ÔózÔóÚò(ó@Õ8óRæHóVæXóZæhóÕ«xóøÒˆó Ó˜ó"Ó¨óÅÔ¸óÑÔÈóìÓàóåö ôüù ôfù @ôú `ôú €ô$ú  ô6ú ÀôJú àôGú õWú õdú @õrú `õoú  õåö Àõüù àõfù öú öú @ö$ú `ö6ú €öJú  öGú ÀöWú àödú ÷rú ÷oú `÷åö €÷üù  ÷fù À÷ú à÷ú ø$ú ø6ú @øJú `øGú €øWú  ødú Àørú àøoú ùåö @ùüù `ùfù €ùú  ùú Àù$ú àù6ú úJú úGú @úWú `údú €úrú  úoú àúåö ûüù ûfù @ûú `ûú €û$ú  û6ú ÀûJú àûGú üWú üdú @ürú `üoú  üåö Àüüù àüfù ýú ýú @ý$ú `ý6ú €ýJú  ýGú ÀýWú àýdú þrú þoú hþ.SxþSˆþmT˜þ|T¨þS¸þmTàþ]Tðþ`Tÿ’Tÿ�T ÿšT0ÿ¤T@ÿ­TPÿ°T€ÿ¾T ÿ³TÀÿÈTàÿ ègV ×T@ëT`üT€U (UÀ9UàQUyù cU@mU`@)€~U �UÀ”Uà”UŸU ²U@ÂU`Wú €ÖU ñUÀùUà V V 6V@MV`MV€[V rVÀŠVàœV°V ÃV@×V`îV€ W `)À'WàAW\W lW@xW`ƒW€ŒW ™WÀ Wà¨W²W ½W@ºW`fù  RS°ÎWÀÖWÐÞWàäWðêW(.S8SHmTX|ThSxmT ]T°`TÀ’TÐ�TàšTð¤T­T°T@¾T`³T€ÈT  èÀgVà×T ëT üT@ U` (U€ 9U  QUÀ yù à cU mU  +@ @)` ~U€ �U  ½WÀ ºWà ”U ”U ŸU@ ²U` ÂU€ Wú   ÖUÀ ñUà ùU  V  V@ 6V` MV€ MV  [VÀ rVà ŠV œV °V@ ÃV` ,+€ îV   WÀ ¸åà `)J+ B+@'W`AW€lW xWÀƒWàŒW™W  W@¨W`²W€fù ÀRSÐÎWàÖWðÞWäWêW@‹ÕPŽç`Úòp“ç€ìò�« œç°¨çÀ²òвçàºçðÃç`ç°ª äò0Ëç@ÑòPÒç`¥òpÙÒ€è�»ò Úç°äçÀ«òà¨ñðô  ñ0ô@íñPèR`*ôp÷ø  Sô°[ôÀcôÐ>ôàHôðRôZôbô jô0uô`—ñp~ô€ˆô��ô ˜ô°¢ôÀ­ôиôà¿ôðÉôÑôØô âô0ïô`rõpŠõ€–õ�žõ gö°¬õÀ¾õÐÒõàîõðþõöö ó0.ö@?öP>ö`JöpQö€Yö rõ°–õÀgöÐföàóð.ö ¨ñ0ô` ñpô€íñ�èR *ô°÷ø àSôð[ôcô>ô Hô0Rô@ZôPbô`jôpuô —ñ°~ôÀˆôÐ�ôà˜ôð¢ô­ô¸ô ¿ô0Éô@ÑôPØô`âôpïô rõ°ŠõÀaýÐlýà +ð|ý‘ýÀý §ý0îõ@þõPö`öpó€.ö�?ö >ö°JöÀQöÐYörõ–õ gö0fö@óP.öè&è&ø&@J'øL'Íø '�M'@M 's³@' 5H'03P'@X'p?`'�=h'°:p'°Cx'ð8€'2ˆ'°1�'P2˜'€“ 'à’¨'€”°'pɸ'´àÀ'*È' ,Ð'@/Ø'à1à'€4è' 7ð' <ø'€@(xO(@b(›ò (èP@(Íø p(¿ø  (Ýù Ð(¨ø )´ø `)äù �)ìù À)óù *�ô*€€*°€*ðó *0(*À0*ðü8*0€@*À~H*àåP*ðÑX* ß`*‹ú h*€x*`ä€*àô˜*Àã *ðÖ°*ðÔ¸*PÔà*Íø +¿ø @+Ýù p+¨ø  +´ø ,äù 0,ìù `,óù  ,Ð2¨,€€°,°€¸,02À,pDÈ,ÀÐ,0;Ø,0€à,À~è, $ð,pø,Äþ -Ñþ -€- " - 38-"@-PP-pX-Ѐ-Íø °-¿ø à-Ýù .¨ø @.´ø  .äù Ð.ìù /óù @/ÐpH/€€P/°€X/0p`/p‚h/Àp/0yx/0€€/À~ˆ/ b�/°N˜/ÁÍ /Êͨ/€¸/ `À/ qØ/`à/pSð/°Qø/Q 0Íø P0¿ø €0Ýù °0¨ø à0´ø @1äù p1ìù  1óù à1®è1€€ð1°€ø1`­2 ¿2À2`¶20€ 2À~(2PŸ02°Œ82‡@2‡H2€X2Ð�`2P®x20�€2‘�2°�˜2�À2Íø ð2¿ø 3Ýù P3¨ø €3´ø à3äù 4ìù @4óù €40ëˆ4€€�4°€˜4�ê 4Ðü¨4À°4�ó¸40€À4À~È4€ÜÐ4àÉØ4slà4|lè4€ø4Û5€ë5`Ú 5@Î05àÌ85@Ì`5Íø �5¿ø À5Ýù ð5¨ø 6´ø €6äù °6ìù à6óù 7`((7€€07°€87À'@7:H7ÀP7À0X70€`7À~h7°p7x7ãQ€7ìQˆ7€˜70 7°(¸7�À7p Ð7 Ø7p  8Íø P8àR€8·T°8¨ø à8´ø 9ØV89žRH9ˆV`9=Tp9ØVˆ9ES˜9àV°9)RÀ9èVØ9*Tè9ðV:ÐS:òV(:åS8:ôVP:úS`:öVx:Tˆ:øV :ŠS°:úVÈ:¦SØ: Wð:ÂS;(W;­R(;0W@;qSP;8Wh;ÇRx;@W�;YS ;HW¸;÷WÈ;"Wà;ET <Ðf(<€€0<°€8<Ðe@<À[H<ÀP<ÐX<0€`<À~h< [p<`Vx<ïW€<tRˆ<ðZ˜<pt <0L¨<Pr¸<ÀKÀ<piÈ< XÐ<`DØ< gà<@D =Íø P=àR€=·T°=¨ø à=´ø >øX0>žR@>¬XP>=T`>øXp>ES€>Y�>)R >Y°>*TÀ>YÐ>ÐSà>Yð>åS?Y?úS ?Y0?T@?YP?ŠS`?Yp?¦S€?@Y�?ÂS ?HY°?­RÀ?PYÐ?qSà?XYð?ÇR@`Y@YS @hY0@÷W@@BYP@ET€@°˜ˆ@€€�@°€˜@°— @ �¨@À°@и@0€À@À~È@à‚Ð@`ˆØ@^+à@ð*è@@‚ø@`¦A`~A ¤Að} A›(APŠ0APv8AЈ@A0v`A èpAxù €Aè�Aè A èàAtRèARB`BtRBûô(B`0B õ8BõPB XBõ`B$õxB €B,õˆB;õ B ¨BIõ°B^õÈB  Cð*(Cù*@C HC õPCõhCpCõxC$õ�C˜C,õ C;õ¸CÀCIõÈC^õàCDÐÉD]¨æ�Þ˜ â°ܸWÀpÈ—ÐÃØïàßèç€æ€á Iç Dñ@DòPDîXDÝ`Dì€DààHéIê  ( 0 8 @ H P X  `  h  p  x  € ˆ � ˜   ¨ ° ¸ À È Ð Ø à è ð ø !! !!!" !#(!$0!%8!&@!'H!(P!)X!*`!+h!,p!-x!.€!/ˆ!0�!1˜!2 !3¨!4°!5¸!6À!7È!8Ð!9Ø!:à!;è!<ð!=ø!>"?"@"A"B "C("D0"E8"F@"GH"HP"IX"J`"Kh"Lp"Mx"N€"Oˆ"P�"Q˜"R "S¨"T°"U¸"VÀ"XÈ"YÐ"ZØ"[à"\è"]ð"^ø"_#`#a#b#c #d(#e0#f8#g@#hH#iP#jX#k`#lh#mp#nx#o€#qˆ#r�#s˜#t #u¨#v°#w¸#xÀ#yÈ#zÐ#{Ø#|à#}è#~ð#ø#€$�$‚$ƒ$„ $…($†0$‡8$ˆ@$‰H$ŠP$‹X$Œ`$�h$Žp$�x$�€$‘ˆ$’�$“˜$” $•¨$–°$˜¸$™À$šÈ$›Ð$œØ$�à$žè$Ÿð$ ø$¡%¢%£%¤%¥ %¦(%§0%¨8%©@%ªH%«P%¬X%­`%®h%¯p%°x%±€%²ˆ%³�%´˜%µ %¶¨%·°%¸¸%¹À%ºÈ%»Ð%¼Ø%½à%¾è%¿ð%Àø%Á&Â&Ä&Å&Æ &Ç(&È0&É8&Ê@&ËH&ÌP&ÍX&Î`&Ïh&Ðp&Ñx&Ò€&Óˆ&Ô�&Õ˜&Ö &ר&ذ&Ù¸&ÚÀ&ÛHƒìH‹µOH…ÀtÿÐHƒÄÃÿ5âOÿ%äO@ÿ%âOhéàÿÿÿÿ%ÚOhéÐÿÿÿÿ%ÒOhéÀÿÿÿÿ%ÊOhé°ÿÿÿÿ%ÂOhé ÿÿÿÿ%ºOhé�ÿÿÿÿ%²Ohé€ÿÿÿÿ%ªOhépÿÿÿÿ%¢Ohé`ÿÿÿÿ%šOh éPÿÿÿÿ%’Oh é@ÿÿÿÿ%ŠOh é0ÿÿÿÿ%‚Oh é ÿÿÿÿ%zOh éÿÿÿÿ%rOhéÿÿÿÿ%jOhéðþÿÿÿ%bOhéàþÿÿÿ%ZOhéÐþÿÿÿ%ROhéÀþÿÿÿ%JOhé°þÿÿÿ%BOhé þÿÿÿ%:Ohé�þÿÿÿ%2Ohé€þÿÿÿ%*Ohépþÿÿÿ%"Ohé`þÿÿÿ%OhéPþÿÿÿ%Ohé@þÿÿÿ% Ohé0þÿÿÿ%Ohé þÿÿÿ%úNhéþÿÿÿ%òNhéþÿÿÿ%êNhéðýÿÿÿ%âNh éàýÿÿÿ%ÚNh!éÐýÿÿÿ%ÒNh"éÀýÿÿÿ%ÊNh#é°ýÿÿÿ%ÂNh$é ýÿÿÿ%ºNh%é�ýÿÿÿ%²Nh&é€ýÿÿÿ%ªNh'épýÿÿÿ%¢Nh(é`ýÿÿÿ%šNh)éPýÿÿÿ%’Nh*é@ýÿÿÿ%ŠNh+é0ýÿÿÿ%‚Nh,é ýÿÿÿ%zNh-éýÿÿÿ%rNh.éýÿÿÿ%jNh/éðüÿÿÿ%bNh0éàüÿÿÿ%ZNh1éÐüÿÿÿ%RNh2éÀüÿÿÿ%JNh3é°üÿÿÿ%BNh4é üÿÿÿ%:Nh5é�üÿÿÿ%2Nh6é€üÿÿÿ%*Nh7épüÿÿÿ%"Nh8é`üÿÿÿ%Nh9éPüÿÿÿ%Nh:é@üÿÿÿ% Nh;é0üÿÿÿ%Nh<é üÿÿÿ%úMh=éüÿÿÿ%òMh>éüÿÿÿ%êMh?éðûÿÿÿ%âMh@éàûÿÿÿ%ÚMhAéÐûÿÿÿ%ÒMhBéÀûÿÿÿ%ÊMhCé°ûÿÿÿ%ÂMhDé ûÿÿÿ%ºMhEé�ûÿÿÿ%²MhFé€ûÿÿÿ%ªMhGépûÿÿÿ%¢MhHé`ûÿÿÿ%šMhIéPûÿÿÿ%’MhJé@ûÿÿÿ%ŠMhKé0ûÿÿÿ%‚MhLé ûÿÿÿ%zMhMéûÿÿÿ%rMhNéûÿÿÿ%jMhOéðúÿÿÿ%bMhPéàúÿÿÿ%ZMhQéÐúÿÿÿ%RMhRéÀúÿÿÿ%JMhSé°úÿÿÿ%BMhTé úÿÿÿ%:MhUé�úÿÿÿ%2MhVé€úÿÿÿ%*MhWépúÿÿÿ%"MhXé`úÿÿÿ%MhYéPúÿÿÿ%MhZé@úÿÿÿ% Mh[é0úÿÿÿ%Mh\é úÿÿÿ%úLh]éúÿÿÿ%òLh^éúÿÿÿ%êLh_éðùÿÿÿ%âLh`éàùÿÿÿ%ÚLhaéÐùÿÿÿ%ÒLhbéÀùÿÿÿ%ÊLhcé°ùÿÿÿ%ÂLhdé ùÿÿÿ%ºLheé�ùÿÿÿ%²Lhfé€ùÿÿÿ%ªLhgépùÿÿÿ%¢Lhhé`ùÿÿÿ%šLhiéPùÿÿÿ%’Lhjé@ùÿÿÿ%ŠLhké0ùÿÿÿ%‚Lhlé ùÿÿÿ%zLhméùÿÿÿ%rLhnéùÿÿÿ%jLhoéðøÿÿÿ%bLhpéàøÿÿÿ%ZLhqéÐøÿÿÿ%RLhréÀøÿÿÿ%JLhsé°øÿÿÿ%BLhté øÿÿÿ%:Lhué�øÿÿÿ%2Lhv逸ÿÿÿ%*Lhwépøÿÿÿ%"Lhxé`øÿÿÿ%LhyéPøÿÿÿ%Lhzé@øÿÿÿ% Lh{é0øÿÿÿ%Lh|é øÿÿÿ%úKh}éøÿÿÿ%òKh~éøÿÿÿ%êKhéð÷ÿÿÿ%âKh€éà÷ÿÿÿ%ÚKh�éÐ÷ÿÿÿ%ÒKh‚éÀ÷ÿÿÿ%ÊKhƒé°÷ÿÿÿ%ÂKh„é ÷ÿÿÿ%ºKh…é�÷ÿÿÿ%²Kh†é€÷ÿÿÿ%ªKh‡ép÷ÿÿÿ%¢Khˆé`÷ÿÿÿ%šKh‰éP÷ÿÿÿ%’KhŠé@÷ÿÿÿ%ŠKh‹é0÷ÿÿÿ%‚KhŒé ÷ÿÿÿ%zKh�é÷ÿÿÿ%rKhŽé÷ÿÿÿ%jKh�éðöÿÿÿ%bKh�éàöÿÿÿ%ZKh‘éÐöÿÿÿ%RKh’éÀöÿÿÿ%JKh“é°öÿÿÿ%BKh”é öÿÿÿ%:Kh•é�öÿÿÿ%2Kh–é€öÿÿÿ%*Kh—épöÿÿÿ%"Kh˜é`öÿÿÿ%Kh™éPöÿÿÿ%Khšé@öÿÿÿ% Kh›é0öÿÿÿ%Khœé öÿÿÿ%úJh�éöÿÿÿ%òJhžéöÿÿÿ%êJhŸéðõÿÿÿ%âJh éàõÿÿÿ%ÚJh¡éÐõÿÿÿ%ÒJh¢éÀõÿÿÿ%ÊJh£é°õÿÿÿ%ÂJh¤é õÿÿÿ%ºJh¥é�õÿÿÿ%²Jh¦é€õÿÿÿ%ªJh§épõÿÿÿ%¢Jh¨é`õÿÿÿ%šJh©éPõÿÿÿ%’Jhªé@õÿÿÿ%ŠJh«é0õÿÿÿ%‚Jh¬é õÿÿÿ%zJh­éõÿÿÿ%rJh®éõÿÿÿ%jJh¯éðôÿÿÿ%bJh°éàôÿÿÿ%ZJh±éÐôÿÿÿ%RJh²éÀôÿÿÿ%JJh³é°ôÿÿÿ%BJh´é ôÿÿÿ%:Jhµé�ôÿÿÿ%2Jh¶é€ôÿÿÿ%*Jh·épôÿÿÿ%"Jh¸é`ôÿÿÿ%Jh¹éPôÿÿÿ%Jhºé@ôÿÿÿ% Jh»é0ôÿÿÿ%Jh¼é ôÿÿÿ%úIh½éôÿÿÿ%òIh¾éôÿÿÿ%êIh¿éðóÿÿÿ%âIhÀéàóÿÿÿ%ÚIhÁéÐóÿÿÿ%ÒIhÂéÀóÿÿÿ%ÊIhÃé°óÿÿÿ%ÂIhÄé óÿÿÿ%ºIhÅé�óÿÿÿ%²IhÆé€óÿÿÿ%ªIhÇépóÿÿÿ%¢IhÈé`óÿÿÿ%šIhÉéPóÿÿÿ%’IhÊé@óÿÿÿ%ŠIhËé0óÿÿÿ%‚IhÌé óÿÿÿ%zIhÍéóÿÿÿ%rIhÎéóÿÿÿ%jIhÏéðòÿÿÿ%bIhÐéàòÿÿÿ%ZIhÑéÐòÿÿÿ%RIhÒéÀòÿÿÿ%JIhÓé°òÿÿÿ%BIhÔé òÿÿÿ%:IhÕé�òÿÿÿ%úAf�ÿ%Bf�ÿ% Bf�ÿ%*Bf�ÿ%*Bf�H‹% º1ÿH�5Pè#õÿÿH‰ÞH‰Ç1Àè–µ·% €äþf‰%  èÜòÿÿè×òÿÿ€AWAVAUATUSHƒì8‰|$H‰t$èdëH�5h¿H‰D$è>ûÿÿH�5R1ÿè0ûÿÿH�5½H�=2 è}ôÿÿH�=& è!ôÿÿH‹D$H‹8H‰=Ò‚èmöÿÿH�t$H�|$èNçèY÷ÿÿH‹=²‚èûÿÿH�=ÖRèÁüÿÿH�=ÚRH‰Spè~÷ÿÿH�=çYH‰8pè{î‹T$H‹L$ƒúŽ ƒêH�AL� 1L�TÑë@HƒÀI9„zL‹¹ L‰ÏL‰Æó¦—€ڄÒuÙI�x A€x H‰=ñ€…XH‹‚H…Û„YH‰ßèÛóÿÿ‰Í…À~HcЀ|ÿ/„·H�=½ÿè—òÿÿ…Àu.H�5„úº1ÿèpóÿÿH�5šÿH‰Ç1Àèß³¿è¥úÿÿHƒËÿH¸H�=…ÿÇ�H‰W�‰�ˆ{€Æ$�:Ç2�ÿÿÿÿH‰Ë€Çñ€H‰J€è%ðÿÿH�=‰HºL!H‰½H…À‰¼”ÀÆ:ǘ¶À‰Û~H�ðFH‰ H�BH‰CH�íþH‰UH�åþH‰OH¸ÿûÿû³ÎÿÿH#®~ÇTH ÐH‰š~èõÂH�=³þH‹l$‹\$èpïÿÿI‰ÄH…À„L¸L�-™þƒûŽ}�Kÿ‰L$ë*fD9D$ŽkN‹d D�xDD‰øD9ûŽJHcйD�xL‰ïL‹tÕL� ÕL‰öó¦—Á€Ù„ÉuÉA€~tª¹L‰öH�==þó¦—À„Àt¨H�52þL‰÷è1õÿÿ…Àt•H�5&þL‰÷èõÿÿ…Àt‚H�5þL‰÷è õÿÿ…À„kÿÿÿH�5 þL‰÷èôôÿÿ…À„TÿÿÿH�5úýL‰÷èÝôÿÿ…À„=ÿÿÿH�5ëýL‰÷èÆôÿÿ…À„&ÿÿÿH�5ÞýL‰÷è¯ôÿÿ…À„ÿÿÿH�5ÑýL‰÷è˜ôÿÿ…À„øþÿÿH�5ÂýL‰÷è�ôÿÿ…À„áþÿÿH�5µýL‰÷èjôÿÿ…À„ÊþÿÿH�5¨ýL‰÷èSôÿÿ…À„³þÿÿM�féªþÿÿL‰çèÚžH‹t$‹|$è<œH‰Í~èPÎèË™膚‹|$H‹t$Ç“ièŽWH‹=‡~H…ÿ…áèæèÄšHƒ=,l„<ƒ=‡~…܃=’}¸u¶T|ƒà<•ÀÁà‰Â¶A|ƒàï Ѓ=\}ˆ/|…`è³üƒ|$„>ö| t¶|ƒà<…õƒ=æh…‚‹Ê{  }tW1ÿèëöÿÿ1ÿºH�5üèˆïÿÿH‰Ç1Àèþ¯é�ýÿÿH�=ÞH‰=“|è&ïÿÿH‰¿}é—ûÿÿÇx{ÿÿÿÿé¸ûÿÿ1ÿºH�5ƒüè8ïÿÿH‰Ç1À讯ƒ=�}…„è™H‹%}H…Ût%H�5ô H‰ßè¡òÿÿ…À…ÒH‹`H‰}è¶{ƒà<H‹c{„'ƒHD@‹5{@öÆt8H‹=F{‹GD‰Â%þÁê�âÿÿ‰Ñ€Î@�É@ÁâÁá Á ЃþDÁ‰GDè@jHƒ=�|„è=Õƒ=²{tH‹=u|H…ÿ„þèËHƒ=ÇytèPσ=¥{…éèþ—è)¹‹ç{ ýi…Ÿƒ=x|„«úÿÿH‹»BH�5Ôõº1ÿèðíÿÿH‰ÞéúÿÿL�%êùé¨ûÿÿƒè‰ûyH˜Æé5úÿÿ1ÿºH�5*õèµíÿÿH‰Ç1Àè+®ééýÿÿƒ`D¿éÔþÿÿ1ÿºH�5ëúèŠíÿÿL‰æH‰Ç1Àè]­éWþÿÿH‹=zèìôÿÿ…À„’¶�yƒà<„;ƒ=“z„.H‹öAHƒÉÿ1ÀH‰×ò®H‰ËH÷ÓH�kÿƒý~6HcÅH�5ZmH�\üH‰ßèÝêÿÿ…À„îH�5°nH‰ßèÆêÿÿ…À„׿è„÷ÿÿ�}HcÿH‰Ãèv÷ÿÿH‹-‡AH‰ÇI‰ÅH‰îè±ìÿÿH‰ïH�5ŽÆÇ.exeÆ@èèóÿÿH�5°ÎL‰ïH‰ÅèÖóÿÿI‰ÄH…í„ÇM…ä„™L�5ãùëIc×L‰á¾H‰ßèEõÿÿA9Ç….H‰éº¾H‰ßèwëÿÿI‰Ç…ÀÈH‰ïèìÿÿL‰çèìÿÿƒÀ„L‰ïè¯öÿÿH‰ßè§öÿÿƒ=z…dHÇ·@éXüÿÿH‹=«yH…ÿt"èi¼ÇGwèúHƒ=Âg…–ûÿÿH�|$,è‚–ƒ|$,H‰Ã…yºH�5›ø1ÿH‰¿bèšëÿÿºH‰ßH‰ÆèÚNÇèv蛃=ÌyHljb„:ûÿÿHƒ=KgºH�5wøt ºH�5Kø1ÿè:ëÿÿH‰Ç1Àè«1ÀH�=_òè«Hƒ= g„Ô¿ H�-¶Øè£õÿÿH‹=ìfH‰ÃèÔëÿÿëf�ÆH‰ÞH‰ï1À迪H‹ Èfº ¾H‰ßèöéÿÿH…ÀuÑH‹=ªfè•ëÿÿH‰ßè=õÿÿH�=Þñ1Àèªéqúÿÿƒ=³v„µúÿÿéæúÿÿèÛH�=íþH‰Æ1ÀèRªé…úÿÿèØôÿÿéúÿÿƒ=¨w„üÿÿH‹=o[éöûÿÿè59é üÿÿH�|$,èö”H‰Ç1Àè ªézÿÿÿH�5/ÌH‰ßèXñÿÿH‰)xH…À…ûÿÿ¿èÎëÿÿH‹x1ÿºH�5™ñèäéÿÿH‰ÞH‰Ç1ÀèWªéçúÿÿH‹[v1ÿºH�5Íñè¸éÿÿH‰ÇH‰Þ1Àè+ªéBüÿÿè1àH‹=ºZH+D$H‰ÃèÍîÿÿ1ÿºH�5òH‹-Èwèséÿÿ¹@BH‹=‡_H‰ÆH‰ØH™H÷ùI‰ÐH‰ÁH‰ê1ÀèíÿÿH‹=e_è€îÿÿé1ýÿÿH‰Çèùé¤ýÿÿL‰ö1ÿºèéÿÿL‰îH‰Ç1Àè’©é±üÿÿ1ÿºH�5…öèúèÿÿL‰îH‰Ç1Àèm©éÁüÿÿ1ÿºH�5BñèÕèÿÿL‰îH‰Ç1ÀèH©éBüÿÿL‹5t=1ÿºH�5æðè©èÿÿH‰ÇL‰ö1Àè©é üÿÿ€1íI‰Ñ^H‰âHƒäðPTL�ºãH� SãH�=|óÿÿÿ5ôDH�=yYH�rYH9øtH‹Þ4H…Àt ÿà€Ã€H�=IYH�5BYH)þHÁþH‰ðHÁè?HÆHÑþtH‹Õ4H…ÀtÿàfDÀ€=^u/UHƒ=¶4H‰åt H‹=º;èuòÿÿèhÿÿÿÆé]]ÀÀé{ÿÿÿf.„�ATH‹ ·]º UH‰õ¾SH‰ûH�=‚äèYðÿÿH9ëw1H)ÝHÑíL�dkH�-päf�¿H‹=v]H‰î1ÀHƒÃèëÿÿL9ãuãH‹5\][¿ ]A\é^éÿÿff.„HcÖH�VÐ�þœSH‹ ÐH�äH‰ûH� äHMÐH�5 ä1Àè¸êÿÿH‰Þ¿)[é éÿÿf.„‹îq…ÀuÃDSH‰úH‹=Õ\‰ó1ÀH�5>ÔèuêÿÿH‹=¾\‰ÞèwÿÿÿH‹5°\¿ [éµèÿÿDUSH‰ûHƒì‹Ùb…Àu]‹§\ƒèƒøw/H˜H�¶\1öH‹ ÂHƒÄH‰Ú1À[H�=eã]鹦f„HƒÄH‰Ú1ö1À[H�=Wã]é—¦€è+L1ÿºH�5 ïH‰ÅèõåÿÿH‰îH‰Ç1Àèh¦évÿÿÿAWAVAUATUSH�ì‹íp…À…™H�l$p1ÛL�¬$ÇÈpÇÆpþÿÿÿI‰ïHÇD$ÈL‰l$H‰l$ÇD$(‰$·$H‹L$fA‰H� H�TþI9ׂiM‰ýI)íIÑýIƒÅH�ù'‡¨H='º'HFÐH‰ÐH‰ÓH‰T$HÁàHÐH�|èIêÿÿI‰ÄH…À„qO�|-H‰îH‰ÇIÁåL‰úè6éÿÿH�H‹t$L‰êL�pH‰ÃIƒæàMæL‰÷èéÿÿH;l$tH‰ïèUïÿÿ‹ãoO�|<þO�l.àI�lþ…À…ˆI9 L‰t$L‰å‹$ƒø„ LcàH�¡&F¿`D‰ÃA�øqýÿÿ„l‹Žo‹„oƒøþ„×…ÀŽ�A¾=ƒH˜H� ¹/D¶4C�0…Ò…˜�û¨‡HcÛH�Òþ¿XD9ð…H�¿X‰Ã‰$÷Û…À~O‹D$(ƒøƒÐÿ‰D$(‹ÿn…À…öóo- oóo5oIƒÅ ÇÝnþÿÿÿAmAué“fDHcÃH� vóD¶4H‰$¸D)ðE‰ôH˜HÁàLèóoóoP‹Žn)L$0)T$@…À…E¶ôƒë�ûn‡�H�^íHcšHÐÿàI‹]À¹I‹EH�='áóAo}H‰ÞH‰D$@ó¦)|$0—À„À…ìIƒ}à„a ¹H�=öàH‰Þó¦—À„À…uI‹Eà¹H�=æH‰Þó¦—€ڄÒ…yH‰D$@fDH‹ $H�ýóD‹ ºm·HK�6I)ÇL‰ðHÁàI)ÅM‰ìE…É…½�ƒdÿÿÿA¿7H�fo\$0H˜fod$@M�l$ ¿BA\$ ‰ñAd$0ò�ú¨wHcÒH�5ëüf; V„QH�š¿B‰$IƒÇé�üÿÿf.„H�¹B·`…Û…LþÿÿHc m‰Æƒøþt¾=ƒ†Ž‹|$(…ÿ„œƒ|$(u…À�³„OH�füL�5ýßëDH�±#F¿`A�øqýÿÿtAƒÀA�ø¨wMcÀfBƒI‹}èÚúé=÷ÿÿ¿è{äÿÿI‹UH‰D$0H‰PI‹UÀÇ@H‰é÷ÿÿHÇD$0é÷ÿÿH�•×H‰D$0éôöÿÿI‹EH‰D$0éæöÿÿI‹]1ÿºH�5ôâèwÙÿÿH‰ÇH‰Þ1Àèê™é½öÿÿè`?èK*ƒ-”Oé§öÿÿè*>‹„OƒûŽ\ƒÃ‰rOé…öÿÿè(?I‹}ÀI‹uèK{H‰ÇèÓðéföÿÿèy>é\öÿÿA‹MÄA‹UÀI‹u I‹½`ÿÿÿM‹MÐM‹EÈèÄ÷é7öÿÿI‹EóAoEH‰D$@I‹EÀ)D$0H‰D$8éöÿÿH‹¶OI‹u1É1ÿèyýH‰D$0é÷õÿÿèš>I‹uàI‹}è-úéàõÿÿÇD$0€éÓõÿÿI‹}ÀI‹u¹H‹gOè2ýH‰D$0é°õÿÿI‹UàI‹u I‹½`ÿÿÿè4ÿé—õÿÿI‹u1ÿèT$H‰D$0é‚õÿÿ1ö1ÿèÑþH‰D$0éoõÿÿÇD$0~ébõÿÿÇD$0}éUõÿÿÇD$0|éHõÿÿI‹uàI‹½`ÿÿÿè�þH‰D$0é.õÿÿ¶�cA¶UÀƒàÁâ Ј|céõÿÿI‹}à1öè\þH‰D$0éúôÿÿI‹EàH‰D$0éìôÿÿA‹E€M‹�@ÿÿÿM‹E I‹�`ÿÿÿI‹µ ÿÿÿI‹½àþÿÿPA‹Eà‹}NPèoâAZA[é®ôÿÿI‹EàH‰D$0é ôÿÿI‹}à1öèíýH‰D$0é‹ôÿÿI‹EàH‰D$0é}ôÿÿHÇD$0éoôÿÿI‹EH‰D$0éaôÿÿI‹uà¿gèxH‰D$0éIôÿÿI‹uà¿PèƒxH‰D$0é1ôÿÿI‹uà¿NèkxH‰D$0éôÿÿI‹uàI‹} è„yH‰D$0éôÿÿI‹UàI‹u ¿Fè¸vH‰D$0éæóÿÿI‹… ÿÿÿH‰D$0éÕóÿÿI‹E H‰D$0éÇóÿÿH‹hMI‹u¹1ÿè(ûH‰D$0é¦óÿÿèI<I‹M I‹½ þÿÿM‹MÀM‹EàI‹UA‹µ€þÿÿèùéyóÿÿI‹}ÀH‹M1ÉH�50ÔèØúH‰D$0éVóÿÿI‹U I‹uà¿%è vH‰D$0é:óÿÿI‹UàI‹u ¿$èðuH‰D$0éóÿÿI‹UàI‹u ¿èÔuH‰D$0éóÿÿI‹uà¿è¼vH‰D$0éêòÿÿI‹uà¿`è¤vH‰D$0éÒòÿÿI‹uà¿‚è wH‰D$0éºòÿÿI‹uà¿DèôvH‰D$0é¢òÿÿI‹uà¿CèÜvH‰D$0éŠòÿÿI‹uà¿AèÄvH‰D$0éròÿÿI‹uà¿Bè¬vH‰D$0éZòÿÿ1ö¿+è–vH‰D$0éDòÿÿI‹uI‹}èïsH‰D$0é-òÿÿI‹uà¿;ègvH‰D$0éòÿÿI‹uÀI‹U¿ èËtH‰D$0éùñÿÿI‹uÀI‹U¿è¯tH‰D$0éÝñÿÿI‹UÀI‹u€¿?I‹MèuH‰D$0é½ñÿÿI‹uÀI‹U¿|èstH‰D$0é¡ñÿÿI‹uÀI‹U¿^èWtH‰D$0é…ñÿÿI‹uÀI‹U¿&è;tH‰D$0éiñÿÿI‹uÀI‹U¿>ètH‰D$0éMñÿÿI‹uÀI‹U¿<ètH‰D$0é1ñÿÿI‹uÀI‹U¿èçsH‰D$0éñÿÿI‹uÀI‹U¿èËsH‰D$0éùðÿÿI‹uÀI‹U¿è¯sH‰D$0éÝðÿÿI‹uÀI‹U¿è“sH‰D$0éÁðÿÿI‹uÀI‹U¿èwsH‰D$0é¥ðÿÿI‹uÀI‹U¿è[sH‰D$0é‰ðÿÿI‹uÀI‹U¿-è?sH‰D$0émðÿÿI‹uÀI‹U¿+è#sH‰D$0éQðÿÿI‹uÀI‹U¿%èsH‰D$0é5ðÿÿI‹uÀI‹U¿/èërH‰D$0éðÿÿI‹uÀI‹U¿*èÏrH‰D$0éýïÿÿI‹u¿~è·sH‰D$0éåïÿÿI‹EH‰D$0é×ïÿÿI‹u¿!è‘sH‰D$0é¿ïÿÿI‹uàA‹} èzsH‰D$0é¨ïÿÿI‹EàH‰D$0éšïÿÿI‹u¿-èTsH‰D$0é‚ïÿÿè%8I‹EH‰D$0éoïÿÿH‹IH‰D$0I‹EàH‰IéSïÿÿ¿è‘ÜÿÿI‹UÀH‰D$0H‰PI‹UH‰é0ïÿÿ¿ènÜÿÿI‹UàH‰D$0H‰PI‹UH‰é ïÿÿHÇD$0éÿîÿÿ1ÿè0êéóîÿÿ¿è!êéäîÿÿI‹}ès{éÖîÿÿI‹}èU{éÈîÿÿI‹}èG{éºîÿÿ1ÿè;{é®îÿÿI‹}àè�éé îÿÿI‹uH‹=MHºè³Êé†îÿÿI‹uH‹=3H1ÒèœÊéoîÿÿI‹}ÀH‹ H1ÉH�53ÏèÎõH‰D$0éLîÿÿI‹UH‹ùGH‰P0é8îÿÿH‹éGI‹UH‰PH‹P H‰P8éîÿÿèÿ5‹ùFƒûŽ÷ ƒÃ‰çFéúíÿÿè5I‹}è¡éçíÿÿHÇD$0éÙíÿÿHÇD$@fïÀ)D$0éÂíÿÿI‹EƒxH‰D$0…¯íÿÿ�8…£íÿÿH‹XE1äH�=¹J‹4âH‰ßèÑÓÿÿH�*¹…À„œ IƒÄIƒüuÛH�5¾ÎH‰ßè©Óÿÿ…À„À H�5óÍH‰ßè’Óÿÿ…À…v ¿Qåtdè nH‰D$0é.íÿÿfDI‹} I‹uàºè>rH‰Çèvçé íÿÿHÇD$0éûìÿÿI‹}¾襚H‰žFéáìÿÿÇD$0&éÔìÿÿÇD$0éÇìÿÿÇD$0éºìÿÿÇD$0/é­ìÿÿI‹}1Ò1ö舙é›ìÿÿIcEH‰D$0é�ìÿÿIcEH‰D$0éìÿÿIcEH‰D$0éqìÿÿè”3I‹}苟é^ìÿÿè5I‹}€I‹uÀèÄqH‰Çè¬æé?ìÿÿI‹MÀH‰ÈëH‰ÐH‹H…ÒuõI‹•ÿÿÿH‰L$0H‰I‹E H‰¹Eé ìÿÿI‹}àè[åéþëÿÿÇD$0*éñëÿÿÇD$0-éäëÿÿÇD$0+é×ëÿÿHÇD$0éÉëÿÿI‹EH‰D$0é»ëÿÿI‹}H�<Ì1öè¡uH‰D$0éŸëÿÿIcEH‰D$0é‘ëÿÿIcEH‰D$0éƒëÿÿI‹uàA‹} èåéqëÿÿÇZ¿èæéXëÿÿ¿èöåéIëÿÿ¿èçåé:ëÿÿÇàDé+ëÿÿÇÑDéëÿÿI‹E€I‹uàI�} ‹ºDI‰E¸èyßéüêÿÿI‹uà‹¢DI�} èaßéäêÿÿI‹E I‹uàH�|$PHÇD$P‹xDÇD$`HÇD$XH‰D$hè%ßé¨êÿÿI‹uà‹ND1ÿèßé’êÿÿI‹E‹8DH�|$P1öHÇD$XH‰D$PI‹EàÇD$`H‰D$hèÕÞéXêÿÿI‹E‹þCH�|$P1öHÇD$XH‰D$PÇD$`HÇD$hè›Þéêÿÿ¿(è\×ÿÿóAo}óAoEHÇx@H‰D$0éïéÿÿ¿(è-×ÿÿI‹UÀóAo}óAoEH‰D$0H‰x@éÀéÿÿ¿èþÖÿÿI‹UH‰D$0H‰HÇ@é�éÿÿ¿èÛÖÿÿI‹UH‰D$0H‰I‹UàH‰PézéÿÿÇ0CékéÿÿI‹EàH‰D$0é]éÿÿè€0I‹}èwœéJéÿÿèí1I‹u1ÒH�=×ñè»mH‰Çè“ãé&éÿÿI‹}1Ò1öè–ééÿÿI‹}1Ò1öèï•ééÿÿI‹}1Ò¾èÚ•éíèÿÿI‹}1Ò¾èÅ•éØèÿÿH��ºH‰D$0éÇèÿÿI‹EH‰D$0é¹èÿÿè\1I‹} I‹uàènH‰ÇèãéšèÿÿH‹;BH‰D$0I‹EàH‰+Bé~èÿÿI‹}à1öè+áénèÿÿ¶ÏVA¶UÀƒàÁâ Ј¼VéOèÿÿI‹uà1ÿèœñH‰D$0é:èÿÿ¶›VA¶UÀƒàÁâ ЈˆVéèÿÿ¿èYÕÿÿI‹UàH‰D$0H‰PÇ@HÇéñçÿÿ¿ è/ÕÿÿI‹U€:!„ûÇH‰PI‹UÀÇ@H‰D$0H‰Pé·çÿÿ¿ èõÔÿÿI‹U€:!„ÔÇH‰PÇ@HÇ@H‰D$0é}çÿÿóAo}àóAoEð)|$0)D$@ÇD$@éZçÿÿóAo}ÀóAoEÐ)|$0)D$@ÇD$@é7çÿÿóAo}ÀóAoEÐ)|$0)D$@ÇD$@éçÿÿóAo}ÀóAoEÐ)|$0)D$@ÇD$@éñæÿÿóAo}ÀóAoEÐ)|$0)D$@ÇD$@éÎæÿÿóAo}àóAoEð)|$0)D$@ÇD$@髿ÿÿóAo}àóAoEð)|$0)D$@ÇD$@éˆæÿÿóAo}àóAoEð)|$0)D$@ÇD$@éeæÿÿóAo}àóAoEð)|$0)D$@ÇD$@éBæÿÿóAo}àóAoEð)|$0)D$@ÇD$@éæÿÿI‹EÇD$@HÇD$HH‰D$0I‹EÀH‰D$8é÷åÿÿI‹EÇD$@HÇD$8H‰D$0HÇD$HéÏåÿÿH�RÆH‰D$0é¾åÿÿèá,I‹}èØ˜é«åÿÿè^-é¡åÿÿHÇD$0é“åÿÿI‹}èÂé…åÿÿèø-é{åÿÿI‹}1öèØ¼ékåÿÿI‹}1öèȼé[åÿÿI‹}1ö踼éKåÿÿÇ)Ué<åÿÿI‹}à1öèé˜é,åÿÿI‹UàI‹u ¹I‹½`ÿÿÿèKåéåÿÿI‹}à¹1Ò1öè4åé÷äÿÿI‹}à¾è�ÒéääÿÿI‹}à1öèaŒéÔäÿÿI‹}àèÃÝéÆäÿÿH‹g>1ÉH�5ˆÅ1ÿè'ìH‰D$0é¥äÿÿI‹}1Ò¾è}‘é�äÿÿI‹}àè_é‚äÿÿèÕ+éxäÿÿI‹}àè'éjäÿÿI‹uàI‹} è%¢éXäÿÿI‹}¾èÒäéEäÿÿI‹}1öèÂäé5äÿÿI‹}àè$çé'äÿÿI‹}àèÖæéäÿÿèü+‹ö<ƒûŽƒÃ‰ä<é÷ãÿÿè+I‹}è—éäãÿÿI‹}àèÝéÖãÿÿè)åéÌãÿÿèŸäéÂãÿÿ€ ªR é¶ãÿÿÇÄSé§ãÿÿI‹}è¶é™ãÿÿI‹}1öèFÜé‰ãÿÿI‹}è¸é{ãÿÿI‹}èjémãÿÿI‹}è\é_ãÿÿI‹}ènéQãÿÿA‹}è�éCãÿÿI‹}èÂé5ãÿÿI‹}ÀA‹U1öèŽé!ãÿÿI‹}ÀI‹u1Òèzé ãÿÿI‹}èüéÿâÿÿI‹}ÀI‹uèÚéíâÿÿI‹}ÀI‹uèÈéÛâÿÿI‹}ÀI‹uèVéÉâÿÿI‹}ÀI‹uèDé·âÿÿI‹}ÀI‹uè‚é¥âÿÿI‹}àI‹uèpé“âÿÿI‹}ÀI‹uè^é�âÿÿI‹}è€ésâÿÿI‹}àI‹uèÎéaâÿÿI‹}ÀI‹uè¼éOâÿÿI‹}ÀI‹uèªé=âÿÿH�ÉéH‰çRé*âÿÿI‹UàI‹u ¿EèàdH‰D$0éâÿÿI‹u¿èHfH‰D$0éöáÿÿI‹uà¿è°eH‰D$0éÞáÿÿI‹u ¿èfI‹uà¿1H‰Âè‡dH‰D$0éµáÿÿI‹uà¿&èoeH‰D$0é�áÿÿH‹=^:1À‰ $I‰ÝH�íÁH�5¼±èóÇÿÿHc$H� xØH‹=1:·4AèèÜÿÿH‹5!:¿ è'ÆÿÿÇD$(é×áÿÿL‰àM‰üA½I‰ÇHcüNL‰<$ƒøþ…xãÿÿé�ãÿÿL‰àA½M‰üH‰$éRãÿÿºH�5µÁ1ÿèšÃÿÿHcÓH� ð9H‰ÑéÚüÿÿHƒÂÇH‰PéüøÿÿHƒÂÇH‰Pé#ùÿÿ¹H�=žÆH‰Þó¦—À„Àu I‹EàH…À…‡àÿÿ1ÿºH�5Íè'ÃÿÿH‰Ú1öH‰Ç1À蘃ékàÿÿ¹H�=ÁH‰Þó¦—À„Àu˜I‹EàH…À…àÿÿÇD$4é7àÿÿºH�5¤À1ÿèÌÂÿÿHcÓH� "9H‰Ñé~éÿÿºH�5¥1ÿè¦ÂÿÿHcÓH� ü8H‰ÑéãñÿÿÇD$0éÞßÿÿL‰çè>aH‰D$0éÌßÿÿºH�5Ì1ÿèaÂÿÿH‰Ú1öH‰Ç1ÀèÒ‚1ÿè aH‰D$0é™ßÿÿ¿Påtdè÷`H‰D$0é…ßÿÿf.„L‹yM‹ï:AWAVAUATUSH‹ê:H‰\$øI9ÛƒÇD‹5Å:L‹-¶:E1äH�-¼bL� ÕRL�L�=§,L�@DH�9af„A¶¾„Òt H�=|a¶4HcÈ¿fƒ|MMEëDEðDEçë@A¿J=~‰ö¶43HcÈA·IòHcÒA¿@»uèä¶ÿÿH‰ @ëœH‹=$@»vèʶÿÿH‰ó?ë‚H‹ @Ç|-Ç&,¾é_ÿÿÿÇÄ?x»xéKÿÿÿǰ?w»wé7ÿÿÿH‹¿?¾é(ÿÿÿ¶D-L‰êH‹ N-H+Ÿ?AˆEH‹,-ƒêH‹ È‹A8…À„"Hc -HAH9ø,†zH‰<$‰T$ è½÷ÿÿH�5¶H‹<$ƒø„0ƒø„èHcT$ …À…ÜüÿÿH,?I‰ÕH‰ª,è�ñÿÿH‹=?H‰<$A¶u‰ÂéËüÿÿH‹ÿ>º1ö»H�xè*±ÿÿHÇÇ>H‰¸>éDþÿÿÇ©>=»=é0þÿÿH‹=¸>»è^µÿÿH‰‡>éþÿÿÇx>+»+éÿýÿÿÇd>-»-éëýÿÿH‰ùH‹=p>€?/…©€*…Ÿ¶ê+AˆEH�AH‰ G>ÇM>H‰¾+¶AÆAˆ¼+èsúÿÿéÇûÿÿ¶«+Hc ˆ+AˆEL‹-u+é~üÿÿH‹ù=Çk+¾éXýÿÿǽ=»éDýÿÿÇ©=»é0ýÿÿÇ•=»éýÿÿÇ�=»éýÿÿÇm=»éôüÿÿÇY=»éàüÿÿÇE=»éÌüÿÿÇ1=»é¸üÿÿÇ=»é¤üÿÿÇ = » é�üÿÿÇõ< » é|üÿÿÇá< » éhüÿÿÇÍ<[»[éTüÿÿǹ<]»]é@üÿÿH‹=È<1Ò€?$u HƒÇº1öèñ®ÿÿH‹ª<Hc ³<HÇ€<H‰q<¶L ÿƒá߀ùM„U€ùK„7€:0»…Úûÿÿ¶Bƒàß»>éõøÿÿÇZ9»éáøÿÿÇF9 » éÍøÿÿÇ29 » é¹øÿÿÇ9»饸ÿÿÇ 9N»N鑸ÿÿH‹59H�= ýè�ìÿÿé±öÿÿH‹9H�x訯ÿÿH‰ÇH‰ÃH‰Ë8è¶­ÿÿ‹=ð8�WþHcÒH9ÂHGÐÆ»é6øÿÿH‹¾8»H�xè`¯ÿÿH‰‰8éøÿÿH‹=�8»èC¯ÿÿH‰l8éø÷ÿÿH‹€8»H�xè"¯ÿÿH‰K8é×÷ÿÿH‹=_8»è¯ÿÿH‰.8éº÷ÿÿH‹=B8»èè®ÿÿH‰8é�÷ÿÿH‹=%8»èË®ÿÿH‰ô7é€÷ÿÿH‹=8»è®®ÿÿH‰×7éc÷ÿÿÇÈ7`»`éO÷ÿÿÇ´7_»_é;÷ÿÿÇ 7^»^é'÷ÿÿÇŒ7t»té÷ÿÿÇx7s»séÿöÿÿÇd7r»réëöÿÿÇP7h»hé×öÿÿÇ<7e»eéÃöÿÿÇ(7d»dé¯öÿÿÇ7i»ié›öÿÿÇ7a»aé‡öÿÿÇì6m»mésöÿÿÇØ6l»lé_öÿÿÇÄ6k»kéKöÿÿǰ6]»]é7öÿÿÇœ6»é#öÿÿLj6V»VéöÿÿÇt6c»céûõÿÿÇ`6`»`éçõÿÿÇL6_»_éÓõÿÿÇ86^»^é¿õÿÿÇ$6l»lé«õÿÿÇ6‚»‚é—õÿÿÇü5�»�éƒõÿÿÇè5{»{éoõÿÿÇÔ5[»[é[õÿÿÇÀ5Z»ZéGõÿÿǬ5Y»Yé3õÿÿǘ5X»XéõÿÿÇ„5€»€é õÿÿÇp5W»Wé÷ôÿÿÇ\5 » éãôÿÿÇH52»2éÏôÿÿÇ45»é»ôÿÿH‹C5¾é¬ôÿÿÇ5P»Pé˜ôÿÿH‹ 5ƒI!¾é‚ôÿÿÇç4V»VénôÿÿÇÓ4r»réZôÿÿÇ¿4h»héFôÿÿÇ«4e»eé2ôÿÿÇ—4d»déôÿÿǃ4i»ié ôÿÿÇo4a»aéöóÿÿÇ[4m»méâóÿÿ‹Ÿ �Xÿ‰– …Û…²Ç\4é¼óÿÿÇ!4k»ké¨óÿÿÇ 4]»]é”óÿÿÇù3»é€óÿÿƒ4»bÇÙ3béeóÿÿÇÊ3c»céQóÿÿǶ3~»~é=óÿÿÇ¢3}»}é)óÿÿÇŽ3|»|éóÿÿH‹5�3H�=œ÷èçÿÿé5ñÿÿÇb39»9ééòÿÿÇN38»8éÕòÿÿÇ:37»7éÁòÿÿÇ&36»6é­òÿÿÇ3)»)é™òÿÿÇþ2*»*é…òÿÿƒ-=y Ç} H‹ú2¾écòÿÿÇÈ2(»(éOòÿÿÇ´2'»'é;òÿÿÇ 2:»:é'òÿÿÇŒ2M»MéòÿÿÇx2L»LéÿñÿÿÇd2K»KéëñÿÿÇP2»é×ñÿÿÇ<2»éÃñÿÿÇ(2»é¯ñÿÿÇ2»é›ñÿÿÇ2»é‡ñÿÿÇì1J»JésñÿÿÇØ1I»Ié_ñÿÿÇÄ1H»HéKñÿÿǰ1.».é7ñÿÿÇœ1,»,é#ñÿÿLj1G»GéñÿÿÇt1O»OéûðÿÿÇ`1#»#éçðÿÿÇL1"»"éÓðÿÿÇ81!»!é¿ðÿÿÇ$1»é«ðÿÿÇ1/»/é—ðÿÿÇü00»0éƒðÿÿÇè0-»-éoðÿÿÇÔ0U»Ué[ðÿÿÇÀ0Q»QéGðÿÿǬ0;»;é3ðÿÿǘ0\»\éðÿÿÇ„0S»Sé ðÿÿÇp0R»Ré÷ïÿÿÇ\0T»TéãïÿÿÇH0=»=éÏïÿÿÇ40<»<é»ïÿÿÇ 0A»Aé§ïÿÿÇ 0>»>é“ïÿÿÇø/1»1éïÿÿHc50H‹ кH‹=ô/èo­ÿÿé“íÿÿÇÀ/+»+éGïÿÿǬ/@»@é3ïÿÿǘ/s»séïÿÿÇ„/?»?é ïÿÿÇp/f»fé÷îÿÿÇ\/g»géãîÿÿÇH/F»FéÏîÿÿÇ4/E»Eé»îÿÿÇ /B»Bé§îÿÿÇ /D»Dé“îÿÿÇø.C»CéîÿÿÇä.&»&ékîÿÿÇÐ.%»%éWîÿÿǼ.$»$éCîÿÿǨ.»é/îÿÿèi¥ÿÿ»H‰�.éîÿÿH�ÁH‹<ØèØãÿÿH�‹˜‰”.H�Á‹˜»ƒà�ŶÈ.ƒà÷ Ј½.éÉíÿÿH‹ùH‹âLc-ÓH‹ÐLhL‰-¼è¯àÿÿH‹=(.H�5�òHcÈé—ìÿÿH‹.¹H‰Ž‹|ƒè™÷ùËé¡ìÿÿHcÒHæ-I‰ÕH‰dèWàÿÿH�50òHcÈfAƒ—ÿÿI‰ÅH‹D$€8…�H‹®(I�l$H…Ûuë*f.„H‹H…ÛtH‹{H‰îèüœÿÿ…ÀuèL‰kë/f�¿ èf]H‰ÃH‰hL‰hÇ@H‹U(H‰H‰K(L‰ïèÛ7H‰ÚL‰çH‰Æè½®HƒÄ[]A\A]Ãf�1ÿºH�5 Hèí˜ÿÿH‰ÞH‰Ç1Àè`YéNÿÿÿff.„AWA‰ÿ¿ AVI‰öAUATUSH�ìèO£ÿÿ¿ÀH‰D$Xè@£ÿÿ¿ÀH‰D$`èÁ�ÿÿE1Ò¾aE1ÀH‰D$hH‹D$X1ÒL�¶¿Æ-I�ƒÀÔÿÿL‹L$Xë5DL‹T$`foƒÂA2foHAL2HƒÆ HƒÀ@I9Ãty¶p L‹HcÏLÉ@„öt$@ˆ1D‹H�wHcÎA�Yÿƒû†L‹L$X‰÷LÉIcØHcòHÁãHÁæM…Òt®ƒx8uˆfoL‹T$hHƒÀ@AƒÀAfoXÐA\HƒÃ I9Ãu‡ÆH‹D$`H�L$`L�L$hHÇ0H‹D$hH�t$XHÇè•BAƒÿ†ÓI�^I‹vA¸L� œkL�˜kL�ØÞëfD‰ÂI‹4ÖA‰À¹L‰ÏA�@ó¦—€ڄÒuA9Çv‰ÂI‹4Ö¶AöSuÐO‰ÆA9ÇwÁA�GþH�-HkM�dÆë€HƒÃI9ÜtGH‹;€?-uï€lué€tãè—ÿÿHƒÃH�xèi¡ÿÿH‰îI‰ÅH‹CøL‰ïH�P1ÀèqŸÿÿL‰køI9Üu¹ÇD$»ÿÿÿÿL�d$TL�-zHÇD$Ç$€9ÊtL‰öD‰ÿèµA…Àu鋳H‹L$`H‹T$XM‰àL‰öÇA D‰ÿèù˜ÿÿ‰Åƒý?„ž‰ïèWA…Àu«ƒýÿ„±�ý ‡ZIcT­Lêÿâ@H‹t$XÆ:�wHcÎAƒù…äýÿÿH‹t$XƒÇÆ:L‹L$XHcÏLÉéÒýÿÿ€ "¶ý!¨t7ƒàH�-àiº<H�ÛiH�5úSHDè1ÿè�•ÿÿH‰ÇH‰î1ÀèV¶»!Ç=#Ç'#ƒàü€%!ßÇC#ƒÈˆŠ!éÍþÿÿHcÃH�c²‰\$ I‹<ÆH�ªÕÿÿL‰d$(¸H‰ëI‰ÔH‰|$H‰ýëf�L9ã„A‹$Iƒì@ƒøuêI‹t$8H…ötàA‹|$pHï胘ÿÿ…ÀuÏ‹\$ L‹d$(ºH�5i1ÿèÔÿÿH‹t$H‰Ç1Àè4U1ÿºH�5Dè¡”ÿÿH‰Ç1ÀèUéþÿÿf�H‹L$hM‰àL‰öD‰ÿH�f¹‰Íèà”ÿÿ‰Åé;þÿÿH‹ê!H…Àt €8„â‹$‹$…Àtf.„è벃ëuöH‹D$H‰ÃH…ÀuëE€Æ€;…!H�X¾:H‰ß裔ÿÿH…ÀuÞ€;t ¾H‰ßèÌXH‹|$èržÿÿ¶ ¨`u¶T$ƒàŸÁâ Ј ·ÿf©€„Ú¶ ì‰Èƒà<„ï‹!ƒú„ƒú„‹ý ƒú„ƒúu€ ±@<tNHƒ=!t1ÿºH�5ðSèK“ÿÿH‰Ç1ÀèÁSHƒ=á t1ÿºH�5ùSè$“ÿÿH‰Ç1ÀèšS·Sf%`f=`„ÀH�Ä[]A\A]A^A_þH‰ßH‰$èÂWH‹$éÅþÿÿ·T$f%þ¶ Áâ Ðf‰ÿ‰Èƒà<…ÿÿÿ€= ‰ÿÿÿ‹ Æîƒú…ýþÿÿƒá…§‹úƒútƒú„ýþÿÿéÿÿÿƒátâÇØ€ –éÝþÿÿH‹5©H�T$p¿è—ÿÿ…À‰!H‹‹H‰D$8H‹¯H‹|$8H‰D$@H…À„ßè7’ÿÿ¾= H‹l$@‰\$ L‰t$(I‰ÆL‰d$0‰ûI‰ìH‹l$8H‰D$H@ˆ|$ë @HƒÀI‰Ät8L‰òL‰æH‰ïèÙ�ÿÿ…ÀuC¶4„À„½:D$„5‰ÞL‰çè4’ÿÿH…Àu¿H‹|$@‹\$ L‹t$(L‹d$0è§‘ÿÿH‹|$HH�|èœÿÿ¾ iL‹ºH�5 gH‹ÜH‰ÇH‰Å1Àèÿ™ÿÿH‹=ÈèÛÿÿH‰-¼é¯úÿÿljé úÿÿ€ Vé”úÿÿH‹=ÍH…ÿ„¯óo'%±è|›ÿÿéoúÿÿº¾H�=–èñ™ÿÿH‰’éMúÿÿH‹5H�=÷è¢é5úÿÿÇ é&úÿÿH‹÷H‰HéúÿÿH‹=ä诅…À„ÿùÿÿ1ÿºH�5fèd�ÿÿH‰Ç1ÀèÚPéÝùÿÿH‹=®èY„éÌùÿÿ€ �Hƒ=e…·ùÿÿHÇTýé§ùÿÿ€ ^é›ùÿÿ€ Pé�ùÿÿ¶B‰Âƒâ`€ú@„R·-ÇD$‰Âf�â€f�ú…Yùÿÿf €f‰éIùÿÿ¶ü‰Âƒâ`€ú`„û·çÇD$‰Âf�â€f�ú€…ùÿÿf%þ€Ìf‰¿éùÿÿH‹-ѹ H�=¾dH‰îó¦—À„À„¾¹ H�=«dH‰îó¦—À„À…]¶D$¶kƒàƒâŸ‰ÁƒàÁáÁà ʈR·Kf�âþ Ðf‰=é~øÿÿ€%0ûérøÿÿ€ $éføÿÿÇÄÇŠéMøÿÿÇ·é>øÿÿÇé/øÿÿÇùé øÿÿ‹ Z…É„s¶Ãƒà<„M¶±ƒàüƒÈˆ¥éè÷ÿÿH‹=¹ÿèÔé×÷ÿÿ‹5…ö„L¶zƒà<„Û¶j€ a¨`u ƒàŸƒÈ ˆS·Lf©€…ˆ÷ÿÿf%þ €f‰5év÷ÿÿH‹=H‹-@ÿH…ÿ„vèŽÿÿH‰ïH‰D$èõ�ÿÿH‹T$H�|èV˜ÿÿ¾ ·L‹ÿH�5[cH‹2H‰ÇH‰Å1ÀèM–ÿÿH‹=è˜ÿÿH‰-éýöÿÿÇãéîöÿÿÇPéßöÿÿH‹-°þ¹H�=teH‰îó¦—À„À„¶¹ H�=÷|H‰îó¦—À„À…oÇfé�öÿÿH‹-^þH…í„…¹ H�=ábH‰îó¦—À„À„g¹ H�=ÎbH‰îó¦—À„À…·Ç›é2öÿÿH‹5þH�=Çbè×òÿÿéöÿÿH‹5ëýH�=Ÿbè¿òÿÿéöÿÿH‹5ÓýH�=ybè§òÿÿéêõÿÿH‹5»ýH�=!²è�òÿÿéÒõÿÿH‹5£ýH�=ä±èwòÿÿéºõÿÿH‹5‹ýH�=رè_òÿÿé¢õÿÿLjé“õÿÿÇåé„õÿÿÇÊéuõÿÿÇÃéfõÿÿǼéWõÿÿÇ­éHõÿÿdžé9õÿÿÇ{é*õÿÿƒ=Ç …õÿÿÇùéõÿÿèÙƒ=ìt Çàƒ=Õ…ßôÿÿÇÅéÐôÿÿèÙƒ=¸t Ǭƒ=¡…«ôÿÿÇ‘éœôÿÿH‹-ýH‹=füè�[H‰-êÇXè ¥ÿÿƒ=`t ÇTƒ=I…SôÿÿÇ9éDôÿÿH‹üH‰^é1ôÿÿH‹-’H‹=ûûè[H‰-Çíè ¤ÿÿéôÿÿ¿è�:H‹=ÊûǀǮÇtÞþÿÿÿH…ÿ„Ëóÿÿ1ÒH�t$pè’ÿÿH‰D$H‹D$p€8…¤1Àƒ|$ŸÀ‰\é—óÿÿ€ L é‹óÿÿ€ C éóÿÿH‹=Pû1Ò1öèÇ‘ÿÿ‰Ñédóÿÿ‹%ÿþÿ€Ì€‰éKóÿÿ€ €é?óÿÿ€ ð é3óÿÿ€%éßé'óÿÿ€ Ýéóÿÿ·Î·T$f%þÁâ Ðf‰¹éúòÿÿ·­f%þ €f‰ éáòÿÿH‹=rúèm81ÿè’ÿÿH‹=ŸúH…ÿ„è èáÕé´òÿÿH‹-…ú¾=H‰ï踉ÿÿH‰ÁH…À„H�A€}H‰D$t€yu$ºH�5[H1ÿèäˆÿÿH‰Ç1ÀèZIH‹-3úH‹T$H)êHcÊH‰T$(H‰ÏH‰L$ èV“ÿÿH‹T$(H‹5 úH‰ÇH‰ÅƒêHcÒèÙŒÿÿH‹L$ H‹|$H�t$pºÆD ÿè†ÿÿH‰ÁH‹D$p€8…N H‰Ïè"'1ÒH‰ïH‰ÆèžéØñÿÿH‹©ùH‰éÅñÿÿH‹–ùH‰÷é²ñÿÿ¶e¶T$ƒàŸÁâ ЈRé“ñÿÿÆ\é‡ñÿÿÆPé{ñÿÿH‹=Lù1Ò1öèÃ�ÿÿH…À„ H‰éVñÿÿ€ €éJñÿÿ€%ûé>ñÿÿ€ õé2ñÿÿ€%ã¿é&ñÿÿ€ ×@éñÿÿÇÐé ñÿÿH‹=ÜøèGúéúðÿÿ€%+éîðÿÿ€ €éâðÿÿ€%¿éÖðÿÿ€ @éÊðÿÿ€ üé¾ðÿÿH‹=�øH…ÿ„È1Ò1ö轄ÿÿH‰>é™ðÿÿH‹=jøH…ÿ„”1Ò1öèØŽÿÿ‰éuðÿÿÇ;éfðÿÿÇ,éWðÿÿH‹=(ø1É1Ò1öèM¤é@ðÿÿ€%rþé4ðÿÿ€%eßé(ðÿÿÇvéðÿÿÇÛé ðÿÿÇÈéûïÿÿ€%¯ûéïïÿÿÇ�éàïÿÿH‹±÷H‰ZéÍïÿÿ€%~ïéÁïÿÿÇsé²ïÿÿÇ”é£ïÿÿÇ…é”ïÿÿH‹=e÷èˆÿÿH‰Yé|ïÿÿÇZémïÿÿ€ %éaïÿÿH‹=2÷ÇìH…ÿ„Gïÿÿè:ƒÿÿ‰Å…À„Ø ‰ïè)…ÿÿé,ïÿÿ‹®þH‹=÷öH�5$Z�PH‰=¦ü‰�þèËèÿÿÇÙ茟ÿÿHÇ�üéäîÿÿÇž€ ŒéÎîÿÿ€ ÿ éÂîÿÿH‹-“ö¹ H�=¨bH‰îó¦—À„À„�îÿÿ¹H�=zYH‰îó¦—À„À„îÿÿ¹ H�=jYH‰îó¦—À„À„aîÿÿ¹ H�=WYH‰îó¦—À„À„Cîÿÿ1ÿºH�5u4訄ÿÿH‰îH‰Ç1ÀèEéîÿÿfDH‹=éõèÄóéîÿÿ� µ€éøíÿÿ1ÿèy4ÇéâíÿÿH‹=³õ¾è yéÌíÿÿÇ¢é½íÿÿ€ o`é±íÿÿ€ eé¥íÿÿH‹=võ1öèÿŽé’íÿÿÇÀ€%¹ßé|íÿÿH‹=MõèyékíÿÿH‹=<õ1Ò1öèNéVíÿÿ9 õ„¥¶û¨t7ƒàH�-ÞWº<H�ÙWH�5øAHDè1ÿè�ƒÿÿH‰ÇH‰î1ÀèD¶¹Ç;Ç%ƒàü€%ßÇAƒÈˆˆéËìÿÿH‹œô€8uH‹¸H…Òt €:…ŽH‰£éžìÿÿ¶PƒàŸƒÈ ˆDé†ìÿÿÇ4éwìÿÿH‹=HôècSÇAèôœÿÿéWìÿÿH‹=(ôè™éFìÿÿH‹-ô¹H�=ø`H‰îó¦—À„À„ø¹H�=ÈVH‰îó¦—À„Àt¹H�=ÜVH‰îó¦—À„À…ï€  éÝëÿÿH‹-®ó¹H�=|XH‰îó¦—À„Àu HƒÅH‰-‰óH‹D$H…ÀtH‰Çè§ŒÿÿH‰ïè„ÿÿH‰D$é�ëÿÿ‹?%ÿþÿ ‰/érëÿÿ¿èð1Çö éYëÿÿH‹ºýH‹=#óH‰¤ýè7RÇ èÈ›ÿÿHÇ…ýé ëÿÿH‹=9H…ÿ„IHƒ?H‰úué� f.„‰ÈHƒÂ�HHƒ:uñ�pHcöHÁæH�VðH�nøH‰T$èE‚ÿÿH‹ žòH‹T$H‰ÚH‰ HÇ(é©êÿÿH‹=zò¾è —é“êÿÿH‹-dòH�5:WH‰ïèÅ~ÿÿ…À„=H�5)WH‰ïè®~ÿÿ…À…€Ç¨éOêÿÿH‹ òH‰Yé<êÿÿ€ í é0êÿÿH‹=òèé}çÿÿ1ÿºH�5¨Sèâ}ÿÿH‰Ç1ÀèX>é[çÿÿ1ÿºH�5¥=èÀ}ÿÿH‰Ç1Àè6>é9çÿÿƒàŸƒÈ@ˆç éôíÿÿƒÈ`ˆÙ é íÿÿ1ÿºH�5,=è}ÿÿH‰Ç1Àèõ=éäüÿÿÇR ééæÿÿH‰ïèiÿÿH‰ê éÕæÿÿºH�5Q=è<}ÿÿH‰Ç1Àè²=鵿ÿÿè8ÿÿH‰± 餿ÿÿºH�5(,1ÿH‰L$ è}ÿÿH‹t$H‰Ç1Àèu=H‹L$ é�ôÿÿ‹\$ L‹t$(L‹d$0é`æÿÿ¹H�=;RH‰îó¦—À„À„ò¹H�=4RH‰îó¦—À„À…$ ¶×¶T$ƒàŸÁâ ЈÄ·½f%þ €f‰°éñåÿÿ‹\$ L‹t$(L‹d$0éÞåÿÿH�5•zH‰ïèzÿÿ…ÀtlH�5„RH‰ïèzÿÿ…À…’ Çþ é¥åÿÿHcÃ1ÿºI‹,ÆH�5H:è|ÿÿH‰ÇH‰î1Àèv<é/øÿÿ‹\$ L‹d$(ºH�5,Ré çÿÿÇ© éPåÿÿ¶·T$ƒàŸÁâƒÈ ˆï·èf%þ Ðf‰Ûéåÿÿ1ÿºH�5:è�{ÿÿH‰Ç1Àè÷;éúäÿÿ1ÿºH�5+è_{ÿÿH‰îH‰Ç1ÀèÒ;éÕäÿÿH‹=n€?…™ 1ÿ膂ÿÿ¿è<+ëíºH‹n 1ÿA¼@H�5ÇOè {ÿÿH‰ÞH‰Ç1Àè­{ÿÿºH�5ÆO1ÿèêzÿÿH‰Ç1Àè�{ÿÿH�ymÇ$H‰D$H�þ)H‰D$ë1€ƒ$‹$IƒÄ@HƒD$@H‹T$=­„ËH‹BðH‰D$Hƒ|$tÎH�=ƒh1À½@»è{ÿÿH‹D$D‹,$1ÉL)åL�xÈé™H�5^�H�=¿P1Àèòzÿÿ¸M‹w ùM…ötQAƒ?t ¿ ƒÃèÚwÿÿºL‰ö1ÿè zÿÿH�=²gH‰Æ1ÀèªzÿÿºL‰ö1ÿèëyÿÿH‰Çèzÿÿ¹ÃAƒÅA�ý¬wHIƒÇ@J�D=Jƒ| èu7A¾W„ÒtÙAƒ0tÒ…É…OÿÿÿH�5:™H�=P1ÀèAzÿÿ¸éJÿÿÿL‹l$D‹<$L‰d$ M‰ìéŸ�L‰éH�5tŒ1ÀA¾H�=ÅOèzÿÿL‰ïHÁåèvyÿÿDt$ÃH�˜kH‹l((DóH…ít;ºH‰î1ÿèyÿÿH�=ôMH‰Æ1Àè»yÿÿºH‰î1ÿèüxÿÿH‰Çè$yÿÿ�\¹AƒÇA�ÿ¬w}IƒÄ@Iƒ|$ðuqD‰ýH�(kH‰èHÁàHÐL‹(M…ítË‹@8ƒøtÃè1ÿH���ƒøH�3˜@–ÇHGЉ|$…É…ÿÿÿL‰éH�5˜1ÀA¾H�=ÙNèyÿÿéÿÿÿL‹d$ ƒû>€H‹5ié¿ ƒÃèì{ÿÿƒûuçH‹t$1ÿºè&xÿÿH‰Çèžvÿÿéaýÿÿ¿ 1ÛèÍuÿÿ뻺H�5771ÿH‰D$èówÿÿH‰Ç1Àèi8H‹-BéH‹L$éÌîÿÿH‹1é1ÿºH�5³'H‰D$è¹wÿÿH‹t$H‰Ç1Àè*8éõñÿÿ1ÿºH�5Ÿ6è’wÿÿH‰îH‰Ç1Àè8éáÿÿH‹-Ùè1ÿºH�5LèfwÿÿH‰ÇH‰î1ÀèÙ7é0íÿÿ1ÿºH�5¦5èAwÿÿH�5tKH‰Ç1Àè°7éüèÿÿ1ÿºH�5}5èwÿÿH�5BKH‰Ç1Àè‡7éŠèÿÿ1ÿºH�5Ä5èïvÿÿH‰îH‰Ç1Àèb7éeàÿÿ½1Ò¾é}õÿÿºH�5£K1ÿ»è´vÿÿH‰Ç1ÀèZwÿÿH‹5Ãç¿ èIzÿÿƒëuêºH�5sK1ÿè�vÿÿL�%YKH‰Ç1Àè wÿÿH‹¹º1ÿH�5^KèVvÿÿH‰ÞH‰Ç1ÀèùvÿÿèÔwÿÿH‹0H‰ÃH‰ÅH…ötL‰ç1ÀHƒÅèØvÿÿH‹uH…öuéH‰ßè§€ÿÿ¿ èÍsÿÿº1ÿH‹OH�5KèóuÿÿH‰ÞH‰Ç1Àè–vÿÿH‹=ÿæèº#¿ è�sÿÿH‹1ÿºH�5Ó%è¶uÿÿH‰ÞH‰Ç1ÀèYvÿÿº1ÿH�5ÐJH‹´æè�uÿÿH‰Ç1Àè5vÿÿº1ÿH�5·%èruÿÿH‰ßH‰Æ1Àè5yÿÿº1ÿH�5ß%èRuÿÿH‰ßH‰Æ1Àèyÿÿº1ÿH�5/&è2uÿÿH‰ßH‰Æ1Àèõxÿÿº1ÿH�5G&èuÿÿH‰ßH‰Æ1ÀèÕxÿÿ1ÿºH�5¯&èòtÿÿH‰ßH‰Æ1Àèµxÿÿº1ÿH�5¿&èÒtÿÿH‰ßH‰Æ1Àè•xÿÿº1ÿH�5ß&è²tÿÿH‰ßH‰Æ1Àèuxÿÿº1ÿH�5ÿ&è’tÿÿH‰ßH‰Æ1ÀèUxÿÿº1ÿH�5/'èrtÿÿH‰ßH‰Æ1Àè5xÿÿº1ÿH�5O'èRtÿÿH‰ßH‰Æ1Àèxÿÿº1ÿH�5'è2tÿÿH‰ßH‰Æ1Àèõwÿÿº1ÿH�5·'ètÿÿH‰ßH‰Æ1ÀèÕwÿÿ1ÿºH�5ç'èòsÿÿH‰ßH‰Æ1Àèµwÿÿº1ÿH�5(èÒsÿÿH‰ßH‰Æ1Àè•wÿÿº1ÿH�57(è²sÿÿH‰ßH‰Æ1Àèuwÿÿº1ÿH�5O(è’sÿÿH‰ßH‰Æ1ÀèUwÿÿº1ÿH�5g(èrsÿÿH‰ßH‰Æ1Àè5wÿÿº1ÿH�5‡(èRsÿÿH‰ßH‰Æ1Àèwÿÿº1ÿH�5¯(è2sÿÿH‰ßH‰Æ1Àèõvÿÿº1ÿH�5Ï(èsÿÿH‰ßH‰Æ1ÀèÕvÿÿ1ÿºH�5÷(èòrÿÿH‰ßH‰Æ1Àèµvÿÿº1ÿH�5O)èÒrÿÿH‰ßH‰Æ1Àè•vÿÿº1ÿH�5)è²rÿÿH‰ßH‰Æ1Àèuvÿÿº1ÿH�5¯)è’rÿÿH‰ßH‰Æ1ÀèUvÿÿº1ÿH�5*èrrÿÿH‰ßH‰Æ1Àè5vÿÿº1ÿH�5?*èRrÿÿH‰ßH‰Æ1Àèvÿÿº1ÿH�5o*è2rÿÿH‰ßH‰Æ1Àèõuÿÿº1ÿH�5Ÿ*èrÿÿH‰ßH‰Æ1ÀèÕuÿÿ1ÿºH�5Ç*èòqÿÿH‰ßH‰Æ1Àèµuÿÿº1ÿH�5ß*èÒqÿÿH‰ßH‰Æ1Àè•uÿÿº1ÿH�5+è²qÿÿH‰ßH‰Æ1Àèuuÿÿº1ÿH�57+è’qÿÿH‰ßH‰Æ1ÀèUuÿÿº1ÿH�5W+èrqÿÿH‰ßH‰Æ1Àè5uÿÿº1ÿH�5w+èRqÿÿH‰ßH‰Æ1Àèuÿÿº1ÿH�5Ÿ+è2qÿÿH‰ßH‰Æ1Àèõtÿÿº1ÿH�5ÿ+èqÿÿH‰ßH‰Æ1ÀèÕtÿÿ1ÿºH�5',èòpÿÿH‰ßH‰Æ1Àèµtÿÿº1ÿH�5O,èÒpÿÿH‰ßH‰Æ1Àè•tÿÿº1ÿH�5,è²pÿÿH‰ßH‰Æ1Àèutÿÿº1ÿH�5¯,è’pÿÿH‰ßH‰Æ1ÀèUtÿÿº1ÿH�5ß,èrpÿÿH‰ßH‰Æ1Àè5tÿÿº1ÿH�5-èRpÿÿH‰ßH‰Æ1Àètÿÿº1ÿH�5/-è2pÿÿH‰ßH‰Æ1Àèõsÿÿº1ÿH�5_-èpÿÿH‰ßH‰Æ1ÀèÕsÿÿ1ÿºH�5�-èòoÿÿH‰ßH‰Æ1ÀèµsÿÿH‹=þàèù¿ è�mÿÿºH�5 E1ÿè¼oÿÿH�5�-H‰Ç1Àè[pÿÿ1ÿèôvÿÿènÿÿé]ôÿÿ1ÿºH�5Ä/è‡oÿÿH‰Ç1Àèý/éÙÿÿ1ÿºH�5z-èeoÿÿH‰îH‰Ç1ÀèØ/éÛØÿÿHƒ:tÇB¸ÃDH‰21ÀÃf�H‹E1ÀH9=ûH‰øA”ÀH…Òtb1ÿH�5ÎVƒzwS‹JHc ŽHñÿá@H…ÿtSE1ÀH‰ÐH‹H…Òu×Ã@H‰ÐH‹1ÿH…ÒuÅëì�H…ÿtH‹R8H…Òt HƒºuH‰øÃ@öB HEÇÀH‹Jƒyt£H‹I€9.uš€yu”E…Àu�H‰ÇëŠff.„f�H‹H‹¸ÿÿÿÿH‹R0H9Q0r—À¶ÀÃ@H‹H‹¸ÿÿÿÿH‹r0H9q0r¸w¸ÿÿÿÿ‹R9Qr—À¶ÀÃH‹H‹¸ÿÿÿÿH‹r(H9q(r¸w¸ÿÿÿÿ‹R9Qr—À¶ÀÃÃff.„@‹G(…Àt�J Ã�SH‰óHƒìH…ÿ„¿H‰ÞèOxÿÿH‰ÂH…À„ÎH�pH�x HÇ@HƒçøH‰ñHÇ€¨1ÀH)ù�Á˜ÁéóH«ÇB H¸ÿÿÿÿH‰‚�H�B(H‰B0H‹aÁÇ‚˜ÿÿÿÿH‹HHÇB(H‰1Hƒ=ùH‰pH‹ ùtH�HàH‰J@H‰0H�B8H‰õøHƒÄH‰Ð[Ã@H‰ß¾°H‰T$ènpÿÿH‹T$H…ÀH‰Ç…ÿÿÿHƒÄ1À[ÃDHƒìH‹?èdpÿÿ…À”ÀHƒÄ¶ÀÀHƒìH‹vH‹è?pÿÿ…À”ÀHƒÄ¶ÀÃf�‹æú…À„ºƒøwUATL�%²XUH�-¤XSH‰ûH…ÿt3‹Cƒø„—vEƒø txƒøuH‹=Døè¯ÿÿÿ€H‹H…ÛuÍ[]A\Ã¾Ê H�=BXéW-€…ÀuÔH‹S0¹H‰ïH‰Öó¦—À„Àtº¹H‰ÖL‰çó¦—À„Àt¤@H‹{è?ÿÿÿë•DÀH‹C ‹ úH…À„uÿÿÿ‹Pƒút1D…ÒtDƒúuƒùu Ç@H‹H…À„Dÿÿÿ‹PƒúuÔƒùuçÇ@H‹H…Àuäé#ÿÿÿ‰HH‹H…ÀuÑéÿÿÿ„S‰ûƒçuöÃu&öÃu4öà uBƒãuP[Ãf�1ÀH�=~ìè’,öÃtÚ1ÀH�=sXè,öÃtÌ1ÀH�=ÈDèl,öà t¾1ÀH�=íLèY,ƒãt°H�=ËY1À[éE,DAWAVAUATUSHƒìH‰L$H…ÿt\I‰ÿH‰õI‰ÔL‰ÃL�5•RL�-þUfDAƒ‡uA‹GIc†LðÿàI‹0H‹L$I‰ØL‰âH‰îè™ÿÿÿH‰D$M‹?M…ÿuÄH‹D$HƒÄ[]A\A]A^A_ÄI‹Gö@!€uÒH‹@8‹ DäM‹?HÓèHD$M…ÿu„ë¾f.„I‹ëŽf.„H‹L$I‰ØL‰âH‰îH‹=ÛõèÿÿÿM‹?H‰D$M…ÿ…=ÿÿÿétÿÿÿI‹GL‰=}ãƒx… H‹u8H� 8ÜH�T$H‰ÇH…öHDñè< M‹?M…ÿ…øþÿÿé/ÿÿÿ¶ƒàÁà‰ÂA¶‡�ƒàß ÐI‹W8Aˆ‡�H…Ò„¨…üöB tL‰=ãÇíâH‹J(H‰L$éÜ€I‹0H�T$H�5¸Ü賋µ÷…À…Eƒ=n÷„wI‹èiÿÿ‹ ãM‹?ÓèHD$M…ÿ…>þÿÿéuþÿÿ�I‹G‹ ÞâM‹?HÓèHD$M…ÿ…þÿÿéQþÿÿDI‹H�T$H�58Üè3‹5÷…Ò…•ƒ=îö„ÕA‹G-ƒø‡‹ xâA‹T…¸M‹?Óà9ÐBÂÓèHD$M…ÿ…¤ýÿÿéÛýÿÿ€M‹gM‹?M…ÿ…ˆýÿÿé¿ýÿÿ¾H�="Tè7)M‹?M…ÿ…cýÿÿéšýÿÿfDH‹yöH‹‚öI‰G H…Ò„]ÿÿÿHB(I‰G éPÿÿÿ„H‹IöI‰G8é¸þÿÿH‹pH9-Eó¶„Ç€ú_u€HƒÆ€>_t÷¹H�=nfó¦—€ڄÒ…°ýÿÿÇI‹Gé¡ýÿÿ@H‹L$I‹WPI‹I‰ØL‰þèpüÿÿAö‡�…ÎüÿÿI‹W8H…Ò„¼üÿÿ‹B %=tcH‹B8‹ $áHÓèHD$I‹hH…ÿ„“üÿÿH�T$H�5‹Úè†M‹?M…ÿ…Büÿÿéyüÿÿ€ú.…0ÿÿÿ€~…;ÿÿÿÇhàé,ÿÿÿ¶Üòƒà<u¡ë�1ÿºH�5ÉRè€fÿÿH‰Ç1Àèö&é þÿÿ1ÿºH�5cWè^fÿÿH‰Ç1ÀèÔ&égýÿÿH�èQ¾ÀH�=bRèw€SH‰þH‹=�ò1ÉA¸ºèóhÿÿH‰ÃH…ÀtC€{u5·CH‹=bòHÇC(f%þf ƒ@f‰Cu€Kd H‰Þ[é£hÿÿ[ÃfD1ÿºH�5ÚVèµeÿÿH‰Ç1Àè+&ëžf„UH‰õSHƒìèÒoÿÿH…Àt2H‰ïH‰Ãè²eÿÿHض„Òt„HƒÀHƒÃˆSÿ¶„ÒuîÆHƒÄ[]Ã@AUI‰ýATUH‰õSHƒìèkeÿÿH�xèÒoÿÿH‰ïH‰ÃèWeÿÿH�xè¾oÿÿA¶UI‰Ä„Ò„îI�}H‰ÙH�€®¶HƒÁHƒÇˆQÿ¶Wÿ„Òué¶UÆH�}L‰á„ÒtH�P®¶HƒÁHƒÇˆQÿ¶Wÿ„ÒuéÆH�5SH‰ßèÿÿÿH�5SH‰ßèøþÿÿH�5ãRL‰çèéþÿÿH�5èRL‰çèÚþÿÿ¶A:$ua„Àt]ºëfDHƒÂ„Ét0‰Õ¶ A: tìH‰ßèÔnÿÿL‰çèÌnÿÿHƒÄ‰è[]A\A]À�l­íëÔH‰Ùé/ÿÿÿ„1íëÀff.„�L‹M…Ét3‹wL‰Ê1ɶBH‹A‰ÀAƒàA€øHƒÙÿÀèƒà ÆH…Òu݉wH…ÉuL‰OÃAWH�÷ÿÿH�5AVAUATUSH‰ûL�sHƒìH‰|$H�< 1Éè-lÿÿH‰$H‰CH‹H…ÛuëNI‰I‰ÞL‰ãM…ät=L‹#öCtéH‹D$ºH‰ÞH‹xè gÿÿL‹8M…ÿuCH‰H‹$H‰$H‰L‰ãM…äuÃH‹D$H‹ $IÇH‹@H‰HƒÄ[]A\A]A^A_ÀD¶kë%f„I‹/H…ít0H‹sH‹}è{fÿÿ…ÀuI‰ïA¶GD1è¨8uØH‰ßèPmÿÿéIÿÿÿH‰+I‰é;ÿÿÿff.„f�H‹é'`ÿÿ€H‹ïSH‰òH‰þH�=»îH‹@ÿ�0H…Àt)H‹5ÜH;5ÜH‰ÃH‹ ÜtH�VH‰ðH‰óÛ[Ã�HƒÆH‰ÇH�6HÁæH‰ÒÛè%cÿÿH‹5ÎÛH‰ÏÛëÃDAWAVI‰þ¿ÿÿÿÿAUI‰ÕATM‰ìUSHƒì8‹.ÓH‰t$èdaÿÿH‹=mî1ÒL‰îèÓhÿÿ‰ßH‰ÅH…ÀIDíèBaÿÿA‹F¨…®¨…~L‰ëI‹~H…ÿt8H‹D$H…À„̶@¨„8Àèƒà<„J„À„ª<„ÚH‹D$H…Àt ö@„M‹~ë&A¶GH‰Þƒà8< t <H‰îIDô1Òè±bÿÿ…Àt%M‹?M…ÿ„éI‹H…ÿtë€?*uÀu½DL9ítH‰ïè‹kÿÿM9ìtL‰çè~kÿÿL9ëtH‰ßèqkÿÿHƒÄ8L‰ø[]A\A]A^A_ÀA‹F¨…=¨…ب„BÿÿÿI‹~H�t$H‰\$èùhÿÿI‰ÇH…Àu%é"ÿÿÿ@A¶Gƒà8< „pÿÿÿM‹?M…ÿ„ÿÿÿI‹H‰Þèdÿÿ…ÀtÔéíþÿÿ€H‹D$L‹8M…ÿ…ÿÿÿ€E1ÿé(ÿÿÿH‹=¹ìºL‰îègÿÿH‰ÃH…À…eþÿÿé]þÿÿH‹=‘ìºL‰îèôfÿÿI‰ÄA‹FM…ä….þÿÿM‰ìé&þÿÿI‹~H�t$L‰d$è)hÿÿI‰ÇH…Àu!ë/€A¶Gƒà8<„ þÿÿM‹?M…ÿtI‹L‰æè4cÿÿ…ÀtØA‹F¨„þÿÿéÓþÿÿH�t$H‰l$èÐgÿÿI‰ÇH…Àu ë6fDA¶Gƒà8<„HþÿÿM‹?M…ÿtI‹H‰îèÜbÿÿ…ÀtØ„A‹F¨„pþÿÿéCÿÿÿff.„@1À¶8u ¶V8WtÃD¶V8Wuñ¶N8Ouè¸ë€¶ HƒÀ8Ñu¶€ú*uë¸ÃD1ÀÃDH‰ñöBHu_‹GD¶ÝêÁèƒâ%ÿÿ€út©u‹V �†�ú€tE¨@u!H‹GH�¦êH‰ÎH‹€ÿàf.„ÀH‹GH�5}êH‰ÏH‹€Èÿà�H�5ÙÑH‰qh뮉ø¶XêÁèƒà÷Çt ö¹EÁƒâ t�ç ºEÂÃf.„H‹BhH…ÀtH‹ `êH9ˆðtÃfDö@!€uó‹B ¨tì%=tàHƒz8tÙAÇÄAUATUSHƒìH‹^8H‹F L‹F(H9Ãr I‰ÙI)ÁM9ÁvaLÀH9ØuH…ÉuTH…ÒtHH‹L‹.º1ÿH�5ŒNL‹ H‹¨ðè5]ÿÿHƒÄM‰èH‰ÞL‰á[H‰êH‰Ç]1ÀA\A]é•D‹FP…ÀtHƒÄ[]A\A]ÃfDH‹L‹&º1ÿÇFPH�5mNH‹(H‹˜ðèÎ\ÿÿHƒÄL‰áH‰êH‰ÞH‰Ç[1À]A\A]é1�¶Gƒè<v ¸Ã€H9w(uíUH‰ýS»Hƒì@è{ ƒëuöH‹E(H�=ÍHH‹p`H‹@hHu0Hp(1ÀèÔH‹u1ÀH�=±HèÂHƒÄ¸[]ÃfDHƒìH‹5]ë‹=OëèÚZÿÿÇ8Öƒøvº¨të ‰ÊÑè�J¨tõ‰Öƒøu HƒÄÃD¾¤ H�=úGHƒÄé ff.„AWAVA‰öAUATUH‰ýSHƒìL‹g8èsÿÿÿèž H‹uH�=AI1Àè H‹}è³[ÿÿ�Xƒû�€èk ƒÃƒûuóH‹EhH…ÀtH‹ãçH9�ð„¦E…ö¸L‹-çÕLDàH‹�ð1ÀL‰âL‰îH�=™Gè˜H‹E@H…ÀtL9àu*H‹EhH…ÀtH‹5ŠçH9°ðtaHƒÄ[]A\A]A^A_Ãf�»#èÓ ƒëuöH‹]@1ÿºH�5EGè·ZÿÿH‰ÇH‰Þ1Àè*ëž„L‹m`Lh(é`ÿÿÿöÍæ…'H‹�¨H…Û„-H‹CH‹=hÕH‹sHÇH‹NÕH‰úL�4õH)ÂI9Ö‡HL‹=(ÕJ�0L9ú„ZH‹ 4ÕI‰øH� H÷ÑH‹ûÔH!ÈH‰ÁI)ÐH‰ûÔH)ÑL9Á‡ñH‰àÔH‹1ÒH…ÀtfDH‹8H‹@‰ÑƒÂI‰<ÏH…ÀuëH� TëÿÿºL‰ÿE1öè”Xÿÿ1ÀHƒ{tI‹<ÇH‰îèìüÿÿA�FI‰ÆH;CrçL;=pÔvoL;=ÔsfL‰=fÔL‰=gÔë'Dèƒ 1ÛéìýÿÿH‹=½åH‰êH�5›üÿÿèf_ÿÿ‹ hÓIÓìMìL;%ãÓ†<þÿÿL‰%ÖÓHƒÄ[]A\A]A^A_ÃL‰þH�=íÓèhRëÀH‰=÷ÓH‰øéÿÿÿL‰öH�=ÍÓèQH‹ÙÓH‹=ÚÓH‹sé’þÿÿ€ úÓéšþÿÿDAWAVAUATUSHƒì‹oƒý‡H�ß@H‰ûI‰ôHcªHÐÿà½èƒ ƒíuöH‹CI‹t$8‹PH‹xƒú„…€?.„¼ H‰=åæ1íH…öH� ùËH‹x HDñƒú…hÇææƒx„˜ H�=F1Àè–H�= F1ÀèˆH�=÷E1ÀHÇ„æèoH‹{ëaf„H‹WH…Ò„àH‹G H…Àt ö@F…ÍH�5ÖEéß@H‹oºH�5ÍD1ÿè™WÿÿH‰ÇH‰î1Àè H‹{è“úHƒÄ[]A\A]A^A_é�èkH‹C@H…ÀtOH‹0H�=/D1ÀL�-.,èÊH‹C@H‹hH…ítDH‹uL‰ï1ÀèªH‹mH…íuéH�=D1Àè“‹s…ö…¸H‹sH…ö„ÓH�=¢D1Àèm‹K…É…* H�=ói1ÀL�5±+èMH‹k H…í„øƒ}‡Æ‹EH� ,?Hc�HÈÿàH‹HƒÄ1ö[]A\A]A^A_éÇúÿÿ€H‹ ‘äº ¾H�=ËCH�-ÒCè<_ÿÿH‹CH‹H�XL�dH…Òt$€¶H‹=NäH‰î1ÀHƒÃèøYÿÿL9ãuãH‹54äHƒÄ¿ []A\A]A^A_é4Xÿÿ@èËùÿÿ½fDèëƒíuöH‹C(L‹c0H…ÀtL`(‹C-ƒø‡ H�Y>Hc‚HÐÿà@H�=ôBHƒÄ1À[]A\A]A^A_é@è[ùÿÿ½fDè{ƒíuöH‹C@L‹cHH…ÀtL`(H‹{èœUÿÿ‹ ~ÏL‰æH�=ÒB‰ÅH‹CH‰êH‹@(HÓêH‰Á1Àè²H‹s(H…ö„í1ÀH�=´Bè—H‹{0èøè)‹ +ÏH‰èHÓèLàH‰£ÏHƒÄ[]A\A]A^A_Ã@H‹WH�5ÜBH‹=æâHƒÄ1À[]A\A]A^A_é‰Xÿÿf„H‹ Á⺠¾H�=¾Bès]ÿÿH‹[H…Ûtf.„H‰ßL‰æèµûÿÿH‹H…ÛuíH‹ ~âHƒÄº ¾[H�=ƒB]A\A]A^A_é"]ÿÿf�‹GH�5'TH‹WH�=iB…ÀH� THDðHƒÄ1À[]A\A]A^A_é‰f„Hƒ=øß„ÿþÿÿ‹=üß…ÿ„H�=�@1ÀèVH‹ÏßH…Û„ÓþÿÿfDH‰ßL‰æèõúÿÿH‹H…Ûuíéµþÿÿ„H;=Iß„¾L‹g8H‹w01ÀH�=/AèýM…䄚I‹D$(H‹{0H‰Îè�Sÿÿ‰Åƒø�$@èKƒÅƒýuó‹ eÍI‹T$8H�=â@1ÀI‹t$(HÓêè¢I‹l$0I9l$(t H�5È@1ÿºèSÿÿH‰îH‰Ç1ÀèvH‹{hH…ÿtH�–ÍH�5�ÆèŠòèõH‹kH…í„Õýÿÿ„H‰ïH‰ÞèõùÿÿH‹mH…íuìé´ýÿÿ€H‹w1ÀH�=¦@èH‹5_ÞH…ötH�=Z'1ÀèôH�=_Òé¿üÿÿ„è+öÿÿH�=ð?1À½ èÈ„è;ƒíuöH‹C L‹cH…ÀtL`(‹ GÌH‹S1ÀL‰æH�=³?HÓêè‡H‹C(H‹H…Òt1H�hL�tL�-\?¶UH‹=õßL‰î1ÀHƒÅèŸUÿÿL9õuâèåH‹C‹ ãËHÓèLàH‰^Ìé¶üÿÿf„ºH�58>1ÿè�QÿÿH‹=žß‰êH‰Æ1ÀèJUÿÿHƒÄ¾¼H�=�=[]A\A]A^A_é›H�=\>1ÀA½èÄ@H‹EH…À…H‹uH…ö„îH�=Í>1Àè˜E…ít"1ÀH�=› è…AƒýtH�=‰ 1ÀèqHƒ}t"H�=è>1Àè\H‹mH…í…úÿÿ€H�=R 1Àè:èÕH‹[0H…Û„µûÿÿH‰ßL‰æèÝ÷ÿÿH‹H…Ûuíé�ûÿÿH�=Ÿ=1ÀA½èüé7ÿÿÿ€H�=QB1ÀA½èÜéÿÿÿ€H�=B1ÀA½è¼é÷þÿÿ€H�=!=1ÀA½èœé×þÿÿ€H�=ó<1ÀA½è|é·þÿÿ€E1íé¨þÿÿ„1íH�‡ÃH…öHDðH�yÊètï‹vÞH‹C…Ò„„÷ÿÿƒx„/…í…CHƒ=(Þ„„H‹;ÞL‹%$ÞH…À„WL`(1ÀL‰æH�=2=èæ…í„V÷ÿÿL‰%ÊéJ÷ÿÿf�H�=3<1ÀèÂé5øÿÿDH‹C H‹0éúÿÿ@H�=8>1Àèšé(øÿÿDH�5ÍN¸@‹ "ɽL‹C H�=`<ÓåH9ÅHBè1ÀH‰êHÓêH‰ñL‰æèNH‹Cƒxtè¿ÿH‹{èÆñèÑÿ‹ ÓÈHÓíLåH‰-NÉé¦ùÿÿf„H�5]N¸ë‚f�H�5GN¸éoÿÿÿ€H�5*N¸éWÿÿÿ€H�5 N¸é?ÿÿÿ€H�=H=1Àèªé ýÿÿDH‹0H�=í:1Àè�H‹EL‹xM…ÿtf�I‹7L‰÷1ÀèsM‹M…ÿuêH�=Ê:1Àè\é¤üÿÿ€H�=‘:1ÀèBéçùÿÿDH�=B�1Àè*éÃöÿÿD€½„>õÿÿé0õÿÿH�=e;1ÀèþécõÿÿH‹"ÜL‹% ÜH…À…çýÿÿéæýÿÿH‹ÜL‹%ïÛH…À…ËýÿÿL‰æH�=;1ÀèµéÒýÿÿèKþ1íéÔùÿÿL‰æH�=á:1Àè“éõÿÿH‹pH‹=kÙ1É1ÒA¸èÔOÿÿH…Àt*H‹H(H�=°:H‹Q`HP0H‹AhHP(1ÀH‰ÖèJé½ôÿÿH�=‘:1Àè7éªôÿÿH�›8¾ÉH�=Å8èÚýf.„‹þÙATUH‰õSH‰ûƒú„߃ú„¾‹E9C…«L‹ ¹ H�=Ÿ:L‰Îó¦—€ڄÒ„‰¹ H�=Š:L‰Îó¦—€ڄÒtn¹ H�=y:L‰Îó¦—€ڄÒtS¹ H�=k:L‰Îó¦—€ڄÒt8Hƒ=ÏÅt'H‹uL‰Ïè‰æÿÿH‹uA‰ÄH‹³ÅH‹8èsæÿÿA9Ä~H‰ŸÅ[1À]A\à „8ÿÿÿ[1À]A\À‹G …ÀuÚ‹E9CuÒé"ÿÿÿ@€t ¸Ã@H‹G(‹RÙ‹ƒú„ƒú„rAUH�5‰×ATUSH‰ûH‰ÚHƒìHL‹g0H‹=À×H‹hH‹Gÿ� …À„êHƒ=*Ù„‹fÄ…À„.H‹sH‹=ƒ×ºèéQÿÿI‰ÅH…À„]H‰ÆH�=�81ÀèL L‰ïèôJÿÿL‰ï‰ÃèJUÿÿƒû�±�è«ûƒÃƒûuó1ÀH�=8H‰ãè ¸ÿÿÿÿL‰âI9ć9H�59H‰ß1Àè0SÿÿH‰ÞH�=81Àèß H‰Ú‹ HƒÂ��ÿþþþ÷Ñ!È%€€€€té‰ÁÁé©€€DÁH�JHDщÆ@ÆHƒÚH)Ú‰ÓHƒúw@èûƒÃƒûuóH‹µðH�=�61Àèv HƒÄH¸[]A\A]ÃfD;††þÿÿéYþÿÿºH�5>81ÿè½IÿÿH‰Ç1Àè3 ºH�5ß;1ÿè IÿÿH‰Ç1Àè ÇìÂé‰þÿÿ€H‹sH�=#71Àèî H‹{è•Iÿÿ‰Ãé¤þÿÿfD;ƒþýÿÿéÑýÿÿH�5Û7H‰ß1Àè÷QÿÿéÂþÿÿf�L‹k1ÿºH�5&;èIÿÿH‰ÇL‰î1ÀèŒ éíýÿÿ€èú1ÛéDþÿÿ@UH‰õH�5†7SH‰ûHƒìè¸NÿÿH…ÀuHƒÄH‰îH‰ß[]ébLÿÿf�HƒÄH‰îH‰ß1Ò[]é-Jÿÿff.„f�ATI‰ÌUH‰ýS€~H‰óu]I‹$H9ë”À1ÉH…Òt HƒºÐ•Á8ÈtM¸H9ët&H‹‚ÐH‰ïH‹0Æè^ÿÿÿ¶‘Ô…Àˆ”À¶À[]A\ÄH�~H‰Öè4ÿÿÿ…Àt“[1À]A\Ãf„H…ÿ„ªAVAUL�n ATI‰ôUSH‰ûë!L‰éL‰òH‰ÆH‰ïè?ÿÿÿ…Àu^H‹[H…Ûtj¾5ÔH‹+M‹t$@„öt H‰ïèVHÿÿH…ÀuÁL‰öH‰ïè¶þÿÿ…Àt%I‹D$ H…Àt½H‹€ÐH…Àt±H‹0H‹;è‘þÿÿ…Àu¢[¸]A\A]A^À[1À]A\A]A^Ã1ÀÃf.„AWM‰ÏAVI‰ÖAUM‰ÅATI‰üUH‰õSH‰ËHƒìH‹yèÿÿÿ…Àu+I‹L$xHƒÄM‰ùI‰èL‰òH‰ÞL‰ç[L‰è]A\A]A^A_ÿà@HƒÄ[]A\A]A^A_Ãf„AWAVAUATUSHƒìH‹F H‹oPH‹˜�H…ÛtGI‰ýI‰ôI‰×I‰Îë H‹[H…Ût0H‹}H‹3è‹çÿÿ…ÀtçH‰ÚM‰ñM‰øH‰éL‰æL‰ïè0ÿÿÿH‹[H…ÛuÐHƒÄ[]A\A]A^A_ÄAWAVAUATUSHƒìH‹F H‹¨�H…ít`I‰üI‰õI‰×I‰ÎfDI‹\$ H…ÛtVfDH‹{H…ÿt H‹uèýÿÿ…ÀuM‰ñM‰øH‰ÙH‰êL‰îL‰çè£þÿÿH‹H…ÛuËH‹mH…íu²HƒÄ[]A\A]A^A_ÃH‰êI‹L$xM‰ñM‰è1öL‰çAÿ×H‹mH…íu�ëÍff.„@AWAVAUATUH‰õSH‰ûHƒìHH‹GPL‹`H‰T$H‹WXL�l$0H‰L$H‹OhH‹~ H‹pH‰T$H� ÖÿÿH‰L$ L‰éH‰D$(HÇD$0ÇD$8è¦Bÿÿ‹T$8L‹d$0…Ò…H‹D$H‹} L‰éH�ÂÕÿÿH‹pHÇD$0èpBÿÿ‹D$8L‹l$0…À…çH‹E L‹°�M…öu3HƒÄH[]A\A]A^A_ÃL‹L$L‹D$L‰ùL‰òH‰îH‰ßèeýÿÿM‹vM…ötÍM9ôtwM9õtJM‹I‹L‰Æèƒåÿÿ…Àu¿H‹D$ H‹xèqåÿÿ…ÀtÈL‹L$L‹D$L‰òH‰îH‹L$ H‰ßèýÿÿë©fDL‹L$L‹D$L‰êH‰îH‹L$H‰ßèëüÿÿë„f„L‹L$L‹D$L‰âH‰îH‹L$(H‰ßèÃüÿÿéYÿÿÿfDH‹L$H‹T$H‰îH‰ßè“ýÿÿHƒÄH[]A\A]A^A_Ã@AWAVAUATI‰ôUH‰ýSHƒì8H‹GPL‹oXL‹`H‹~ H‰T$H�`ÔÿÿH‹pH‰L$H�L$ H‰D$HÇD$ ÇD$(è÷@ÿÿ‹D$(H‹\$ …À…¾I‹D$ L‹°�M…öu)ëpL‹L$L‹D$L‰éL‰òL‰æH‰ïèõûÿÿM‹vM…ötIL9ótWM‹I‹}L‰Æèäÿÿ…ÀuÄI‹è äÿÿ…ÀtÒL‹L$L‹D$L‰òL‰ùL‰æH‰ïè¬ûÿÿM‹vM…öu·HƒÄ8[]A\A]A^A_Ã@L‹L$L‹D$H‰ÚL‰æH‹L$H‰ïèsûÿÿéyÿÿÿfDH‹L$H‹T$L‰æH‰ïèCüÿÿHƒÄ8[]A\A]A^A_Ã@AWI‰ÏAVAUI‰õATI‰üUSHƒì(H‹GPH‹oXH‹~ H‰$H�L$H� ÓÿÿH‹pH‰D$HÇD$ÇD$è®?ÿÿ‹D$H‹\$…À…�I‹E L‹°�M…öuëDH‹}I‹6èüâÿÿ…ÀuHM‹vM…öt(L9óuâL‹$H‹L$M‰ùH‰ÚL‰îL‰çè�úÿÿM‹vM…öuØHƒÄ([]A\A]A^A_ÄL‹$M‰ùH‰éL‰òL‰îL‰çèXúÿÿëžfDH‹$L‰ùL‰îL‰çè.ûÿÿHƒÄ([]A\A]A^A_Ãff.„@AVI‰ÎAUI‰ÕH�ÒÿÿATUH‰õSH‰ûHƒìL‹gPH‹~ H‰áHÇ$I‹t$ÇD$èœ>ÿÿ‹D$H‹$…Àu0H…ÒtM‰ñM‰èL‰áH‰îH‰ßè·ùÿÿHƒÄ[]A\A]A^Ãf.„L‰ñL‰êH‰îH‰ßèúÿÿHƒÄ[]A\A]A^Ãf�USH‰ûHƒìöÍu H‹¿ðH…ÿtH‹GH‰õH‰Þÿ�…ÀuNH‹+H‹̺H…Ûuë-DH‹H…Ût H‹{H‰îè„÷ÿÿ…Àuè¸HƒÄ[]Ã@HƒÄ1À[]ÀH…ítÛH‹u0¹ H�=à.ó¦—À„À•À¶Àë¿f.„UL‰ÎH‰×L‰ÍSH‰ÓHƒìè9ÿÿÿ…ÀuHƒ{htHƒÄ[]ÀöC u쀥�ûëã�H‰øHƒì¹ H�=|.H‰Æó¦—€ڄÒ„й H�=j.H‰Æó¦—€ڄÒto¹H�=\.H‰Æó¦—€ڄÒt$¹H�=I.H‰Æó¦—€ڄÒt 1ÀHƒÄÃf�º H�t$H�xè-GÿÿH‹T$€:uÚºÿÿHƒÄH)ÂH‰ÐÃH�t$º H�x èýFÿÿH‹T$€:ºHEÂHƒÄÀATUSHƒìƒÿ‡–H‰õ‰ÿH�5“'I‰ÌHc¾Hðÿà€A‹+u@I‹4$H‹}HƒÄ[]A\éTBÿÿ@H‹1H‹}L‰D$H‰$è;BÿÿH‹$L‹D$…ÀuA‹+HƒÄ[]A\ÃH‹}è—þÿÿI‹<$H‰Ãè‹þÿÿH…Ût�H…Àt˜)ÉØuÒë�H�â)¾´H�=l*è�ï�AVAUI‰ýH‰×ATI‰ôL‰ÎUH‰ÕSèTýÿÿ…Àt[]A\A]A^À¿I�]pè¢HÿÿA‹UI‰ÆHÇ@HÇ@H‰(…ÒuM…ät_A‹D$…ÀtVL�mpH‹H…Àt*H‹A‹|$L‰êH‰îL�Apè³þÿÿH‹…ÀxHƒÃH‹H…ÀuÖL‰3[]A\A]A^Ã@HƒÃë¸f.„I‹UpH…Òu ëÕDH‰ÂH‹BH…ÀuôH�Zë¾ff.„H‰þ÷Çÿÿÿ?t=÷Çÿÿt÷ÇÿuEHÁî H�=,1ÀéÓ=ÿÿHÁîH�=÷+1Àé¾=ÿÿfDHÁîH�=Ö+1Àé¦=ÿÿfDH�=Ý+1Àé’=ÿÿf�HƒìH�í(¾ùH�=ï(èî@HƒìH�½(¾H�=Ï(èäí@AVI‰ÎAUI‰ÕATI‰üUSH‹@H‰óèsôÿÿ…À…‡H‹{ H…ÿt¾èXEÿÿ…Àu$öCHujI‹D$HL‰ñL‰êH‰ÞL‰ç[]A\A]A^ÿàH‹{ 1öè5EÿÿH‰ÅH…Àt9DH‹µH…ötöFHuL‰ñL‰êL‰çAÿT$HH‹{ H‰îèüDÿÿH‰ÅH…ÀuÌ[]A\A]A^Ãff.„H‹ 9·SH‰ûH‹=&·H‰ÈH)øH9ÃwSH‹ ·H�4H9ÆtpH‹·H‰ËH�<H÷ÒH!×H‹à¶H‰þH‰=æ¶H)ÖH)ÓH9Þv H‰ Ô¶H‰ÏH‰=¶[ÃH‰ÞH�=¦¶è�3H‹=²¶H‹£¶H‹ ¬¶H�4H9Æu�€ ̶ë‡f.„¶Gƒè<v ¸Ã€H‹W(H‹‚ðH9–ÇtßH…ÀtÚUSH‰ûHƒìH‹ª¨H…í„ÞHƒ}„H‹=ÔµH‹ŵH‰øH)ÐHƒø†}H‹¦µH�JH9Á„‘H‹5²µI‰øH�1H÷ÖH‹ yµH!òH‰ÖI)ÈH‰yµH)ÎL9Æv H‰=jµH‰úH‰XµH‹UH‰H‰HƒÀH‰E¸HƒEHƒÄ[]ÃDH�=µ¾èO2H‹ µH‹=!µé_ÿÿÿ@€ Aµécÿÿÿ@¿èþÿÿH‰ÅH‹C(H‰¨¨H‰mHÇEéÿÿÿ€H‰méôþÿÿff.„@AVM‰ÆAUI‰õATI‰ÌUH‰ýSH‰ÓH…ÿtH�-´H9Çt ƒ „ŽH‹EH…Àtƒx to¿0è•ýÿÿH‹UM…íH‰H�Ô²LDêH‰EÇ@ L‰` L‰h(I‹t$(L‰òH‰XH)òH‰PAöD$!u‹ T³HÓëLóH)óHÓãI‰\$8[]A\A]A^Ãf�L9` u‹ë»„H‰øH9O …eÿÿÿë¤�SH‰û¿èýÿÿH‹“ÅH‰XH‰[H‰„ÅÃff.„AVÇä±AUI‰ÕATI‰üU‰õS…É„~L‹5§Œ¿Xè­üÿÿH‰ÃHÇÇ@I‹FH‰I‰^fïÀ·&ÄHÇCPC@·CHf�âèC f%þC0 ÐL‰k@f‰CHƒý‡ÒH�÷ HcªHÐÿàf�¿Xè6üÿÿH‰ÃÇ@HÇë’f�KHL‰cL‰cH‹“ÃH‰H�C8H‰…ÃH‰Ø[]A\A]A^Ã�L‰cL‰c€KIëÐf�A€<$:tyL‰c1ÒL‰æH�=¦&1Àèò8ÿÿf�KHH‰Cë¤fDL‰cL‰cf�KHëŽL‰cL‰c€KHë€f�L‰cL‰céqÿÿÿ¾fH�=z#è�øéXÿÿÿf.„A€|$„{ÿÿÿI�D$€KHH‰Cémÿÿÿf�H…ö„·ATI‰üUH�-îSH‰óH‰ßAÿÔƒ{wz‹CHcD…HèÿàDH‹5áÂL‰çè¹ÿÿÿH‹H…ÛuË[]A\Ã@ƒ»„ÿtæH‹sL‰çè“ÿÿÿH‹H…Ûu¥ëØf„H‹s0L‰çètÿÿÿH‹H…Ûu†ë¹f.„¾àH�=š"è¯÷H‹H…Û…]ÿÿÿë��Ãff.„@H‹5Ù°é$ÿÿÿ@HÇH‰Ã@H‹AŠH�²°H9ÐsH�PH‰*ŠH‹ŠH‰H‰=ŠÃPèùÿÿf.„H‹ŠH�"°H9ÐvH�PøH‹@øH‰æ‰H‰׉ÃPèùÿÿATH‰øUS‰óH…ÿt%€?=t=¹H‰ÆH�=ž$󦾗Á€Ù„Ét"‰Þ¹[H‰Ç]A\éºüÿÿf.„¾H‹=ŒÂH‰ÕHÆ1Ò1Àè¥6ÿÿ¶Á‰Þ¹H‰ÇA‰Ôƒâ÷ˆøÀH‰êAÀìèlüÿÿ¶åÀAƒä[AÁä]ƒâ÷D âA\ˆÍÀÃff.„�H�=ù®é6ÿÿ@AUATUSHƒìH…ÿ„UL‹-ήA‰ôH‰ýM…ít0L‰ë„H‹;H‰îèU8ÿÿ…À„ÝH‹[H…ÛuäM‹mM…íuÐE…äu<¹ H�=y2H‰îó¦—À„Àt"ºH�5'1ÿèi4ÿÿH‰ê1öH‰Ç1ÀèÚô¿XèpøÿÿH‰ïI‰ÅèU6ÿÿIÇEI‰EH‹2ˆIÇEIÇEIÇE IÇE(ÿÿÿÿIÇE0IÇE8IÇE@IÇEHAÇEPL‰(I�EH‰܇ëf.„E…äuHƒÄL‰è[]A\A]ÃDºH�5&1ÿè¥3ÿÿH‰ê1öH‰Ç1ÀèôHƒÄL‰è[]A\A]ÃE1íë¸AWAVAUATUSHƒìXH‹H‰$H‰L$8D‰L$ H…ÛtdH�D$HI‰ÿI‰ôM‰ÆH‰D$H�D$8H�-aH‰D$„ƒ{w‹CHcD…HèÿàD¾§H�=2èGôI‰ß@H‹H…ÛuÈH‹D$8HƒÄX[]A\A]A^A_Ã@I‹T$8H‹D$8H‹{H+B(H‰CHI‹D$8H‰C@èü2ÿÿ‹ Þ¬ÓøH˜I‹T$8HD$8I‰ßH‰D$8öB!ušH+B(HÓàH‰B8ë�DI‹T$8H‹D$8H�5'¦H‹{H+B(H‹T$H‰C0I‹D$8H‰C(èÒ‹C-ƒø‡Š ‹ i¬H�5ª‹†¸Óà9ÐBÂÓèérÿÿÿ@I‹D$8I‰ßH‰C H‹CH‰$éÿÿÿ€I‹D$8I‰ßH‰¡¾éìþÿÿ@M…öt8H‹sH‹L$H�¾H‹¾ðH‹Gÿ�°…À„¢‹D$H…ÀtAÇI‹L‹D$8M‹L$8L‹hA·E$f%€f=„'AöE!€…lAö„$�…]A‹L$|ƒùÿ„¯ A‰MpA9IpsA‰IpA‹MpºHÓâ‹ g«I�DÿH÷ÚH!ÐH‰ÂL)Â…� I‹Q(L‰ÀH)ÐI‰E`I‹E8HÓèIÀAöA!…±L‰ÀH)ÐHÓàI‰A8éŸH�{0D‹L$ H‹L$8M‰ðL‰æH‹$I‰ßèPýÿÿH‰D$8éÆýÿÿfDƒ»„ÿI‰ß„°ýÿÿH‹{XH…ÿ„〣�þH‹T$H�5@¤è;ÐD‹<¿E…À…˃=ô¾t2H‹C0L‹kXº1ÿH�54#H‰D$ èR0ÿÿH‹T$ L‰îH‰Ç1ÀèÀðH‹C8H‰ÂH…À„0ýÿÿH‹ ¹¼H‹I‹Iƒéƒù†žH�¿£L‹T$8H9„€Hƒ{X„D‹«€L‰ÐE…펣D‰éAºIÓâI�LÿI÷ÚI!ÊL‰ÑH)ÁH‰L$ to‹5�½…öuHƒ{Xt^ƒ='¾tUH‹C0H‹L$ 1ÿL‰T$0A¸H�x#H�5©#H‰D$(è×6ÿÿH‹T$ H‹t$(H‰Ç1ÀèãïH‹S8L‹T$0f.„€J$L‰R0L‰R(HÇB`H‹SPD‹L$ H‰ÞH�{M‰ðL‰Ñè¡ûÿÿ¶ƒ�H‹S8H�5¿¢ƒÈˆƒ�H9ò„¸H‹r8¨…³H‹z(H‰|$8öB!„ËfDL‹C@M…À„H‹{`H…ÿ„ÆH�À1öL‰D$ è;×H‹S8L‹D$ H‰B0‹B ‰Æƒæ€‹�…öt;‰Á�á�ùt+Hƒz8…I‹H@H…É„éH‹I8H‹t$8H9q(†äH�5ù¡H9ò„@ûÿÿöƒ�…3ûÿÿ%=„mL‹j8‹ A¨IÓíH‹{hLl$8H…ÿtH‹T$H�5¬¡è§ÍH‹s@H…ö„êúÿÿH‹C8ö@ „ÜúÿÿH‹T$8‹L$ H‰V8…É…ôH‹sHH…ö„ºúÿÿH;s@„°úÿÿH‹C8ö@ u öƒ�@„™úÿÿH‹H0‹T$ IÍL‰n8…Ò„‚úÿÿH�{81ÒèçÏÿÿérúÿÿf�HÇCI‹T$8I‰ßH‹D$8H+B(H‰CéNúÿÿfDD‹L$ H‹L$8M‰ðL‰æH‹$H�=-¹I‰ßè¥ùÿÿH‰D$8éúÿÿH‹D$8I‹t$8H‹T$H‰D$HL‹kǼL‰ïèžÌ‹ø»ƒø„Ÿƒø„æÇÜ»A‹EƒàýƒøuI‹E€8.„#A€Œ$�I‰ßAö„$�…˜ùÿÿL9%A¸„\H‹T$HL‹D$8L9Âu|L‰D$8érùÿÿf�H�{é{ûÿÿ€I‹E(I+A(I‰E`L‰D$8I‰ßéGùÿÿ€H‹Q»H…À„ªH9Ø„Qÿÿÿ¾|H�=AèVíé;ÿÿÿ�L‰ÀI+A(I‰E`믋 "¦L)ÂH‹4$H‰ßHÓâI‹L$8è#òÿÿH‹L‹D$HA‹„$ŒI‰ßƒø„Kÿÿÿƒø„îI‹D$8ƒH é4ÿÿÿH‹IºH‹RºH‰D$8H…Ò„TûÿÿHB(H‰D$8éFûÿÿH‰—ºé¤þÿÿH‹r0H9r(„ýÿÿHƒ{H…ýÿÿ¶ š·ƒá€ù„þüÿÿI‰X@éõüÿÿH‹5&ŸH…ö„]üÿÿ¾CH�=OèdìéGüÿÿ€1ÿºH�5šè+ÿÿH‰Ç1Àè{ëé<ùÿÿfDH‹ ºH…À„H9Ø„þÿÿ¾…H�=ñèìéëýÿÿ�¶ù¶ƒà<…núÿÿH‹7·H‹@ƒx…YúÿÿèTÉH‰ÇH‰CXH…À„DúÿÿéÜùÿÿ€‹H ÷Á„SúÿÿH‹SH…Òt Hƒ:uƒzt/ºL‹k0H�5l1ÿè=*ÿÿH‰ÇL‰î1Àè°êH‹C8H‹S‹H H‹rH‹V(€H$H‰P0H‰P(€å…÷ÿÿH‹V8H‰P8éûöÿÿH‹S8H‹KH‹B ‰ÆƒæH…É„lH‹y8öƒ�@…åH;K@tD‹«€E…í~D‰éA¹IÓáL‰ÉI�|9ÿH÷ÙH!ÏH‰z0éûÿÿf„€x„ÜüÿÿéÎüÿÿH‹R�E1íH‰D$ H…À„-úÿÿ¾åH�=ƒL‰T$(è“êL‹T$(HÇD$ éúÿÿHÇD$ I‰Âéßùÿÿ1öH�='è1ôÿÿL‹D$HL‰@8é—üÿÿD‹Cx‹ 1£J�DÿHÓîI÷ØHðL!ÀH)øHÓàH‰B8éúÿÿH|$ é=ÿÿÿL‹k@‹B M…í„O¨t I‹u€>*„"öƒ�…Ò‹B ¨„Ç%=„·¶Ï´ƒà<„¥‹|$ …ÿ„™I‹uH�\&¹ H‰Çó¦—Á€Ù„ÉuzH‹ J¢H…ÉtnH‹9H‰ÆH‰T$(H‰L$ èØ+ÿÿH‹T$(…Àu H‹L$ HƒytDƒ=œ¶t;€=kµL‹*H�5iºuH�5£1ÿèô'ÿÿL‰îH‰Ç1ÀègèL‹k@H‹S8I‹E8D‹jpéæ÷ÿÿH‰ë¶éðúÿÿ1öH�=¬%èÈòÿÿI‰ÀéåøÿÿA‹MpéLöÿÿH‹4$HÓâL‰ÿL‰ÉH‰D$(L‰L$ èËíÿÿH‹D$(‹ ¨¡L‹L$ I‰ÀéKöÿÿI‹H@H…É„Ðøÿÿ…ö„L‹I8L‹T$8I‹y(M‹Y0L9׆H‹r8H…ö„ ‹ Y¡HÓîH‰ñLÑH9Ï‚òL9ß„+ºL‹k01ÿL‰D$ H�5_èú&ÿÿL‰îH‰Ç1ÀèmçH‹S8L‹D$ ‹B ‰ÆƒæéAøÿÿ€H‹Y³H‹@ƒx…?úÿÿéøúÿÿ¶ï²E1íƒà<…‹øÿÿéyøÿÿ¹ H�=$ó¦—Á€Ù„É…Âýÿÿ‰Æ‰ÁL‹-m ƒæƒÉ ƒþDÁM…ít@A…EHtA…ELtM‹mM…íuë1öH�=1$èMñÿÿH‹S8I‰ÅL‰k@éoýÿÿK�4H)þƒ»ŒuI‹q8‹ ; HÓîLÞE…í~D‰é¿HÓçH‰ùH�t7ÿH÷ÙH!ÎH‰r0€‹�éT÷ÿÿ€‹�éƒ÷ÿÿH‹H(H‹SXH�{8è2Èÿÿéö÷ÿÿH�v¾øH�=ÐèåÖDAWI‰÷1öAVE‰ÎAUI‰ÕATI‰üH‰ÏUD‰ÅSH‰ËHƒìè†ðÿÿH…Û•ÃAƒæI‰u?„Ût;¹ H�=F#L‰îó¦—Á€Ù„Éu ƒåI‰$t„Ûu#HƒÄ[]A\A]A^A_Ã@1öL‰ïè.ðÿÿëÔ@H�5Á1ÿºè%ÿÿHƒÄ1ö[H‰Ç]1ÀA\A]A^A_ékåff.„AWH�Æ"¹ AVAUATI‰üH‰×USHƒìH‰t$ó¦—À„À„й L‰æH‰×ó¦—À„À„¶L‹-ƒžM…í„Õ1íL�5¡f„L‰ëë H‹[H…ÛtBL‹;H…í„ÛL‰æL‰ÿèè'ÿÿ…ÀuܺL‰ö1ÿè5$ÿÿL‰â1öH‰Ç1Àè¦äH‹[H…Ûu¾M‹mM…íu¤H…ítb¿è%èÿÿL‰çH‰Ãè &ÿÿH‰H‹EH‰CH‰]HƒÄ[]A\A]A^A_úH�5À1ÿèÉ#ÿÿ1öH‰Ç1Àè=äL‹-®�M…í…+ÿÿÿºH�5 1ÿ1íè˜#ÿÿH‹T$L‰á1öH‰Ç1Àèäépÿÿÿ€H‹t$L‰ÿè 'ÿÿ…ÀIDíé ÿÿÿH‹‡¨Ã„AV1ÉA‰ÖAUI‰ýATU‰õH‰þH�=5�Sè'ÿÿH‰ÃH…À„£L‹`HM…ät?E…ötn�ý~uf1ÿL‰âH�5�è,µÿÿH…À„šóoM‰åH‹SH‰PH‰H‰ÃL‰kH‰«œHƒÃH‰Ø[]A\A]A^Ã�…Àx…ítçH‹H…ÀtL;`HuH‰Ã‹ƒœ9èuÝëÊE…öu†1ÛH‰Ø[]A\A]A^ÃDE…öt®1ÿºH�5èh"ÿÿL‰îH‰Ç1ÀèÛâ댺H�5ý1ÿ1ÛèD"ÿÿL‰æH‰Ç1Àè·âéeÿÿÿf�HƒìH‹ Õn1ÒL‹¬n¾èH�=P�èë¹=H��œº°H�5#´ÿÿH�=ì›H‰õuèà$ÿÿ…À„ÀH‹áu¹1Ò1ÿ¾HÇH‰@H�Q­H‰R­H�ƒ­H‰„­H�åšHÇ*­HÇ_­HÇÄšH‰Åšè¨èÿÿº1öH�=mH‰û›èþýÿÿH� ÷”HÇl›H‰å¬H‰H8H�Z›H‰³¬HƒÄÃfD1ÿºH�5âè!ÿÿH‰Ç1Àè{áéÿÿÿfDUH�-L SH‰ûHƒìƒ{w‹CHcD…HèÿàDH‹[ƒ{väHƒÄ[]ÀH‹{è·ÿÿÿH‹[ ëÁ�H‹{è§ÿÿÿH‹{ èžÿÿÿH‹[(먄‹�ˆ¿þÿÿƒùwµ¸HÓਠt©H‹{1Ò1öè ýÿÿH…Àt—Hƒx8u�HƒÄ1öH‰Ç[]ë�ATL�%ܹ U‰õSH‹w0H‰ûL‰çó¦—À„À„å�»„~uYH‹C8H…ÀtiH‹{XH‰@hHÇ@`H‰˜¨H…ÿtèïþÿÿH‹{`H…ÿtèáþÿÿ‹ƒ€ƒøÿtH‹S8‰Bp[]A\Ãf.„H‹s0H‹=5¬èð!ÿÿH‰C8H…Àu—H‹s0H‹=¬‰êèÕÿÿH‰C8H…À…xÿÿÿH‹¬L‹c0º1ÿH�5‡H‹@H‹(èSÿÿL‰âH‰ÇH‰î1ÀèÃßH‹C8é:ÿÿÿf.„1ÿºH�5"èÿÿL‰æH‰Ç1Àè�ßéöþÿÿff.„ATU‰õSH�_èL‹g0L9gðt¾àH�= èàH‹H…ÛtL9cHu"‹ƒœ9èt…Àxä…íuàHƒÃH‰Ø[]A\Ã@1ÛH‰Ø[]A\Ãff.„AW‰ðA‰÷AV%I‰ÎAUI‰ýATUSHƒìH‰$‰D$ f.„H�9ªH‹H‹X H…Û„yH‰ÝE1äH‹u8H…ö„?D‹F M…öt&D‰D$I‹•ðL‰éH‹=¤ªAÿÖD‹D$…À„$E1øH‹E A�à@„àH‰ÅH…íu¨M…ä…=D‰øƒàƒø„_D‰øƒà ƒø „'D‰ø%=„D‰ø%@=@„sD‰ø%=„ AöÇ„ôE1äH…Û„Âf�H‹s8H…ö„¯‹n M…ötI‹•ðL‰éH‹=Ú©AÿÖ…À„·D1ýH‹C ƒå„_H‰ÃH…Ûu·M…ä•ÂM…öHÇ$”ÀE1öЄ¨þÿÿL‰åHƒÄH‰è[]A\A]A^A_Ën M…ötI‹•ðL‰éH‹=g©AÿÖ…À„,D‰ø1è© @t% �å@ è… H‹C H…À„YI‰ÜH‰ÃH‹s8H…öu¡‹«ˆë½f„H…À„0I‰ÜH‰ÃH‹s8H…ötH‹n M…ötI‹•ðL‰éH‹=ߨAÿÖ…À„ÌD1ýH‹C �å@tµH‰ÃH…Û„ÿÿÿH‹s8H…öu¸‹«ˆëÔ„H…À„hI‰ìH‰ÅH‹u8H…ö…ÁýÿÿD‹…ˆéäýÿÿ„H‹m éêýÿÿ€H…À„€I‰ÜH‰ÃH‹s8H…ö…Qþÿÿ‹«ˆéjþÿÿf„H‹C H…À…öþÿÿégþÿÿfDH‹[ éSþÿÿ€H‹[ é=ÿÿÿ€H…Û„¯E1äH‹s8H…ötD‹n M…ötI‹•ðL‰éH‹=ʧAÿÖ…ÀtSD1ýH‹C �å@t*H‰ÃH…Û„ñýÿÿH‹s8H…öu¼‹«ˆH‹C D1ý�å@uÖH…À„ªI‰ÜH‰Ãë�f„H‹[ ë¹f.„D‰øƒàƒøtD‰øƒà ƒø …õüÿÿfD1ÒE1äé…ýÿÿfDH…Û„ID‰ùE‰ú1ö1í�ÉAƒâë#�¨u E…Ò…nýÿÿH‰Ý¾H‹[ H…Û„YýÿÿH‹S8‹ƒˆH…Òt‹B ‰Â1Ê÷ÂtÀ…ö…3ýÿÿ�âHDëëÁ@H…Û„oÿÿÿE1äëYf.„‹n M…ötI‹•ðL‰éH‹=‡¦AÿÖ…Àt@D‰ø1è©t�å@t,‹D$ …Àu$H‹C H…À„€I‰ÜH‰ÃH‹s8H…öu¨‹«ˆëÀH‹C H…Àuãé{üÿÿL‰åH‹$H…À„�üÿÿH‰(é…üÿÿ1íH…Û„züÿÿ€H‹S8‹ƒˆH…Òt‹B D1øöÄ HDëH‹[ H…ÛuÛéIüÿÿ1íéBüÿÿH‰Ýé:üÿÿff.„@AUATUSHƒìxH‹-o’H…í„®1ÉL�%&ëH‹m0H…í„“H‹U ‹BDÁè©@uâöEHuÜH‹š�H…Ûu#ëÎfD¾H‰ßè½ÿÿ¹H‹[H…Ût­H‹ChH…ÀtH‹=5¥H9¸ðtÞ÷C 0uÕ…Éu¿L‰æ1ÿºè€ÿÿH‹=‘¦H‰Æ1Àè?ÿÿë�DºH�5‘1ÿèUÿÿH‰Ç1ÀèËÙºH�5Œ1ÿè8ÿÿºH�5„1ÿI‰Äè"ÿÿºH�5u1ÿH‰Åè ÿÿºH�5f1ÿH‰ÃèöÿÿI‰èM‰áH‰ÙH‹=þ¥H‰Â1ÀH�5Eè¥ÿÿH‹-Æ‘H…í„ãI‰äL�-<H‹UH‹=Å¥L‰î1ÀèsÿÿH‹U L‰ç1ÀH�5-èN ÿÿL‰æH�= 1ÀèýØL‰â‹ HƒÂ��ÿþþþ÷Ñ!È%€€€€té‰ÁÁé©€€DÁH�JHDщÆ@ÆHƒÚL)â‰ÓHƒúwf.„è+ȃÃûuóH‹u(1ÀH�=Ýè‘ØHƒ}Ht‹UH…Ò…Ï‹EL…À…¤èÈH‹mH…í…*ÿÿÿ1ÿH�5A ºèÏÿÿH‹=à¤H‰Æ1ÀèŽÿÿöû¢„“H‹:‘ƒÃ�H‹-L¢H…Ût€H‰ßH‰îèŽÿÿH‹H…ÛuíH‹ޤH‹=ÿ¢H�5¨¢èSÆHƒÄx[]A\A]ÄH�=×1ÀèÂ׋}LèúªÿÿéAÿÿÿDè+Ç‹}HèãªÿÿéÿÿÿL‹§bH‹ Àb1Ò¾èH�=â�èÝ H‹=^¢1ÒH�5½Úÿÿèÿÿé2ÿÿÿAUI‰ÍI‰ÐATI‰üUSH‰óHƒì‹n ‰ïè ·ÿÿI‹u0¹ H�=Uó¦—€څÀuD¾Ò…Òt=M…Àt"H‹!¢H‰ÚL‰ÆH�=Ä¡H‹@ÿ�ø…ÀtHƒ{ht/HƒÄ[]A\A]Ã@Hƒ{huêH�‰H‰ChHƒÄ[]A\A]Éè%=„^¶g¡‰ê�åûýñÿ€æýƒà<DêA‹…Œƒø„T‰êƒâþƒøDêI‹M8H…Ʉĉè¶Q$ƒÈ÷#A ‰A ö„´‰ê‰Æƒâ÷1Ö�怄/%ÿÿþ�å÷ÿþ è‰A �å…SI‹E8‹Sp;Ppv‰Pp‹N�H‰Ch…Òu0H‹�H‰˜HǃH‰“H…Ò„MH‰š¿èlØÿÿÇ@HÇI‹T$H‰I‰D$H‰XHƒÄ[]A\A]Ãf�ƒÊ èL�T H‰ÞˆQ$H‹— ‰A H‹»ðH‹Bÿ�H÷Å€„8ÿÿÿ‹“ÄI‹E8‰�Äé#ÿÿÿf�‰è�åûýóÿ%ûýñÿöýŸEèé þÿÿ@H‹9 H‹@ƒxt7ƒåü�Íé˜þÿÿ�÷Å€t‹³Ä9±Ä…·þÿÿ‰Õé»þÿÿ€�åýþÿÿ�Íé^þÿÿ€H‹»ðèÿÿƒø&…˜þÿÿAÇEx€é‹þÿÿfD‰îL‰ïèÞòÿÿI‹M8é)þÿÿDH‰˜é®þÿÿ@AWAVAUI‰ýH‰×ATM‰ÄUH‰õL‰ÎSHƒìHH‰T$H‰L$ L‰L$(èÿÑÿÿ…ÀtHƒÄH[]A\A]A^A_Ã@A‹MI�]0…ÉuH…í„‹U…Ò„M‹}0M…ÿ…ÓéþfDH‹€ÐH…À„ÕL‹0A¸I‹GH‹ˆðH‹�ÐH…À„ìH‹AºH‰ÎL‰÷D‰T$ D‰D$H‰L$è‰ÿÿ…Àe…íD‹D$D‹T$ D‰ÀD Ðt5E…À„|E…ÒM‹t$H‹L$…iH‰ÎL‰÷èFÿÿ…À"…ª@H…ít‹}…ÿt ƒÿuw€M‹?M…ÿt0AƒuñA‹E…ÀtÑI‹D$ H…À…ÿÿÿM‹t$E1Àé'ÿÿÿfDH‹L$(H‹T$ H‰ßH‹t$è‘ûÿÿHƒÄH[]A\A]A^A_Ãf�H‹ E1ÒéÿÿÿDI‹OH‹t$L�ApH�Vpè:Òÿÿ…À‰rÿÿÿH‹L$(H‹T$ H�|$0HÇD$0H‹t$H‰|$8è+ûÿÿH‹D$0H…À„2þÿÿHƒ8t¾, H�=ýè&ÒI‹E0L9øt5H�-üüë@H‹H‹L9øtH…Àuð¾1 H‰ïèóÑH‹H‹L9øuãH‹D$0L‰8H‰HƒÄH[]A\A]A^A_ÃfDI‹GH‹€ðH‹é„þÿÿDATI‰ÔUH‰ýSH‰óH‹vH…ötèåÿÿÿH‹3H�}0L‰á1ÒèdúÿÿH‹sH…öt L‰âH‰ïèÀÿÿÿH‰ß[]A\é´ÿÿ@€?„ AVL�5ŸÿAUATUH‰ýSëX¿I‰Ýè“ÿÿI)íI‰ÄH‹Ö‰I�}I‰D$èxÿÿL‰êH‰îH‰ÇI‰$èÿÿ€;L‰%¬‰BÆ(t5€{H�kt+L‰öH‰ïè€ÿÿH‰ÃH…Àu˜H‰ïèÀÿÿH�\ë‰f„[]A\A]A^ÃÃfDH‹A›H…ÀtÃH‹ù‰H‹š�H…ÀtH9ÐuäSH‹�ˆH…Ûuëif„H‹[0H…ÛtGƒ{uñöCItëH‰ßè3ÞH‹{ H…ÿtÚ¾èðÿÿ…ÀtÌH‹C H‹@H‹H…Àt¼[Ãf.„H‹!�[ÀH‰Ð[Ãff.„‹Gƒø „tƒø …cUSH‰ûHƒìHƒ=*›t¾~ H�=²úèÇÏH‹[èÿÿÿ‹=ì›H‰ÆH‰Fš…ÿ…öH‰ßèîÿÿH‰çšH…À„–¾H‰ÇÇ`‡è7ÿÿ…À„—H‹=¸šH‹Y�‹5K�H‹Gÿ��…À„IH‹=’šH‹Gÿ�¸H‰YšH…À„‹5bH‹=kšè6ÿÿè1¸‹ ‹›H‹5Tš…É…Œ‹FDÁè%ÿÿ%ÿþ‰Â‰Á‹FDÁâ%þ ЉFD‹‚›…Ò„ž€É€‰Ê%þÁâ ЉFDöµ™ „‹€Í%þ�áÿÿÁá ȉFDHƒÄ[]ÃfDÀH‹GH‰Õ‡Ã@‹VD¶ f™‰ÐƒáÁè%ÿÿ€ù„_ÿÿÿ€Ì‰Ç‰Á‰ÐÁç%þ ø‰FD‹äš…Ò…bÿÿÿ�áÿéZÿÿÿ��áÿû%þÁá ȉFDHƒÄ[]ÃfD1ÿºH�5Úè­ ÿÿH‰ÞH‰Ç1Àè Íé’þÿÿ1ÿºH�5Šè… ÿÿH‰ÞH‰Ç1ÀèøÌéDþÿÿH�=™ŸÿÿèÿÿH…Àto1Òƒ=Ê™•Â9P t^H‹ˆ`H…Ét 9Q „éH‰ÆH�=Ÿ¿ÿÿèÚÿÿH‹ †H…ÀtH‹0H‰5ì—é©ýÿÿ1ÿºH�5‰èü ÿÿH‰Ç1ÀèrÌf�H‹5Á—é~ýÿÿ@1ÿºH�5ªèÍ ÿÿH‰Ç1ÀèCÌéÖýÿÿfDèc ÿÿƒøt.ºH�5z1ÿè› ÿÿH‰ÞH‰Ç1ÀèÌH‹˜é4ýÿÿf�H‹-Q—1ÿºH�5ÿúèf ÿÿH‰ÇH‰î1ÀèÙËë©€H‹1H‰5—éÛüÿÿ�U1ÀH‰ý¿SHƒì 5²–•À‰©–è<ÏÿÿH‰ïH‰ÃH‹O„H‰H‰E„è ÿÿHƒ=ˆ—H‰CtHƒÄH‰Ç[]é´¤ÿÿ@HƒÄ[]Ãf„U¾H‰ýSHƒìè}ÿÿÿ¿èÓÎÿÿH‰ïH‰ÃH‹~„H‰CèÿÿH‰n„H‰HƒÄ[]Ãff.„�‹ :……ÉuRH‹O–H…ÀtÿÿÿH‹H…Û…fÿÿÿëÈL‹cH‹H…Û…Tÿÿÿë¶fDH‹{H‰êL‰æè ÿÿÿH‹H…Û…1ÿÿÿë“H‹CPH…Àt ƒx„}H‰êH�5+èÿÿH‰ßèCüÿÿHƒ=Óu…UÿÿÿH‹C H…À„Hÿÿÿ„H‹pH…öt¹L‰ïó¦—€ڄÒ„»H‹H…Àu×éÿÿÿf�H‹C H…Àt ‹@…À…üþÿÿH‹{º1öè\×ÿÿH‹SHƒx8H‰PX…Ùþÿÿ1öH‰ÇèOÚÿÿéÊþÿÿf.„H…í„·þÿÿHƒ}8…¬þÿÿ1öH‰ïè"ÚÿÿH‹H…Û…:þÿÿé™þÿÿ�‹ƒ„…À„Ò-|ƒø‡tþÿÿ€‹�H‹{H‰Þè1ýÿÿ¶ƒ�Àèƒà�»„|”Â8Є�ǃ„ÿÿÿÿé0þÿÿH…ít Hƒ}8„­H‹{èçØÿÿH‹H…Û…¯ýÿÿéþÿÿfDÀ‹S…Ò…xþÿÿH�5f»ÿÿH‰êH‰ßè»úÿÿH‹spH…ö„kþÿÿH‰êH‰ßèéÿÿHÇCpéSþÿÿfDH‹{H‰ÚL‰æèýÿÿH‹H…Û…9ýÿÿé˜ýÿÿH‹Ù…¾H‹@ƒxADöé[ýÿÿ1öH‰ïèéØÿÿéDÿÿÿH‰-ÕséXýÿÿ„‹…À…–ATUSH‰ûH…ÿtKH;=ˆtBH‰õL�%›ÿÿ‹CƒøtWv=ƒø t<ƒøuH‹=Ì„H‰îè´ÿÿÿ@H‹H…Ût H9чuÈ[]A\Ãf.„…ÀuÜH‹{H‰îè€ÿÿÿëÎfDH‰êL‰æH‰ßèšùÿÿ븄Ãff.„@AWAVAUATUSHƒì(H…ÿtUH�D$A‰öA‰õI‰ÿH‰D$‰õAƒæAƒÍH�QãAƒw"A‹GHcƒHØÿàDI‹ƒtèá—�M‹?M…ÿuÏö²ƒ…ÛHƒÄ([]A\A]A^A_Ã@H‹=у‰îèjÿÿÿM‹?M…ÿu™ëÈH‹!„L‹`0I‹D‰îèIÿÿÿH‹ „H‹@0L9àt™I‰Äëß@I‹GM‹?H‰"rM…ÿ…Pÿÿÿé|ÿÿÿ@E…öu!M‹gM…ätH�5üåL‰çè3ýþÿH…À„úI‹0‰îèßþÿÿM‹?M…ÿ… ÿÿÿé6ÿÿÿfDA¶GI¨„»H‹´qI‰W@…ítE…ö„Hƒ=Ûp„DH‹D$L‰ÿL‹%É‚HÇD$H‰ÆH‰D$èKòÿÿ…Àu Ç�„Hƒ|$tUL9%–‚„8ºM‹gH�5Øî1ÿè‘öþÿH‰ÇL‰æ1Àè·H‹�JH‹t$H‹PH‰2H‹T$H‰P„L9=9p…SþÿÿHÇ(pM‹?M…ÿ…þÿÿé?þÿÿ€I‹‰îèÅýÿÿM‹?M…ÿ…ðýÿÿéþÿÿ@H�=Ìå1Àè‚¶HƒÄ([]A\A]A^A_è„øþÿÿI‹w H…ö„ëþÿÿ¶VDƒâ€ú„§€ú…ÒþÿÿöFE„ÈþÿÿA€H‰½þÿÿH‹Fƒx…¯þÿÿH‹†øö€Œ @„›þÿÿA¶GIƒàíƒÈAˆGIé‡þÿÿ€H‹D$I‹H‰H‹D$I‰éøþÿÿ„¶“�„Àt¾ðL‰çèÚõþÿH…À…çýÿÿL‰çè¹õÿÿéÚýÿÿ¨t•é+þÿÿff.„‹6n…Àt…öuH‰=³IÇnÃAWI‰÷AVA‰ÖºAUM‰ÅATI‰ÌUL‰ÍSHƒì‹t$@èuÑÿÿHƒxXH‰ÃH‰†n„`1ÀAƒþH�3oD‰³Œ”ÀÇCxH�KÁà ‰ƒˆH‹–HH9Ѓ?H�P�|$H€H‰zHH‹kHH‰”ÀÁàH‰ [H‰Â¶ƒ�ƒà¿ Јƒ�¨@t M…ä…šH�éã¾ÿÿÿÿL‰ïèF›…ÀˆÎ1Ò¹ëDƒÂɃú „’9Èwî‰S|¾ÿÿÿÿL‰çH�¥ãè›…Àˆˆ1Ò¹ëfDƒÂɃú tN9Èwò‰“€H‰ØH‰k`HƒÄ[]A\A]A^A_ÃfD1ÿºH�5ìè}óþÿ1öH‰Ç1Àèñ³éBÿÿÿ@1Òë²@1Òékÿÿÿf„L‰xXé—þÿÿºÿÿÿÿ뎺ÿÿÿÿéHÿÿÿèQ¶ÿÿ�S¿H‹3Gè>·ÿÿÇ@ HÇH‹SH‰H‹ºGH‰CH‰P[ÄH‹álH…Àt@H‹P HÇ@@H‰P8H‹@H…ÀuçH‹ ~H…Àt€ �üH‹@ H…ÀuðH‹1H‹€�H…Àt$DH‹P8H‰P@ö@!uHÇ@8H‹@H…ÀuáÃHƒìƒ=å€t"ÇÙ€1ö1ÿÇ#�èFéÿÿèQÿÿÿH‹~H…ÀtVD¶p~L‹¶~Aƒâf�‹�„…Òx.H‹P8H…Òt%Hƒz@u‹J ÷Á uH‹rH…öt"H9Vt%@H‹@ H…Àu¿HƒÄÃf.„I9�˜ußH‹ºH…ÿuC¶¸�@öÇu ƒÏ@ˆ¸�€Í€‰J H‹RH…ÒteH‰rH…ötLH‰VAƒ¨ ë–fDD‹O A÷Á€uA�á…vÿÿÿE„Ò…mÿÿÿH‹¿H…ÿuÑ대I‰�˜ë¯€I‰°�ë–€AVAUATU‰õSH‰ûljÇ×èúçÿÿƒ=ËtÇ¿[]A\A]A^ÃfD¶}L‹-ªH‹ÃƒàtH‹ §H…É…žH�rÿL‰éH‹=˜I‰ðH÷ÙI!øH!ñtBM…Àt=H‰ÖI1ýH÷ÞI…õt/LÁH9Êr'ÇEèxýÿÿ‰îH‰ßè^çÿÿ¶š|ƒàë f�Ç„À„WÿÿÿH‹'H…À„GÿÿÿH‹H‰0}H‰!}é-ÿÿÿ@H‹™|L�d ÿH÷ÚI!ÔH‹ß~H‹€˜M‰æI)ÖH…Àt^H)Ñ‹=jA¸H‰Î‹P öÂt8H‹H(L9ér/H9ñs*�â�út H‹P8‰ùHÓêI)Ö‹HpL‰ÂHÓâH÷ÚI!Ö�H‹@H…Àu·ÇU~M9õw8L‰5Q~è|üÿÿ‰îH‰ßèbæÿÿL9%K~†÷þÿÿL‰-.~éÜþÿÿf„¾!H�=ZÛèo°ëµff.„f�ATUSHƒìƒ=i{v…ÿ…†HƒÄ[]A\ÃfD‹Ê{H�\$ Ç»{A¼ÿÿÿÿ�hÿ…ÀtUfDD‰àë ‹ž{ƒÀ¿‰�{èßåÿÿèºûÿÿ1öH‰ßÇD$ èxýÿÿ‹D$ …Àuȃíƒ^{ƒýÿu±¿è§åÿÿè‚ûÿÿ¾1ÿèFýÿÿHƒÄ[]A\Ãff.„f�H…ÿt éVµÿÿfDÃff.„@AWAVA‰ÖAUATI‰üUSH‰óHƒì(H…öt1ÉëH‰ÃH‹H‰ H‰ÙH…ÀuïL‹-BM…ä„I‹$H…Àt'¹H�=ñÜH‰Æó¦—€ڄÒ…7IÇ$¿€èÕ±ÿÿH‰ÅHÇÇ@I‹EH‰(I‹$I‰mH‰E1ÀAƒ|$”À‰EI‹D$H‰ExI‹D$H‰E@H�E0H‰] H‰E8H�þ¦ÿÿD‰u(HÇE0H‰EHHÇEPHÇEXHÇE`HÇEhHÇEpH…ÛtVH‹CH‰D$H…ÀtHÇD$ I‰ÇI‰ÞA¼L�-™Û„L‰îL‰ÿèÅòþÿH…Àt@H�5´ÜL‰ÿèïþÿHƒøwHƒÄ([]A\A]A^A_Ã@A€<*uæA€|uÞƒD$ @M‹6M…öt M‹~AƒÄM…ÿu›HƒÄ([]A\A]A^A_Ã@Aƒü§H‰ØL‹8L‰|$M…ÿ„õH‹@H�5ôÚH‰ÇI‰ÆH‰$è„îþÿL�hA€<LEè€M‹wH�5ÆÚL‰÷è]îþÿH‹<$L‰öA€<HƒÐI9ÅIFÅH‰Âè~îþÿ…À„+ÿÿÿM‹?M…ÿu¾H‹D$éuÿÿÿ@¿€èö¯ÿÿH‰ÅHÇÇ@I‹EH‰(I‰mHÇEÇEHÇExHÇE@é%þÿÿfDH�5*ÚH‰ÇèañþÿH…À…¹ýÿÿÇždéªýÿÿ‹D$ AÁäDà=„×b=„º=…pþÿÿH�T¤ÿÿH‰EHH‹|$I‰ÜE1íL�5¿Ùë@M‹$$M…ät?I‹|$L‰öèâðþÿH…ÀuåIcÅAƒÅL‰dÅPë×=t|=…þÿÿH�6¥ÿÿH‰EHë L�%jÙë€H‹CH‰D$H‹|$L‰æèŠðþÿH…Àt IcÅAƒÅH‰\ÅPH‹H…ÛuÑéÁýÿÿH�©ÿÿH‰EHéLÿÿÿH�å§ÿÿH‰EHé<ÿÿÿH�…¦ÿÿH‰EHé,ÿÿÿff.„�AUI‰ý¿(ATI‰ôUH‰ÕSHƒìH‹A>èL®ÿÿÇ@HÇH‹SH‰H‰CL‰hL‰`H‰h HƒÄ[]A\A]Ãff.„�Hƒ=0ct…öu ‹hu…Àu H‰=c‰5WuÃf.„H‰=Ù=ÄUH‰ý¿SHƒìH‹«=è¶­ÿÿÇ@ HÇH‹SH‰H‰CH‰hHƒÄ[]Ãf�ë fDHƒÇ€?u÷Ãff.„UH‰ý¿(SHƒìH‹K=èV­ÿÿÇ@HÇH‹SH‰H‰CH‰hHƒÄ[]Ãf�ATI‰ôU‰ý¿8SH‹ =è­ÿÿÇ@HÇH‹SH‰H‰CL‰`‰h[]A\Ã�AWA‰ÿ¿PAVI‰öAUI‰ÕATI‰ÌUL‰ÅSHƒìH‹·<è¬ÿÿÇ@ HÇH‹SH‰H‰CD‰xL‰pL‰h L‰`(H‰h0HÇ@8HÇ@@HÇ@HHƒÄ[]A\A]A^A_Ãff.„UH‰ý¿SHƒìH‹;<èF¬ÿÿÇ@HÇH‹SH‰H‰CH‰hHƒÄ[]Ãf�U‰ý¿SHƒìH‹ü;è¬ÿÿ‰hHÇH‹SH‰H‰CHƒÄ[]Ãff.„H‹abSH‰ûHƒxt$ºH�5�×1ÿè›çþÿH‰Ç1Àè¨H‹2bH‰XH‰X€HI[Ãff.„�‰=’`Ãf„UH‰ýE1ÉH‰ðSH‰ÓH‰ÂHƒìH‹=aHƒXH�wHA•ÁE1ÀHƒ`A•ÀHƒÇ@è‚ÁÿÿH‹ë`H�TaH‰hPH‰XpH‹;H9ÐvH�PøH‹@øH‰ ;H‰ú:HƒÄ[]Ãèªÿÿff.„AWI‰ÿAVI‰öL‰ÎAUATM‰ÄUSH‰ËHƒì(H‹l$`H…ÉtFH‹ º:H�D$H�=&aHÇD$H‰D$H9ùƒëH�yH‰=Œ:H‹=}:H‰9H‰s:¶ œrƒá€ù„ÈAöG „½j1ÉL‰÷E1ÉRE1À1ÒL‹-rè9ñÿÿH…íY^I‰ÆH�@L‰þHDèL‰ñ1ÒH‰ïè)ÐÿÿH…Û„°AöG „…H‹C@H�5ÙãH…ÀtH‹0H‹KHH…ÉtH‹ H‹Sp1ÿèkþÿÿH‹Ü9H�ý_H9І%H�PøH‹@øH‰½9H‰®9I‹F8H…À„ôI‹T$H…Ò„£H‹H…Ò„?H9ÐtEH;Bt?H‹HH‹pH…É„sH‰qH…ö„NH‰NH‹JH‰PH‰HH‰BH…É„H‰AHƒÀHƒ|$I‰D$tI‹D$ L‹L$H…À„ÉH‹I‹\$(I‰H‹T$H‰H‹ÿ8H‹|$H‹PH9:„}I‹EH�SàM‰L$ IÇEH‰P(H‹H‰P H…ÒtH‰B(H‰HƒÀ Iƒ}I‰D$(„MHƒÄ(L‰ð[]A\A]A^A_Ã1ÿ‰T$ è=ƒ‹T$ H‰Æé,þÿÿ�1É1ÒH�5Tâ1ÿèþüÿÿéŽþÿÿf„1É1ÒH�54â1ÿèÞüÿÿëŸ@H‹HH‹pH…É„WH‰qH‹¬pH…ö„sH‰NH‹Š˜HÇ@H…É„?H‰HH‰AH‰‚˜é¶þÿÿH9¹otWH‹S8H…ÒtH9ÐtIHƒÂI‰T$é8þÿÿH‹K(H…Ét/€‹‘„…ÒxH‹Q8H…Òt Hƒºðu½H‹I(H…ÉuÚf�H‹ pH�Â�I‰T$éåýÿÿ„L‰HL‹L$éuþÿÿf�L‰-1oé§þÿÿ@H‰ßHƒÃ ètÿÿH‹I‰H‹T$H‰I‰\$(é&þÿÿ@H‹¡oH‰‚�éØýÿÿDH‹5‰oH‰Ž˜é£ýÿÿDH‹=qoH‰·�é~ýÿÿDH‹YoH‰²�é¡þÿÿDHÇ@H‰‚�éµþÿÿ@H‰Š˜é…þÿÿ该ÿÿèÊ¥ÿÿf.„H‹GH‰0H‰WÃ@Hƒ=@nt…ÉtÃ�‹Îoƒøtƒøu H…ÒtH‰nÃH…öHEþH‰úëé@H‰úëàff.„ATI‰ü¿ U‰õSH‹6è&¦ÿÿHÇÇ@H‹SH‰H‰CL‰`‰hH‹Ç][]H‰Æ]A\ÃS¿ H‹Ó5èÞ¥ÿÿH� G\Ç@ HÇH‹SH‰H�PH‰CHÇ@H‰PH‹Ÿ5H9ÈsH�HH‰ �5H‹ €5H‰[H‰u5Ãè¤ÿÿff.„@H‹a5H�‚[H9ÐvH�PøH‹@øH‰F5H‰75ÃPè`¤ÿÿAWI‰ÿ¿0AVM‰ÆAUM‰ÍATA‰ÔUS‰ËHƒìH‰t$è¥ÿÿH‹|$H�æÐ1öHÇH‰ÅL‰xèˆD‰eH˜‰]H‰EL‰u L‰m(Hƒøt)Hƒ=�l…‹H�tlH‰+HƒÄ[]A\A]A^A_Ãf�A ÜtÒH‹TlH…ÀtÔHƒxH�Clt�H‹H‹H…ÀtÁHƒxuîHƒxuçºH�5 Ù1ÿèDàþÿ1öH‰Ç1À踠H‹H‹H…Ût1H‹H…Àué|ÿÿÿH�ékH‹H‹H…À„fÿÿÿHƒ8H‰ÃuèéXÿÿÿH‰ÃéPÿÿÿ@SH‰û¿è‚êþÿH‹[k€ lH‰XH‰Ç@[H‰>kÃff.„f�SH‰û¿èBêþÿH‹k€ ÕkH‰XH‰Ç@[H‰þjÃff.„f�UH‰ýSH‰óHƒìHƒ=üXt*¾H�=tË艠H‰-âXH‰ÓXHƒÄ[]Ã@Hƒ=ÀXuÌHƒ=®XuÂëÑf.„SL‹ XE1É1ÉjH‹5šXºH‰ûjèûéÿÿHƒ=kXXZt_¿èuéþÿH‹žXH‰Þ¿AH‰PH‹CXH‰tÿÿL‹{H‹SeM…ÿ„¹L�%ãÑH…Û„ï€A¶GH‹{@ƒàH…ÿ„Ó„À…SL‹sHM…öuëX„M‹6M…ötHI‹oI‹vH‰ïèhÛþÿ…ÀuäA¶GA2F¨8u׺L‰æ1ÿè¨×þÿH‰îH‰Ç1Àè˜M‹6M…öu»H‹H…Û…tÿÿÿH‹�dM‹?M…ÿ…QÿÿÿH‹$L‹x8M…ÿ„¿L�%Ñf„H…Û„€A¶GH‹{ ƒàH…ÿ„ã„À…L‹s(M…öuëX„M‹6M…ötHI‹oI‹vH‰ïè˜Úþÿ…ÀuäA¶GA2F¨8u׺L‰æ1ÿèØÖþÿH‰îH‰Ç1ÀèK—M‹6M…öu»H‹H…Û…tÿÿÿH‹ÍcM‹?M…ÿ…QÿÿÿH‹ $H‹D$L‰iH‰AXA€}…nH‹$Ç@H…Ûué…H‰ÃH‹H…ÀuõH‹$H‰HƒÄ[]A\A]A^A_À„À„ÿÿÿH‹H…Û…ôþÿÿé{ÿÿÿ€„À„-þÿÿH‹H…Û…þÿÿé‹þÿÿ€L‰þè`ÞþÿI‰ÆH…Àué3ÿÿÿM‹6M…ö„$ÿÿÿI‹oI‹vH‰ïètÙþÿ…À… ÿÿÿA¶GA2F¨8uÏL‰æ1ÿºè°ÕþÿH‰îH‰Ç1Àè#–ë±�L‰þèøÝþÿI‰ÆH…ÀuéûýÿÿM‹6M…ö„ìýÿÿI‹oI‹vH‰ïè Ùþÿ…À…ÔýÿÿA¶GA2F¨8uÏL‰æ1ÿºèHÕþÿH‰îH‰Ç1À軕ë±M‹?M…ÿ…€þÿÿé‡þÿÿM‹?M…ÿ…Ÿýÿÿé¦ýÿÿ‹‘NƒÀ‰ˆN‰Aé†þÿÿL�-”ôH…Û„œüÿÿé#üÿÿH�bézþÿÿff.„@AWAVAUATUSHƒìHH‹=ÓaH…ÿtè±pÿÿH‹òbH‹53OH�=ÜÅÿÿH‰5Oèp�ÿÿè[xÿÿè&H‹¿MH…Ûtf.„H‹{è7nÿÿH‹H…ÛuïèúÝþÿ…À„"H‹“bH‹=ÔN1öƒ[MH‰ÔNèÏÛÿÿöi`…Hƒ=Ò`t¾gH�=2ÀèG•H�@MHƒ=@MH‰©`„3H‹=¬`H…ÿtèêšÿÿH‹=£`H…ÿtèÙšÿÿèä}Hƒ=Ôa„¯Hƒ=ÞM„¡ºH�5ÌÍ1ÿè•ÓþÿH‰Ç1Àè •H‹-´MH…ítxL�%&Á„H‹uL‰ç1Àèâ”H‹}è‰ÓþÿH‰ÃHƒø‡l@èC„HƒÃHƒûuñH‹uH…ötH�=bÃ1À袔H‹uH�=UÃ1Àè�”H‹mH…íu—èòÜþÿH‹KLL�%4_H…Û„¸öCI …žH‹k ‹0`H‹5]_H‰ïè…ÔþÿI‰ÅA¶$ƒà<„Böî^…5M…턜‹… …ÀtR‹Ü_E1í…À„1H‹ _H�5³^H‰ïH‹@ÿ�@…À…ž‹¨_…À…pL‰ïèˆÕþÿ„H‹[0H…Û…KÿÿÿHƒ=Û_thH‹-rKE1íH…í…‡fD1É1ÒH�5Á1ÿèÎöÿÿ¾p¿H‰ÃèìÛþÿH� ÕoÿÿH‹=Ž_1ÒL‰hH‰ÆH‰X8H‰HhÇ@`ÿÿÿÿè±øÿÿèì*D‹=�_E…ÿ… ¿H�-8ÍèËÈÿÿH‹ŒKH…ÛuTéf.„H‹`H‰C H‰C8H‹{0H…ÿt èCqD‹-`E…턳H‹ì_H‰C(H‹[H…Û„ËH‹{H…ÿtÁè qD‹5Þ_E…öu¡L‹+H‰î1ÿºèÑþÿH‰ÇL‰î1Àè‚‘ë�H‹X8H‰ßè”ÛþÿH‹} 1ÉI‰ØH‰ÂL‰öI‰ÇèýÐþÿ…À„% LûI9ßs)DL‰þL‰ï1É1Òè‰õÿÿL‰ÿI‰ÅèÞÐþÿM�|I9ßrÜA�N € H‹m0H…í„þÿÿH‹} H�5ÉÀèÏÒþÿI‰ÆH…ÀtÛérÿÿÿf�M…í„O L‹5ð\H‹EI‹V‹J9H„°ýÿÿöED „¦ýÿÿH‹ 1ÿL‹8ºH�5¦ÊH‰L$è$ÐþÿH‹L$M‰ðH‰êH‰ÇL‰þ1ÀèŒ�M…í…gýÿÿ‹J]…À„²ýÿÿH‹={\èÓþÿH‰ïI‰ÆèûÒþÿºH�5¯Ê1ÿI‰ÅèÅÏþÿL‰ñH‰êL‰îH‰Ç1Àè2�H‹[0H…Û…½üÿÿémýÿÿL‹+ºH�5YË1ÿèŠÏþÿH‰ÇL‰î1Àèý�H‹[H…Û…5þÿÿÇæ]ö¦[ …‰¶’[ƒà<„7 ‹-]H‹=¢[…À„šƒø„¹ÇD$8H�\$8H�-•ƒÿÿë H‹=q[H‰ÚH‰îèÕþÿ‹D$8ƒÀ‰D$8ƒøvÞÇD$8ÿÿÿÿH‹=G[H‰ÚH�5UƒÿÿèðÔþÿH‹=YIèTÑÿÿ¶5ýZ‰ðƒà<„° ƒæ@tH‹=4[H�5ÝZH‹Gÿ�ðöÒZ …F è±xH‹= IE1í1ÛèàaÿÿH‹=ùH1Ò1öƒ~Gè ÒÿÿL‹=2Z¹þÿÿÿëVH‰èM…ít)I;m t#¾ H�=TºH‰l$èd�I‹/H‹D$¹þÿÿÿ‰ÊA+–„I‰ÅA‰–„I‰îH…Û„M‰÷I‹/I‰îH…í„F‹E…Àt—ƒøuâH‹}1Ò1öè}ªÿÿH…ÀtmD‹U¹þÿÿÿE…ÒuVM…í… H‰Çèy^ÿÿI‹?¹þÿÿÿH‹zYH‹?H‹2H‰:H‹H…ÒI‰„J H‰0E1íL‹5UYéxÿÿÿD‹ˆ„E…ÉyªH‹@(H…ÀuëH‹]H�5èÌ1ÿºèDÍþÿH‰ÇH‰Þ1Àè·�€L‹5yFL�-Þ¼H�-Ë@M…ötgfDI‹F H‹˜�H…ÛuëFfDH‹[H…Ût7Hƒ{huðAöFH„uI‹F H‰ßH�5YH‹@ÿ�ÈH‹[H…ÛuÍ@M‹v0M…öuŸD¶%çXAƒäA€ütWH‹=&YH�5ÏXH‹Gÿ�H‹=YH�5DòèÂÎþÿH…À„¹D¶%¡X‹ KZ‹P Aƒä…É„ƒÊ‰P H‹XH…ÀuéDH‹@ H…À„H‹P(H…ÒtêHƒxHuãHƒx`uÜHƒxXuÕH‹J@H9H@uËH‹RHH‰PHëÁ�H‰Ãéðýÿÿ„H�5 Ç1ÿºèÍËþÿH‰îH‰Ç1Àè@Œ‹ Y…À„bùÿÿH‹[0H…Û…½øÿÿémùÿÿH…Û„gþÿÿºþÿÿÿë H‹[ H…Û„Sþÿÿ‰Ð+ƒ„‰ƒ„I9Ýuàé;þÿÿ‹{ è@mÿÿ…Àt H‰khé[þÿÿL‹ ¹L‰ïL‰Îó¦—À„Àu7A¶$ƒà<„ÇH‹ ØEH…É„ÕH�y1ÒH‰Þè)µÿÿé þÿÿ@‹ÖXƒø„áƒø„p‹5ÚX…ö„² ¹~‰ÊL‰ÎH‰ß‰L$L‰L$è¯uL‹L$‹L$H…ÀI‰Ç„‚ƒ=X…¥ýÿÿI‹O01ÿL‹»ðºH�5´ÆH‰L$èzÊþÿH‹L$L‰úH‰ÞH‰Ç1ÀèåŠéhýÿÿ‹=šW…ÿ„ZýÿÿH‹ EH…É…+ÿÿÿº1öH�=èïèߦÿÿH‰ÁH‰ÝDé ÿÿÿ‹æW…À…¢ A€ü…8èSt¿P1íè—ÔþÿL‹=ÀUÇD$ I‰ÄM…ÿ„9@H�±U1ÛL‹0M…ö„“A‹†„…ÀxxM‹npM…í„ØIƒ~8L‰ítaL‰íë&f„I‹v8‰ØƒÃI‰4ÄÇEH‹mH…ít3I‹wH‹}èÍþÿ…Àuæ;\$rÌÑd$‹t$L‰çHÁæèHÊþÿI‰Äë³L‰íM‹v M…ö…pÿÿÿI‹(1ÉH…ÿtH�x¹1öè§o‰ÁI‹ E1ÉH…ÿtH�g¹1ö‰L$è‡oI‹ ‹L$I‰ÁE1ÀH…ÿI‹wH‹=kUA•À1ÒIƒ(ATSA‹G•ÂPA‹GPèÍþÿHƒÄ …À„'M‹?M…ÿ…ËþÿÿL‰çL�%ðÈè$ÓþÿH‹-mTH…í„‘@D‹µ„E…öxtHƒ}8tmH‹]pH…Ûu ëbf�H‹H…ÛtXD‹kE…íuïL‹k¹L‰çL‰îó¦—À„ÀtÕL‹u0ºH�5ÍÄ1ÿèÈþÿL‰êH‰ÇL‰ö1À莈H‹H…Ûu®fDH‹m H…í…sÿÿÿö/T…^1öƒ=5T@—Æ1ÿè²Öÿÿè rH‹vAH…Ò„­H‹nAL‹?TL�X;‹ ÊAL�ÐëE@I‹RL‹N(€zM‹Ih•¶ÒL‰N(ƒÂHcÒ€<ouI‹Q8HÓêH‰V0€HƒÀL9ÀtGH‹0·Vf�âÿfƒúuåH‹~€?.u¤€iuÖH‹V(HƒÀH‹R8L‰^(HÓêH‰V0L9ÀuÃf.„¿è6¾ÿÿèqqè¬p€=MT…÷H‹À@H�-ÅH…ÛtU@H‹3H‹=6S1É1ÒA¸èŸÉþÿH…Àt ¶@ƒè<vL‹#H‰î1ÿºè�ÆþÿH‰ÇL‰æ1Àè‡H‹[H…Ûu¯¶ÀR‰ÂƒâC€ú„ƒà»<„€úB„H‹5š?H…ö„¹ H‹=ªR1É1ÒA¸èÉþÿH…Àt¶H�Qý€ú†žH‹=_?1ÒH�t$8è«ÃþÿH‹T$8€:… H‹=†RH‰ÆèNÏþÿ…À„8HƒÄH[]A\A]A^A_ÀAƒ¾Œ„…üÿÿI‹F8H…À„xüÿÿö@ „nüÿÿIƒ„cüÿÿH…í„§I‰íéñûÿÿ€1ÿºH�5úÁèuÅþÿH‰Ç1Àèë…é·üÿÿfD‹æP€úB…øþÿÿ‹×P ÍP…æþÿÿ1ÿºH�5‰Ãè,ÅþÿH‰Ç1À袅éÄþÿÿDöED „õÿÿL‹5—QH‹EI‹Vé¸ôÿÿf.„L‰ðëH‹hpH…í…DÿÿÿH‹@ H…ÀuêºH�56Ä1ÿ1íè½ÄþÿH‰Ç1Àè3…éqûÿÿfDH‹s(I‹U H‰V H…Ò„›H‰r(H‹P I‰U H‹P H…Ò„º L‰j(H‰C(1ÿ1öH‰X f.„‰Ê+“„‰“„H‹S8H…ÒtHƒºðt H…öH‰×HDòI9Ýt H‹[ H…ÛuÇ1ÛH…ÿ„köÿÿH‹P8H…Ò„â1ÛH9ú„SöÿÿL‹NL‹GM…É„¦ M‰AL‹GM…À„¢M‰HL‹BL‰GM…À„zI‰xH‰V1ÛH‰ré öÿÿf.„1ÿºH�5 ¿è�ÃþÿL‰öH‰Ç1Àè„é¶òÿÿ¶ÁOƒà<„�ûÿÿH‹=‡RH�t$8ÇD$8èMÊÿÿD‹\$8E…Û…iûÿÿ€%‹Oïé]ûÿÿH‹ÙOH…Û„ªôÿÿH�-iOf„H‰îH‰ßèåÌþÿ…Àu ÇËPH‹›ðH…ÛuÛépôÿÿfDH‹5ñH‹=rOè-ÅþÿH‰ÅH…À„) L‹`(…Û…E H‹=NOL‰æèÌþÿ…À…ÈüÿÿºH�5jÁ1ÿè›ÂþÿH‰Ç1ÀèƒHƒÄH[]A\A]A^A_Ãf�H‹P(H‹JhH…É„QüÿÿH‹q(H‹R`H‹=ðNHP0HÖè´Ëþÿ…À…füÿÿH‹�;ºH�5ÙÀ1ÿè2ÂþÿH‰ÞH‰Ç1À襂HƒÄH[]A\A]A^A_ÃfDD‹IOE…Û…¹òÿÿé+óÿÿHƒÆ H‰5ÕMéYýÿÿ„èûr1ÛéŒîÿÿ@H‹YNH‹˜�H…Û„±÷ÿÿL�%²f�L‹+L‰ïèÕÁþÿH�x è<ÌþÿL‰êL‰æH‰ÅH‰Ç1ÀèIÊþÿH‰ÞH‰ïèî^ÿÿH�}ÇE.sizH‰ÞÆGeè×^ÿÿH‰ïèïËþÿH‹[H…Ûu¦éI÷ÿÿ�H�=YSÿÿè„ÄþÿI‰Åé»îÿÿ@L‰=É;éªóÿÿ@1öH‰ßL‰L$èI€ÿÿL‹L$…À‰Á…0öÿÿé0öÿÿDH‹ I:H…Éué?òÿÿ€H‹I0H…É„+òÿÿöAI uíH‹A H‹€�H…ÀtÝD‹P öÆ u€æ‰P H‹@H…Àuéë¿€H‹)ML‹52MH‹@D¶hM…ö„ÔîÿÿA€ýL�=õHÀHƒÀH‰D$f„I‹®�H…ítG@H‹U¶„ÀtM¶ÈAöOŒu<_u!H‰Ð@HƒÀ¶„Ét-¶ñAöwŒuë€ù_tæH‹mH…íu½M‹¶ðM…öu¡éPîÿÿ@H‰×H‰T$èÀþÿH�x è‚Êþÿ1ÿE„íH‹T$Dˆ(@•ÇH‰ÃH�5>°HÇ1Àè}ÈþÿH‰îH‰ßè"]ÿÿDˆkH‰îH�{H‹D$ºopHØÇ__stf‰Pèû\ÿÿH‰ßèÊþÿH‹mH…í…&ÿÿÿédÿÿÿ�H‹9H…À„NõÿÿH‹9L‹5âKL�,Ãë@ÆEHÇE(HƒÃI9Ý„õÿÿH‹+öEuêH‹U(H‹BhH…ÀtÑL9°ðuÈH‹0H‹:è¥Âþÿ…ÀtÅë·€H‹=�KèÉþÿº�HÿH‹mKHÓâH‹˜�H�lÿH…ÛtYL�%Ú»f�öC t:H‹K(H‹C8H�H!êt H!éH9Ê‚­H‹S0HÐH!ètH!êH9ЂDH‹[H…Ûu·H‹K‹€ ƒø†r÷ÿÿ‰Ç1íHÁçèôÈþÿI‰ÅH‹ÚJH‹€�H…À„ÿ f.„‹P öÂt-�â�útHƒx8tH‰êHƒÅHÁâLêH‰ÇBH‹@H…ÀuÂH‰D$Hƒý†¨ H� ŒOÿÿH‰îL‰ïL‰ëºE1ÿ覼þÿI‰êH‹D$E1ÉIÁâMê@L‹#AöD$ t8‹ Ç7I‹T$8M‹t$0HÓêM�\ÿH…ÀtM9þ†OM9Ï‚FM‰ßM‰ñL‰àHƒÃL9Óu´H� =OÿÿH‰îºL‰ïè-¼þÿI‹u¸L‹N(L‰ÉDH‰ÂHÁâI‹TH‹R(H9ÊtwHƒÀH‰ÑH9èuß‹ 97H‹F8I�]E1öHÓèM�|ÿëG@L‹#‹ 7D‹CI‹D$8M‹T$(HÓèM�\ÿE…ÀuM9׃ÜM9Ï‚ÓHƒÃM‰ßM‰ÑL‰æIƒÆI9îu´L‰ïL�%rºè-ÇþÿH‹Ž6H…Ûué�õÿÿ@H‹[H…Û„Œõÿÿ‹KP…ÉtìH‹k8H‹C(L‰â1ÿHC L‹+A¸H�5SºH)ÅH‰éè¨ÃþÿH‰êL‰îH‰Ç1Àè¸|ë®fD1ÿºH�5ú±è¼þÿH‰Ç1Àè“|é¼çÿÿfDH‹L‹5J5L‹%K5H‹-”GL‹8H‹XH‹~GH‰D$è¶…À…LH‹;1öèbÃÿÿH‹ËL98t¾¯H�=ЧH‰D$èà|H‹D$H‹HL‹+H‰XHÇL95Ò4H‰L$t¾¯H�=•§èª|M‹<$L‹5·4L‰%°4H‹D$IÇ$H9äFt¾¯H�=\§èq|L‹eH‹ÎFH‰-ÇFHÇEM…í„ìæÿÿH‹W4H‹ FH…Àu)ë9f„H‹H H…Ét Hƒ¹ÐHDÐH‹@0H…Àt¶HIöÁ tÙƒá@„’H‰™4H…Ò„­H‹¹H‹ H‹t$H‰L‰*H;P„H‹B8H‰H�B8H9'FL‰b8„.HƒzH�¹3H‹º3„óH‹J0HƒÂ0I‰L‰:H9Є/L‹5–3L‹=‡3H‹=À4¾ƒD3è¿ÁÿÿL9=h3t¾¯H�=0¦èE{M‹L‰5S3IÇM…É„ÉåÿÿL�„E@I‹y I‹L‹‡ÐM…ÀIEøH…À„"1É1öë@H…Òt Hƒx0HEÈH‹@8H…Àt"H‹P H9úuàH‹P0H…Ò…ûH‹@8H‰ÎH…ÀuÞH�N0H…ö„ÒH‹H…Àt/f.„ö@I@uH‹P HƒºÐ„˜H�H0H‹@0H…ÀuÛI�q0M…À…L‰ I‹Q0I‰A0I‰ÑM…É…7ÿÿÿéðäÿÿf�1öºH�=§§è­•ÿÿHƒxXH‰Á…ØíÿÿA¶$ƒà<t öC …Âíÿÿ1ÿH‰L$è�WH‹L$H‰AXé¨íÿÿ€H‹ñ1H‹=Ê H‰[EH…ÿ„¯äÿÿè¥ÿÿé¥äÿÿH‹5© 1ÛH‰5È1é2òÿÿL‹»ðºH�5]´1ÿL‰L$èY¸þÿL‰úH‰ÞH‰Ç1ÀèÉxL‹L$éWíÿÿ€ƒâ÷‰P éçëÿÿDº‰ÎL‰ÏèÉ”ÿÿHƒxXI‰Ç„ÑI�L‰ù1ÒH‰Þè¢ÿÿéKíÿÿDL‹+ºH�5Á´1ÿèÚ·þÿL‰îH‰Ç1ÀèMxéHùÿÿ„I�U H‰�Cé:óÿÿD¶%èCAƒäéYëÿÿ€1ÒH�5lÿÿ誽þÿéµèÿÿDH‹Á0ºH�5U¶1ÿèf·þÿL‰âH‰ÇH‰Þ1ÀèÖwL‹e(éˆôÿÿL‹ÖCM‰‚�éOóÿÿA¶$ƒà<t öC …ÿÿÿ1ÿèÝUI‰GXé ÿÿÿ@I‹Q0H…Òt1H‹z L;‡Ðtë"„H‹z L9‡Ðu H�r0H‹R0H…ÒuæL‰ L‹H‰I‹€H…À„�ýÿÿHƒî0H‰p0é�ýÿÿH‹émýÿÿ„H‹H�H0é"ýÿÿ@H�J0H‹B0éHýÿÿL‹+ºL‰æé�þÿÿÇD$8H�\$8H�-Üjÿÿëf.„H‹=±BH‰ÚH‰îè^¼þÿƒl$8uçéLçÿÿf�L‹I‹$º1ÿH�5k³L‰T$(L‰L$ L‰\$L‰D$H‰D$èýµþÿHƒìL‰òAWL‹\$(H‰Ç1ÀL‹D$ L‹L$0H‹t$L‰ÙL‰\$ èNvÇCAYL‰àAZL‹\$M‰ñL‹T$(M‰ßé>øÿÿ…Û„ºïÿÿH‹á.ºH�5µ´éOóÿÿ„è[©1ÿºH�5e¯I‰ÅèeµþÿL‰îH‰Ç1ÀèØué‡ùÿÿL‹ÜAI‰¸˜éwñÿÿL‹ÉAM‰ˆ˜éOñÿÿH‹X(H…Û„oçÿÿD‹ƒ„E…ÀxH‹S8H…ÒtHƒºð…îðÿÿH‹[(H…ÛuÔé>çÿÿL‹I‹$º1ÿH�5j²L‰\$(L‰T$ L‰L$L‰D$H‰D$è¼´þÿHƒìAWL‹\$8H‰Ç1ÀL‹T$0L‹L$(L‹D$ H‹t$L‰ÙL‰ÒL‰\$(L‰T$ èu^_L‹\$L‹T$é°÷ÿÿH‰péØùÿÿH‹²-I‰L‰=¨-H9Øt4L‹5¤-éúÿÿH‰è?éÆùÿÿL‰ïèþþÿé?íÿÿH‰.H‰ÂéoùÿÿL‰séßùÿÿL‰5g-L‹=X-éÌùÿÿ¾2H�= è2uH‹Ë-é6ùÿÿfDATUH‰õSH‰û¿èl¾þÿH‰H‹â@I‰ÄH…Ûuë0„H‹H…Ût H‹{H‰îè<·þÿ…ÀuèI‰\$L‰à[]A\úH�54³1ÿèu³þÿH‰îH‰Ç1ÀèèsL‰à[]IÇD$A\ÀUH‰ýSHƒìH‹x-H…Ûuë)f„H‹H…ÛtH‹{H‰îè¼¶þÿ…ÀuèHƒÄ[]Ã�¿覽þÿH‰ïH‰Ãè µþÿH‰CH‹(-H‰!-H‰HƒÄ[]Ãff.„@H‹ á?H…Ét$H‰úë €H‰ÂH‹H…ÀuõH‹H‰H‰9ÃS¾(H‰û¿è�¼þÿH�5vPÿÿH‰H‰p [H‰�?ÃfDHƒì1ÉH�“¢1ÿH�5Ü¢è%×ÿÿ1ÉH�|¢H�5Ú¢H‰Çè ×ÿÿHƒÄH‰Çéaÿÿÿ�Hƒì1ÉH�S¢1ÿH�5½¢èåÖÿÿ1ÉH�<¢H�5¶¢H‰ÇèÍÖÿÿHƒÄH‰Çé!ÿÿÿ�AVL�5©¢AUL�-^ùATUH‰ýS¶„Ûué�HƒÅ¶]€û,tó¶ÃAöDE@uè„Ûtb¶]L�e€û,t,„Ûuë&f„IƒÄA¶$„Ût€û,t ¶ÃAöDE@tãAÆ$L‰öH‰ïè3¯þÿ…ÀuÇU?Aˆ$L‰å„ÛuŠ[]A\A]A^Ã�1ÿºH�5þ¡è-±þÿH‰îH‰Ç1Àè qëÉff.„AT1ÀH�=í°USè®±þÿH‹-ï*Hƒ}„¼L�%Í¡ëFfïÀòH*ÃH‹E(òYó°H…ÀxvfïÉòH*Èò^ÁH�=¡¡¸èX±þÿH‹mHƒ}tmH‹uH‹]8L‰ç1ÀH+] è7±þÿH‰ßè/sÿÿH‹}(è&sÿÿH…Ûy‘H‰ØƒãfïÀHÑèH ØòH*ÀòXÀé|ÿÿÿH‰ÂƒàfïÉHÑêH ÂòH*ÊòXÉéuÿÿÿf�[]A\Ãf.„�ATI‰üUH‰õSH‹ë�H‰UH‰ÓH…ÛtH‹sL‰ç蘳þÿH‹…ÀtáH‰Ýëà@¿8è~ºþÿH‰EH‰è[]A\Ãf�UH‰õH�5}+SH‰ûHƒìè˜ÿÿÿH‹HÇH‹H‰ZH‰jÇ@0HÇ@HÇ@ HÇ@(HƒÄ[]Ãff.„f�SH�5(+H‰ûè@ÿÿÿH‹HÇH‹H‰ZHÇBÇ@0HÇ@HÇ@ HÇ@([ÃfDH‰=é*Ä‹5¢*…ö…òAWAVAUATUSHƒìL‹-¥*H‹-®*M…í„¥H…í„þL�5•*ëI‹EM‹mH‰CM…ítM‹eH‰ëH…ítH‹sL‰çè<²þÿ…ÀtÐH‹H…ÛuèL‰öL‰çI‹]èaþÿÿH‹-B*H‹HÇH‹M‹mL‰bH‰ZÇ@0HÇ@HÇ@ HÇ@(M…íu†DL‹-ñ)M…í„H…í„X€M‹eH‰ë�H‹{L‰æè¤±þÿ…ÀuÇC0H‹H…ÛuáM‹mM…íuÐE1äDH‹�)H…Û„°L‹mE1öf„H‹{L‰îèT±þÿ…ÀuL‹s H‹H…ÛuäH‹=)H…Û„dL‹mE1ÿDH‹{L‰îè±þÿ…ÀuL‹{(H‹H…ÛuäH‹55)H…ö„‹E0H‹}1ÒjjL‰ñM‰ø…À”ÂE1ÉÒèJ¸ÿÿ¿(L‰%þ(èÉ·þÿH‹U1ÿHÇH‰ÆH‰P1ÒHÇ@Ç@HÇ@ èǾÿÿH‹ (ZYH…Ûuëd€H‹H…ÛtUH‹uH‹{èk°þÿ…Àuç¿(è]·þÿH‹S1ÿHÇH‰ÆH‰P1ÒHÇ@Ç@HÇ@ è[¾ÿÿH‹H…Ûu«1É1ÒH�5gª1ÿèÅÿÿH‹mH…í…„þÿÿÇò'HƒÄ[]A\A]A^A_ÃH‹uH…ötSH‰5(é×þÿÿE1ÿé¼þÿÿ„E1öétþÿÿ„ÃH‰èH…ít£€Ç@0H‹H…ÀuñéþÿÿH�5ÜÑ¿è{MH‰Æë—L‰-—'L‰íéóüÿÿL‰-ˆ'L‰íé ýÿÿ„1Ò¾HÇn'éÙuÿÿf„SH�5P'H‰ûè`ûÿÿH‹HÇH‹H‰ZHÇBÇ@0HÇ@HÇ@ HÇ@([ÃfDUH‰ýSH‰óHƒì(H…ötOH‰ßH�5Õ&èûÿÿH‹HÇH‹H‰ZHÇBÇ@0H‰hHÇ@ HÇ@(HƒÄ([]ÃDH‰ãH�5å§1ÀH‰ß茳þÿH‰ßèÔ¬þÿH‰Ãë�ff.„@¾é–µÿÿfDSH‰û¹H�=¤«H‰Þó¦—À„Àu¹1Ò1ö[H�=¡ªéüÇÿÿ@H�5–ª1ÿºèUªþÿH‰Þ[H‰Ç1ÀéÇj€Hƒì1ÒèLHƒÄH‰ÇééÁÿÿf„UH‰õH�5½%SH‰ûHƒìèèùÿÿH‹HÇH‹H‰ZHÇBÇ@0HÇ@H‰h HÇ@(HƒÄ[]Ãff.„f�UH‰õH�5U%SH‰ûHƒìèˆùÿÿH‹HÇH‹H‰ZHÇBÇ@0HÇ@HÇ@ H‰h(HƒÄ[]Ãff.„f�Ãf.„D€?_H‰øu„HƒÀ€8_t÷¹H�=~©H‰Æó¦—€ڄÒuB¶p @8pu8¶P€úIt€úDu*¶H H�yðöJtHƒìH�x º 1öèï¬þÿHƒÄøÿÿÿÿÃ@AUATI‰üUH‰õSHƒìH‹H‹H‹xH‹ZH�FÈH…ÿHDøH…ÛHDØèHÿÿÿH‰ßA‰Åè=ÿÿÿºA9Å| !I9ìr—¶ÒHƒÄ‰Ð[]A\A]Ãf„HƒÄºÿÿÿÿ[‰Ð]A\A]Ãff.„AVM‰ÆAUI‰ÕATI‰ÌUH‰ýSHƒìH‹4H…Ûuéç€H‹H…Û„ÔH9kuî9s…•H‹C H…Àt8I‹”$ðH…Òt+H‹@H‹€ðH…ÀtH‹HH‹BH‹1H‹8è\«þÿ…À…Ï¿ èJ²þÿHÇH‹K L‰hL‰`L‰pH…Éué›f„H‰ÑH‹H…ÒuõH‰HƒCHƒÄ[]A\A]A^ÃH‹]ºH�5Ч1ÿèI§þÿHƒÄH‰ÞH‰Ç[1À]A\A]A^é°g¿(‰t$ è±þÿ‹t$ H‰ÃH‹3H‰kH‰‰sH‰ó2HÇCHÇC é:ÿÿÿH�K épÿÿÿH‹]ºH�5}§ëƒ‹¢"…Ò…AWAVAUATUSHƒì‹¾2Ç|"…À…¡H�=•2E1ÿèMpÿÿH�=†2èQpÿÿH‹-j2H…í„B�H‹E¶@ƒè<†!‹uH‹=ã2L�-Œ2èǦþÿI‰ÆH…Àu>¶x2‹uƒà<„lH‹E H‹@H‹¸ðH…ÿ„Âè�¦þÿI‰ÆH…À„åL‰÷è9¦þÿ‰Ãƒø„$†8A¼ƒøtƒø…3E1äAƒ~A”ÄA�Ä�HcûèxD¿H‰ÆèËF1ÒH�=™ËH‰ÆèzGH‰ÇèR½ÿÿH�5‚Ë¿è!GH‹UH‰ÆH‹z1ÒèOGH‰Çè'½ÿÿH‹}èDD‰çH‰ÆèC¼ÿÿH‹] H…ÛuQé÷DH‹{H�åH9Çt�O A¶EH‹sƒà<„�èpDD‰çH‰Æèõ»ÿÿH‹H…Û„«Hƒ= 3t¯E…ÿ„ÞH‹EH�=‰’H‹p1ÀèPfH‹EH‹xèó¤þÿA‰Çƒø�Ÿ€è«UAƒÇAƒÿuñH‹sH…ö„´H�=‘1ÀA¿èfé;ÿÿÿH‰÷è0CH‹KH‹SL‰ö‹}I‰À芻ÿÿH‹H…Û…Uÿÿÿ1ÿèCD‰çH‰Æè,»ÿÿH‹mH…í…¿ýÿÿHƒÄ[]A\A]A^A_é,nÿÿ@è3UE1ÿé[ÿÿÿ1ÿºH�5U¤èõ£þÿH‰Ç1ÀèkeéÿÿÿfDH‹SH‹K1ÀA¿H�=B¤H‹²ðè=eéxþÿÿ„A¼ƒø„áýÿÿH‹EL‰÷H‹@H‰D$èÌ£þÿºH�5Ф1ÿA‰Äèv£þÿH‹T$D‰æA¼H‰Ç1ÀèÞcé™ýÿÿf„H‹E‰÷L‹hè� þÿºH�5E¤I‰ÄH‹E H‹@H‹1ÿè £þÿL‰éL‰âH‰ÞH‰Ç1Àè�cH‹mH…í…�üÿÿéÌþÿÿL‹%ä.M…ä„OüÿÿI‹D$ 1ÛH…Àué©€HcÞH‹�sH…ÀuòHcîH�<íèR­þÿI‹T$ I‰ÅH‰ÁH…Òtf�H‰H‹HƒÁH…ÒuñH� ºùÿÿºH‰îL‰ïèZ¡þÿI‹EI‰D$ L‰è…Ût*�CÿL‰êI�|Å€H‹ H‹rHƒÂH‰1H9×uíI�DÝH‹L‰ïHÇ辬þÿM‹$$M…ä…9ÿÿÿé€ûÿÿH‹U H‹E‹uH‹RL‹hHƒºð„¯þÿÿ‰÷è4ŸþÿºH�5È¢I‰ÄH‹E H‹@H‹€ðH‹@H‹é£þÿÿA¼éÿûÿÿÃH‹E‰÷L‹hèïžþÿºH�5ƒ¢I‰ÄH‹).H‹@H‹éfþÿÿf.„Ç:/ÿ%€‹R/…Àt Ç /ÿ%^fDAU1ÿI‰õH�5º¢ATM‰ÄUH‰ÍSH‰ÓºHƒìè'¡þÿHƒÄM‰èL‰áH‰êH‰ÞH‰Ç[1À]A\A]é‡a€AU1ÿI‰õH�5²¢ATM‰ÄUH‰ÍSH‰ÓºHƒìè× þÿHƒÄM‰èL‰áH‰êH‰ÞH‰Ç[1À]A\A]é7a€H…ö„ŸAUM‰ÅATUH‰ÍSL‰ËHƒìH‹8L‹fH…ÿtG1É1ÒL‰æèˤþÿH…Àt6H�ºH�5·«I9ÅtH�5Å«1ÿèP þÿL‰âH‰îH‰Ç1ÀèÀ`‹†-…Àu Hƒ=®+tH‰ÙL‰êH‰îL‰çè;xHƒÄ¸[]A\A]ËN-…Òu Hƒ=v+tD‰ÎH‰Ïé‰yf„¸Ãf.„¶@öÇ…JAWAVAUATM‰ÄUH‰ÕSH‰ËHƒì¶F<„ï<……E1öL�=UE1íƒçuAI‹WhH�*H…Ò•ÁH9”„Ñt I9Ç…�H‹ShH9”ÁH…Ò•„Ñt H9Ã…€L‹Fº1ÿH�5¡L‰D$H…í„´èŸþÿL‹D$L‰áH‰ÚH‰ÇH‰î1Àè‡_M…ít&ºH�5‘ª1ÿèïžþÿL‰ñL‰úL‰îH‰Ç1Àè\_1ÀH�=m¾èN_‹ +…Àt|HƒÄ[]A\A]A^A_ÃDL‹v0L‹~(H�QM9ÆM‹¯ð”ÁI9Ç”„Ñ„üþÿÿH9Ã…óþÿÿë·Ã€èkžþÿL‹D$L‰ñL‰úH‰ÇL‰î1ÀèÓ^érÿÿÿfDºH�5L 1ÿè5žþÿH‰Ç1Àè«^Çy*HƒÄ[]A\A]A^A_ÃH�뫾¼H�=ˆ©è:Of.„ATI‰üH‰×UH‰õSH‰ÓHƒì 臜þÿ…ÀtCH‹ƒ°H‰âH‰ßH�5ßL‰d$H‰l$H‰D$Ç$èä¦þÿ‹$HƒÄ []A\Ä1ÿºH�5ÚŸè}�þÿH‰ÞH‰Ç1Àèð]ë›ff.„AVI‰ÎAUI‰ý¿ATI‰ÔUH‰õ¾XSHƒì`è9§þÿH‰ÃÇ@H‹EH‰k H‰CH‰CH‹…ÐH‹€H…Àt ö@I„šóoóoKóoS óo[0óoc@H‹CP)$)L$)T$ )\$0)d$@H‰D$Pö)t0H‰ß蘖¶CI¨ t ‹Ê…Ò…‚ƒÈ@ˆCIH‹C I‰DH‰ßèh—ÿÿHƒ=˜*„ØI‹}(A¸1É1ÒL‰æE1öèAŸþÿI‰ÅH…Àt)€xw¶@H�ªHc‚HÐÿà€E1öD‹"…À„BH‹…ÐH‹uH…Àt ö@H„xH�=¯‰1Àèz]H‹}è!œþÿ‰Ãƒû�öfDèÛLƒÃƒûuóM…ötL‰öH�=ý‹1Àè=]M…í„I‹uH�=ç‹1Àè"]‹* î)»tH‰æH�=8‹1Àè^[HƒÄ`‰Ø[]A\A]A^ÀH‰X0é]þÿÿ€I‹E(H‹@L‹°ðéÿÿÿ@I‹E(L‹°ðéÿÿÿM‹u(é÷þÿÿ€‹‚) l)tH‰æH�=ˆ�1ÀèáZ€cIß1ÛéxÿÿÿfDè L1Ûéÿÿÿ@ºH�5|�1ÿèÍšþÿH‰Ç1ÀèC\DZé’þÿÿ@L‰æH�=³ˆ1Àè\éøþÿÿf.„H‰òH‹0H�=7¦1Àèü[H‹…ÐH‹8è�šþÿH‹}H‰Ã葚þÿ�\éiþÿÿ„Hƒìèg¡þÿèò”H‹=óîH…ÿt ‹T…Àu HƒÄÀHƒÄé—Ÿþÿ€ƒ=1îÿAVI‰ÖAUATI‰ÌUSH‹T$0H‹L$8„;1ÀI‰ýH‰óL‰ÎH�=”¥L‰ÅèQZ‹óí…Àx�Pÿ‰æí„H…Ûu/1ÿºH�5e�è ™þÿL‰òL‰æH‰Ç1ÀèZëIfDH‹[(¶C�Pú€úvð„À„ù<wLH‹[ºH�5„œ1ÿèU™þÿL‰æH‰ÇH‰Ú1ÀèÅYH…íuuH�=Ó¸[1À]A\A]A^éªYf.„<‡¡L‹s(H�½ I9Æ„„M‹®ð1ÿH‹[ºH�5Sœèæ˜þÿM‰èL‰ñL‰æH‰ÇH‰Ú1ÀèPYH…ít‹H‰îH�=†¤1Àè:YéuÿÿÿD[]A\A]A^À1ÿºH�5z›è�˜þÿH‰ÇéLÿÿÿDM‹mPézÿÿÿH�h¦¾¥H�=í£èŸIff.„@AWI‰ÿAVAUATI‰ôUH‰ÍSHƒì‹&…Àu¹H�=ì£ó¦—Á€Ù„É„ãM‰ÎL‰ÃI‰ÕM…ÀtEºH�5'¸1ÿèò—þÿHƒÄM‰áL‰ñI‰ÀH‰ÚH‰î[H�=¹£]1ÀA\A]A^A_éGX€H…í„—H…ÒtEH‰êL‰îL‰çè´ùÿÿ…ÀupI‹_`H…Ût*€H9ÝtH‰ÚL‰îL‰çè�ùÿÿ…ÀuIH‹›ðH…ÛuݺH�5�·1ÿèZ—þÿHƒÄL‰áH‰î[H‰Â]1ÀA\H�=:£A]A^A_éµWDHƒÄ[]A\A]A^A_Ã�ºH�5B·1ÿè —þÿHƒÄL‰âH�=ï¢[H‰Æ]1ÀA\A]A^A_ékWff.„‹…Àt Ãf„AWAVAUI‰ýATI‰ÔUSHƒìH‰t$èâŸþÿH‰ÃH…Àxu8HƒÄ[]A\A]A^A_Ãf„H�5yš1ÿºè}–þÿL‰îH‰Ç1ÀèðVH‰ßè¡þÿI‹L$H‹t$L‰ïH‰ÂI‰Çè�žþÿH‰ÃH…ÀxhM�4ßM9÷sCI‹/H…ít;L‰ûë f�H‹+H…ít,H‹EH…ÀtH‹H…ÀtI‹t$H‹xè©™þÿ…ÀtMHƒÃI9ÞwÌHƒÄL‰ÿ[]A\A]A^A_év þÿfD1ÿºH�5™èÍ•þÿL‰îH‰Ç1Àè@VésÿÿÿI‹\$ºH�5Õµ1ÿè •þÿH‹ML‰îH‹T$I‰ÀI‰ÙH�=i¡1ÀèVAÇ$éwÿÿÿAWA‰÷AVM‰ÎAUM‰ÅATI‰ÔUH‰ÍSH‰ûHƒì‹=#…ÿ…Ú‹5#…öuHƒÄ[]A\A]A^A_Ãf„H‹{P¾+è’•þÿH…À„H‹E¶@„À„áH�t$ˆD$H�FE…ÿ„£H¹__CTOR_LÇ@IST_H‰¹_f‰H H‹{(A¸¹ºè�—þÿH‰ÃH…À„á€{uÆCH‰k(M‰ðL‰éL‰âH‰ß¾+è=ìÿÿHƒÄ[]A\A]A^A_ÃfD1ÿºH�5r˜èU”þÿL‰æH‰Ç1ÀèÈTéÿÿÿH¹__DTOR_Lº_Ç@IST_H‰f‰P éXÿÿÿfDH�t$H‰ðéÿÿÿ¶ƒà<t¾+H‰ïèq”þÿH…À…ßþÿÿ1ÿºH�5"˜èÕ“þÿH‰Ç1ÀèKTé½þÿÿfD1ÿºH�5Ò„è­“þÿH‰Ç1Àè#Téýþÿÿff.„AVAUI‰ÍATM‰ÄU‰ÕSH‰óHƒì‹C!…ÒuO‹5!…ÀuHƒÄ[]A\A]A^Ä1ÒM‰ÈL‰á‰îH‰ßèþêÿÿ€{uÓL‰k(ÆCHƒÄ[]A\A]A^ÃL‹vº1ÿL‰L$H�5!—è“þÿL‰öH‰Ç1ÀèwSL‹L$ë�‹¾ …À„ÚAU�AýATUSH‰ÓHƒìƒø¶VH‹n–Àƒù@”Ç øƒút^�zýƒÿ†„À…¢E1íE1äƒú…cE1äƒù„—¾%H�=žè¶SM…ä„}ºH�5i—ë/€H‹V(H‹RL‹¢ð„À„�M…ätMºH�5°–1ÿè)’þÿL‰áH‰êHƒÄH‰ÞH‰Ç1À[]A\A]éŒR@À¾H�=}�è/SºH�5«–1ÿèÜ‘þÿHƒÄH‰êH‰ÞH‰Ç[1À]A\A]éBRf�L‹n0ƒù…ƒºM9Åv9H�52—M…ä…iÿÿÿH�5j—ë­H‹V(L‹¢ð„Àu1ƒù„ÿÿÿéìþÿÿs^H�5—M…ä….ÿÿÿH�5·—éoÿÿÿf�¾H�=ÍœèRéùþÿÿf.„¾0H�=­œL‰D$èZRL‹D$é]ÿÿÿM…ät3H�5¤—1ÿèý�þÿH‰éL‰âéÏþÿÿf�ºH�54–éüþÿÿ€H�5©—ééþÿÿff.„�SH‰ûH‹=-H…ÿt ¹ºH‰Þèî”þÿH…ÀtI[À¿(è&›þÿ¹=ºH‹5ÝH‰ÇH‰ãèf“þÿ…Àt2H‹=Óë©f„1ÿºH�52™è=�þÿ[H‰Ç1Àé²Pf�1ÿºH�5ê˜è�þÿH‰Ç1Àè“Pë¯�UH‰õSH‰ûHƒìH‹HH…ÿt#¹ºH‰îè9”þÿH…ÀtDHƒÄ[]ÃD¿(ènšþÿ¹=ºH‹5]ÜH‰CHH‰Çè±’þÿ…Àt5H‹{H묀1ÿºH�5‚˜è��þÿHƒÄH‰Ç[1À]éýOD1ÿºH�52˜èe�þÿH‰Ç1ÀèÛOë¬f„AWI‰ÿAVM‰ÆAUI‰ÕATE‰ÌUH‰ÍSH‰óHƒìH‹HH…ÿt'1É1Òèn“þÿH…ÀtHƒÄ[]A\A]A^A_Ãf.„‹Ò…À…ŠL‹=ë M…ÿ„•L‰þH‰ßèw’þÿ…À…'‹Å ƒÀ‰¼ H…í„’ƒø‡ÖºH�5º—E…äuH�5Ö—1ÿè�ŽþÿHƒÄI‰ØL‰ñ[H‰êL‰î]H‰ÇA\1ÀA]A^A_éëNL‰ÿH‰ÞèMþÿÿL‹=V M…ÿ…kÿÿÿÇ? H‰ßèK�þÿH‰4 ‹* H…í…nÿÿÿƒø‡ŒºH�5ø—E…äuH�5˜1ÿèý�þÿHƒÄH‰ÚL‰î[H‰Ç]1ÀA\A]A^A_é_N€ƒøtsE…䄱þÿÿHƒÄH�=b›1À[]A\A]A^A_é.NfDÇš L‰ÿè&˜þÿéNÿÿÿ�ƒøu¸ºH�5Ç—E…ä…rÿÿÿH�5ï—éfÿÿÿf.„ºH�5Ä–E…ä…µþÿÿH�5ì–é©þÿÿff.„@SH‰ûH‹=¥H…ÿt ¹ºH‰Þè^‘þÿH…ÀtI[À¿(è–—þÿ¹=ºH‹5…ÙH‰ÇH‰[èÖ�þÿ…Àt2H‹=Kë©f„1ÿºH�5¢•è­Œþÿ[H‰Ç1Àé"Mf�1ÿºH�5Z•è�ŒþÿH‰Ç1ÀèMë¯�AWAVAUATUSH‰ûHƒì¶©ƒà`<@„ïH�5-fH‰ß莓þÿH‰ÅH…À„ö¿(èØ–þÿH‹5ÑØºH‰ÇH‰’è-•þÿ…À„…¿dè«–þÿH‰ïI‰Åè–þÿ‰Ãƒøÿt:L�%rÓ¶ÀHÇD$dA·D¨@t\DH‰ïèà•þÿ‰Ã¶ÀAöD@uìƒûÿu>öù`…L‰ïè:–þÿ¶äH‰ïƒàŸƒÈ@ˆÕHƒÄ[]A\A]A^A_éQ‹þÿE1öë%@H‰ï耕þÿK�L5‰Ã¶ÀI‰ÇAöD@u/ƒûÿtaCˆ\5IƒÆL;t$rÏHÑd$H‹D$L‰ïH‰Æè2ŒþÿI‰ÅëµÆº¹L‰îH‹=†èa�þÿH…Àt;ƒûÿ„DÿÿÿMcÇC·Déÿÿÿƺ¹L‰îH‹=Oè*�þÿH…À…ÿÿÿ1ÿºH�5³•辊þÿH‰Ç1Àè4Kë¦1ÿºH�5Ä•蟊þÿH‰Ç1ÀèKéÞþÿÿ1ÿºH�5J“è}ŠþÿH‰Ç1ÀèóJéYþÿÿ1ÿºH�5 •è[ŠþÿH‰Ç1ÀèÑJéïýÿÿ¿èŒþÿHƒÄH‰Þ1À[H�=×—]A\A]A^A_é£JAWAVAUATUH‰ýSHƒì‹_ƒû„Óvaƒû „ƒû uAH‹_ H‹xH9ƒðt¾!H�=Ú—èK‹C öÄ…b%=„RHƒÄ[]A\A]A^A_ÃûuéH‹_·C$f%€f=t×öC!€uÑH‹khH‹H9…ðt¾øH�=j—èžJ‹E öÄu %=u˜H‹=ÓH‰îè‹’þÿI‰ÄH…À„š‹C %"=„dAÇD$I‰\$ H9kht¾H�=—è7JH‹C8I‰D$H‹C`I‰D$é.ÿÿÿH‹_@H‹eH9ƒðt¾ÅH�=Ç–èûI‹C öÄu%=…ñþÿÿH‹=,H‰Þèä‘þÿH‰ÃH…À„XH‹EHH‹}H‰Cè·ˆþÿ¿‰ÀH‰Cè“þÿ‹UH‹M8H‰C ‰H‹U(H‰HH…Ò„áÇCH‰Pé‡þÿÿf„L‹o(H‹µI9…ðt¾3H�=–èKIA‹E öÄu%=…@þÿÿH‹={L‰îè3‘þÿI‰ÄH…À„ÏH‹E0¿AÇD$I‰D$è[’þÿH‹DL‹u I‰D$(H‹Bƒx ‡EI9•ðt¾‹H�=�•èÃH‹U�êƒú‡þH� J–Hc‘HÊÿâ�H‹=éH‰Þè¡�þÿH‰ÃH…À„eH‹EÇCH‰CH‹EH‰CH‹E(H�PH‹H‰S(‰C HƒÄ[]A\A]A^A_ÃDH‹‘I‹t$(L‰÷»H‹@ÿP`IÇD$A‰\$ HƒÄ[]A\A]A^A_ÃH‹YI‹t$(L‰÷»H‹@ÿPHIÇD$ëÆf.„H‹)I‹t$(L‰÷H‹@ÿP0IÇD$뛀I‹D$(»Dˆ0IÇD$éyÿÿÿD‹Æƒø„¬þÿÿƒøt@…À…ŸþÿÿH‹ …ÿH…ÉuéŽþÿÿH‹I0H…É„~þÿÿH‹A H…ÀtêH‹@ƒx …gþÿÿ‹E-ƒø‡˜H� à”Hc�HÈÿàL�|$L‰÷L‰þèÃ�þÿL‰ÿèÛŠþÿH‹TI‰ÆéþÿÿL�|$L‰÷L‰þ蜊þÿL‰ÿèd�þÿH‹-I‰ÆéøýÿÿL�|$L‰÷L‰þè5ŒþÿL‰ÿè †þÿH‹I‰ÆéÑýÿÿfDH‹U ÇCH‹5æH9²ð„ýÿÿH‹rhHJ`H‰HH‰pé‚ûÿÿ@1ÿºH�5‚“è…þÿH‰Ç1Àè“Eé†üÿÿfD1ÿºH�5Z“èõ„þÿH‰Ç1ÀèkEéýÿÿfD1ÿºH�52“èÍ„þÿH‰Ç1ÀèCEéyýÿÿfDAÇD$H�C¤I‰D$(AÇD$ éžûÿÿ1ÿºH�5ç’è‚„þÿH‰Ç1ÀèøDéDûÿÿH�|“¾¶H�=g’è›5H�d“¾†H�=O’èƒ5AW1ÿAVAUATUSHƒìXèû…þÿè¦yÿÿH�=ÿùÿÿèÊMÿÿƒ=3ÿL‹5œuHƒ=*ÿ„A‹† I‹ž�‰D$,H‰\$…À„èH…Û„ßL‰t$€H‹D$ÇD$LH‹p(L‹¸H‰t$M…ÿ„‚L‹d$E1öE1í1ÛHÇD$ @H�=ÁA‹G¶7‰ò@ˆ4$ƒâƒø„€ú„oHÇ$‰Ú1í1ÛHƒ|$ „Ó‹ _9Ñv#B�D-9ÁvH‹4$J� 6H; K‚·DM‹$¹H�="‘L‰Æó¦—À„À…fL‰Ç‰T$8L‰D$0èƒþÿL‹D$0¹H�=ô��pý‹T$8LÆó¦—À„À„IH‹D$L‹0L‰÷èÛ‚þÿ�PH‰D$8H‰×H‰T$0è6�þÿH‹T$0L‰öH‰ÇI‰ÅèÆþÿH‹L$8…ÉtE�QÿH�=ðÉH‰ÐA¶TöWu(éD@�HÿH�5ÎÉH‰ÊA¶L öN„+‰Ð…ÀuÝH‹D$H‹@‹@ƒèƒàýuOL‰ïèI‚þÿHƒøvA¹L‰öH�=�ó¦—À„À„%¹L‰öH�=�ó¦—À„À„AÆEH‹|$H�T$LL‰îè�‡þÿH…À„÷H‹|$H‰ÆH‰D$0èEˆþÿI‰ÆH…À„ÙL‹T$0H‹=õ E1À¹ºL‰ÖèX„þÿH…ÀH‰D$0„ªL‰ïèò‹þÿH‹D$0L‰ñL‰æH‹|$Æ@HÇ@0L‰p(A‹D$ A‰F I‹D$(I‰F(A¶F$A¶T$$ƒàþƒâ ÐH‰úAˆF$I‹D$0IÇF8I‰F0I‹D$`M‰vhI‰F`A‹D$pIdž€A‰FpH‹GAdžˆÿ�PI‹„$I‹OM‰¾HL$I‰†H‹D$ H‰ÊI‰„$HÇI‹D$8H)ÈI‰F8H‹D$I‰L$8I‰F(I‰F0L‰øéH‹PH)ʃxH‰Pu H‹p L‰vhH‰V`H‹H…ÀuÛM‰ô„I‹L‰|$ H…ÀtL‹4$A‰íI‰Çéœüÿÿ@H‹D$ƒl$,H‹X‹D$,H‰\$H…Ût…À…4üÿÿL‹5… I‹FH�5* L‰÷ÿ�Ø…À„1HƒÄX[]A\A]A^A_Ãf.„1ÿºH�5jŽè­þÿH‰Ç1Àè#@L‰<% f„¹L‰ÆH�=¥�ó¦—À„À…·üÿÿH‹ $B�D-LñH‰ $‰Ó‰Åéÿÿÿf„I‹O 1íö„  u‹©À1À€úu‹�ˆÃH‹y8‰Ú‰ÃH‰<$éÊûÿÿ‰ÈfDƒø„ÒüÿÿƒèLè€8.…ÃüÿÿÆé»üÿÿƒèHÇ$ƒø–À1í¶À�‰Ãéûÿÿ1ÿºH�5J�è½~þÿL‰öH‰Ç1Àè0?éÿÿÿèS€þÿ…Àt,ºH�5ÓŒ1ÿèŒ~þÿH‰Ç1Àè?HƒÄX[]A\A]A^A_ÿè¹…þÿf„H‰øH…ÿtf�g þÃ�SH‰÷¾(H‰Óè¿�þÿH…À„‰þÿf�` þ[Ãff.„H‹é H�ÂñH9Ðt 1ÀH‰´ Ëú …ÒºHEÂH‰˜ ÀUH�-ˆñSHƒìH9ot(H‰ûH‹wH‹=' 1É1ÒA¸è�€þÿH…Àt€xtHƒÄ¸[]Ãf„H9h(uåH‹SH‹J(H‰P(H)H0ëÓ„U‰ú‰õH�›S¹1ÛHƒìëfDƒÃƒû3th‹HƒÀ9ÊuîH‹5O …íu#HÁãH�ÈšH‹|è^~þÿ…íu"HƒÄ[]ÿ è6þÿH‹5 ëÊDH‹5 HƒÄ¿ []éþÿ�H‹=ñ …íu%ƒú~H‰þ‰×èö~þÿë¦@H�52�1Àè‚€þÿë’H‰þ¿ ‰T$ èÏ~þÿH‹=° ‹T$ ë½f�ƒt 1ÀÀ�?uîSH‹wH‰û1É1ÒH�=…øè°€þÿH…Àtc¶@ 8qõuWH‹SH‹=ÔE1À1ÉA¹H�5rèÍzþÿH…Àt0·Pf�âÿf�úu H�ÁïH9P(uHƒx0[”À¶ÀÃfD1À[Ã@AUATUH�-H�SH‰ûHƒìH…ÿt(‹Sƒú w‰ÐHcD…Hèÿà¾ËH�=AŽèï<fïÀD M HƒÄ[]A\A]Ãf�H‹{è—ÿÿÿƒ= uáHƒ= u×H‹s H�=ì�HƒÄ1À[]A\A]éØ;„‹Ê …Àt—H‹CH‹PhH‹@`HC Çä H‰Å HÇ H‰à éqÿÿÿfDH‹{èÿÿÿ‹-± …í„¡ �;1„5 H‹{ L‹-z L‹%ƒ èÞþÿÿ!-€ „%ÿÿÿH‹ k L9át=H…É„Ý M…ä„Ô H‹A(H9 H�BîH‰; Ml$(I‰ÄÇ ‹ �ù„Š�}ƒù/„å�&ƒù*„¥�߃ù%„–ƒù&…}L!-ÎL9%×…„þÿÿHƒÄ[]A\A]éòûÿÿf�H‹{L‹%�èþÿÿD‹±L‰%ŠE…Û„LþÿÿH‹C(Hƒ=}HEC H‰ÃH…À…õýÿÿéþÿÿ€H‹{èÇýÿÿ‹i…À„ þÿÿ‹=„¦ŽN=@„ÓŽu=`„ =g…BH‹1ÿHÇÁÿÿÿÿA¸ë€¨AEøH‰ÐH‰ñH‰ÂH�qHÑêHƒøwäH…ÒuåHÇÔHƒÁ…ÿHEñH‰5³éqýÿÿfDfïÀ�¦‹=Bމ=N„æ �=C„M =D…Ž‹=<…ÿ„ýÿÿH‹{1Ò1öèWUÿÿH…À„ö€�„ôüÿÿH‹x`H…ÿ„úè�üÿÿƒ=0„Õüÿÿf�H‹H…Àt H‹@(HùH�ìÇÐH‰ñéŸüÿÿ@H‹s€>.„C1íƒú„H‹{ H‰5¥HÇ¢èüÿÿƒ=~tlHƒ=„ubHÇwéEüÿÿf�H�‰ëH9¢„ŒH‹CÇvHÇcH‰LH‹C H‰IHƒÄ[]A\A]ÃfDƒ{„®H…í„5‹/…À…O€}…sÿÿÿHÇúÇH‹H‰òL‹k1ɺH�=PóL‰îèx{þÿI‰ÄH…À„Œ öEu¶Eƒè<wA€L$!‹ðH�¨êƒ=qI‰T$AˆD$ H‹�„r D‹SH‹oH‰E(E…ÒH‰U0”À�…¶Eƒàû ЈE·ED‹[(f%÷f f‰EE…ÛtH‹=H‰êH�5ÄH‹Gÿ�(H‹ H�BÿHƒøý‡sþÿÿH‹=îH‰îH‹Gÿ�ÐéZþÿÿ@ƒø-„wƒø~„Nƒø!„%¾ŸHƒÄH�=ªˆ[]A\A]éR7f�=&uÜ‹ƒ…ÀtH�¨éH9Á„MÇ–é<úÿÿf„=P„ý=‚…†H‹k¹ H�=qˆH‰îó¦—À„À„¹H�=_ˆH‰îó¦—À„À…~Ç(H‹©é @=A��=+„2=;„O=„ľ�éÿÿÿf.„Hƒ=È…Ðýÿÿé½ýÿÿD1ÀHƒ=ž”ÀH‰”éRùÿÿ€H÷�é?ùÿÿ@ÇCéFýÿÿ@H÷aéùÿÿ@‹2…À„ÂþÿÿH‹SH…Àt H‹@(H3H‹ ,H�5èÇH‰$H‹-HƒùvH�Dÿ1ÒH÷ñH¯ÁH‰òé°øÿÿDH‹sH‹=¥1ɺA¸è wþÿH‰ÅH…À…¢üÿÿL‹c1ÿºH�5½„ètþÿH‰ÇL‰æ1Àè{4éyüÿÿ‹p…À„þÿÿH‹ �H‹šHƒùvH�Dÿ1ÒH÷ñH¯ÁH‹�Ç=ÇcH+B(H‰PH‰9HÇ6éì÷ÿÿH‹ºÇ0H‰éÏ÷ÿÿ@ƒù+„÷ ƒù-…ž L+-ïL9%øL‰-á…ž÷ÿÿéùÿÿfDƒù^„š �™ƒù<„h ƒù>…W HÇ´1ÀL9-›’ÀH‰‘éO÷ÿÿ@�ù„Õ �Æ�ù„} x�ù„L �ù…ø HÇU1ÀL9-<•ÀH‰2éðöÿÿDƒù|„_ �ù …» HÇ1ÀL -ÿ•ÀH‰õé³öÿÿ�ù„d �ù…€ H‹ ÑIÓåL9%×L‰-À…}öÿÿéô÷ÿÿD�ù%„® �Þ�ù„ê�ù$…. Çì‹-V…í„æûÿÿH�wåH9�…ÒûÿÿH‹ SH‹=lIƒý†éI�D=ÿ1ÒI÷õI¯Å‹5fH‰'ƒþ„ƒþ„ðI�UÿH!úHÐH‰ƒþ„¾õÿÿ…ö…kûÿÿÇ!H‰"H‰ ;L‰-<HÇé‡õÿÿ@�ùE„” �ùF…P L9-¡ÿ†^õÿÿL‰-”ÿéRõÿÿ€€~…³øÿÿƒút H�5z€1ÿºèÆpþÿH‰ÞH‰Ç1Àè91D‹2ÿE…Ò„úôÿÿÇ#ÿH‹{ è¦ôÿÿƒ=ÿÇ ÿ„È‹1ÿ…À…/ºH�5M€1ÿè^pþÿH‰ÞH‰ÇéêôÿÿH‹{ èWôÿÿéZúÿÿf�‹:þ…Ò…føÿÿH‹SH‰×þÇÕþH‰¶þéeøÿÿ�H‹=qüA¸1É1ÒèÚrþÿH‰ÅH…À„Qôÿÿ€xv ö@„AôÿÿH‹séµ÷ÿÿDH…É…NõÿÿL‰%pþE1äé?õÿÿ„H‹C H‹ÍþH‹hH…Ûuéúóÿÿ€H‹H…Û„çóÿÿH‹{H‰îèsþÿ…ÀuäD‹kE…í…D‹% ýH‹KE…ätH‰È1ÒH÷5ƒýH…Ò…×H‹ þÇCDzýÇØýH+H(H‰ µýHDzýH‰³ýéaóÿÿfD‹rý…Ò„MóÿÿH‹{1öèï9ÿÿH…À„0 H‹@ éûÿÿD‹ Bý…É„óÿÿH‹{1öè¿9ÿÿH…À„ H‹@(ÇPýH‰1ýHÇ.ýHÇ+ýéÙòÿÿfDH‹=ùüH‹kH…ÿtH‰îèøqþÿ…À„}€}.… €}…H‹ýH‹îüǬüÇÒüH+B(H‰¿üH‰¨üHÇ¥üé[òÿÿ„H‹SH‹=uú1ÉE1ÀA¹H�5úènlþÿ1ÉH…Àt¶p�Vý€úwö@…¡¹ÇZüH‰ ;üHÇ8üHÇ5üéãñÿÿD‹ùûE…À„ÓñÿÿH‹{1Ò1öèJÿÿH…À„Ñö€�„°ñÿÿHÇâûH‹@8HÇÛûÇáûH‰Òûé€ñÿÿD‹’û…À„mñÿÿ1ÒƒøtH‹=ŒùH�55ùH‹Gÿ� HcÐÇ–ûH‰wûHÇtûHÇqûéñÿÿ@‹52û…ö„ ñÿÿH‹{1Ò1öèMIÿÿH…À„8H‹@8H…À„[�;A„| ‹Hp¸HÓàéÉýÿÿD‹-éúE…í„~õÿÿH9Ð…uõÿÿèÊcÿÿI‰D$H‹îúé_õÿÿH‹=ÂøH‰êA¹E1À¹H�5ZøèµjþÿH‰ÅH…À„A¶@�Pý€ú†É‹súƒútƒú„šD‹ búE…É„ŠL‹cºH�5 }1ÿè¾kþÿL‰âH‰ÞH‰Ç1Àè.,Hƒ=>ú„ÁHÇ-úÿÿÿÿéóïÿÿ1ÿºH�5R|è}kþÿL‰îH‰Ç1Àèð+éOôÿÿH�5Äz1ÿºèXkþÿH‰îH‰Ç1ÀèË+H‹KéüÿÿH‹ úH�ÌÝH9ЄºúÿÿH‹ ìùºH�58{H…É„ªúÿÿƒ=ˆùH�±Þv H9Ð…YïÿÿH‹5ŸùH‹-ˆùH…ö„ŒHn(L‹%”ùH9Ðt I9ì‡|H‰-ùH‰)éïÿÿH‹€ùH�YÞ‹ [ùH9Є¯H�ªèþÿÿH9脟…É„fHƒ=ù…XH‹{ ƒ„qèÑíÿÿ…À„ÈD‹ ùE…É…iƒ=Âø„ŸîÿÿéÆùÿÿ€H‹U(H‹BhH…À„ÃH� ÈÝH9È„DHǬøH‹R`HU0H‰¥øÇ£øH‰„øé1þÿÿH‰-pøé6îÿÿH‹=\öE1À1ÉH‰êA¹H�5÷õèRhþÿH…Àt¶p�Vý€ú†zHÇ"øH‹ké9ûÿÿƒ=ø…ßíÿÿH‹kºH�5ôz1ÿèeiþÿHƒÄH‰êH‰ÞH‰Ç[1À]A\A]éË)„À…•ýÿÿHƒ} ÆEHÇE(…~ýÿÿH‹=�õH;o0„mýÿÿH‰îèãkþÿé`ýÿÿfDH‹ ¡÷Hƒù†ü÷ÿÿI�D ÿ1ÒH÷ñH¯ÁI‰Åéæ÷ÿÿM…ítE1íHƒ=q÷A•ÅL‰-f÷HÇk÷éíÿÿfDHÇU÷1ÀL9-<÷—ÀH‰2÷éðìÿÿL1-&÷L9%/÷…ÜìÿÿéSîÿÿ@HÇ÷1ÀL9-üö”ÀH‰òöé°ìÿÿHÇòö1ÀL9-Ùö“ÀH‰Ïöé�ìÿÿf.„L -¹öL9%Âö…oìÿÿéæíÿÿH‹  öIÓíL9%¦öL‰-�ö…LìÿÿéÃíÿÿ@HÇ…ö1ÀL9-lö–ÀH‰böé ìÿÿD¾—é†ñÿÿfDH‹ AöH…É„ÄL‰èH™H÷ùH‰)öL9%2ö…ßëÿÿéVíÿÿH‹ öH…É„ìL‰èH™H÷ùH‰øõëÍH‹ ïõ‹ÉõÇOöH‰ ö…Û„HñÿÿH�ÙÚH9òõ…4ñÿÿ‹îõƒú�zü”Àƒú@”ƃÿ†b„À„ ñÿÿJ�)H‰Úõƒú…0H‹ÚõH�rÿH…ð„ÒõÿÿHðH÷ÚH!ÐH‰­õH)ÈH‰SõéëÿÿfDL¯-@õL9%IõL‰-2õ…ïêÿÿéfìÿÿ€L9-õƒÖêÿÿésõÿÿfDL-õéÓþÿÿƒ=Õôu'H‹kºH�5Ëw1ÿè�:u6H‹rƒ~u,�>u$H‹v€>.u€~uH‹B ƒx„>H‹ìó�H é·úÿÿH‹s1É1ÒH�=!áèLiþÿH…À„B÷ÿÿö@!…8÷ÿÿ1ɶ5Þ@8p ”Áé(÷ÿÿƒ=Mó„>ýÿÿH‹[ ºH�5Uw1ÿè°dþÿH‰ÞH‰Ç1Àè#%éýÿÿ‹pó�Pÿƒú†pƒèƒø†ãèÿÿé“îÿÿƒ=ôò„åüÿÿH‹[ ºH�5w륃=Õò‡oHÇìòH‹E0ÇîòH‰ÏòH‰ØòéuøÿÿH�Ì×H9P(…uúÿÿH‹s1É1ÒH�=#àèNhþÿH…À„Xúÿÿ¶@ 8 Ý…HúÿÿéNúÿÿH‹©òH9脇ùÿÿé øÿÿH9”ò„óHÇ[òH‹B`HE0ÇYòH‰:òHÇ?òéÜ÷ÿÿH‹@8H�5/×HÇòH‹@0H‰5òÇòH‰øñé¶çÿÿHh(éoøÿÿºH�5¦s1ÿè7cþÿAXH‰éL‰âH‰ÞH‰Ç[1À]A\A]éœ#H‹µñÇãñH‰üñébçÿÿH‹=ˆïH‹X8ègþÿ1Ò‰ÁH‰ØH÷ñé>ôÿÿL‹cºH�5Øsé÷ÿÿƒ=Äð„¯øÿÿéûþÿÿH‰øéñÿÿL‰-JñÇxñéþæÿÿ„À…žûÿÿ@„ö„�ñÿÿé�ûÿÿL9éƒßæÿÿH�T9ÿI)ÍL!êHÐH‰ñéÅæÿÿH‹;ñH‰ôð鲿ÿÿƒ:+…#ýÿÿH‹Bƒx…ýÿÿ�8… ýÿÿH‹@€8.…üüÿÿ€x…òüÿÿH‹z ƒtOèvåÿÿ…À…¥÷ÿÿH‹S érüÿÿHƒ…„÷ÿÿéºöÿÿHƒx…·üÿÿH‹A(ƒx…©üÿÿHƒx…žüÿÿéc÷ÿÿHƒuªéW÷ÿÿSH‰ûH�UÕH‰nðÇðHÇIðHÇFðè‰åÿÿ‹+ð…Àt H‹ðÇHÇC H‰CÇC[Ãff.„f�UH‰ý¿(SHƒìèM%ÿÿÇH‰Ãè?ÇþÿH‰kH‰C‹}ìHÇC ‰CH‰ØÇCHƒÄ[]ÃDATI‰ü¿(UH‰õSèü$ÿÿÇH‰ÃèîÆþÿL‰cH‰C‹,ìH‰k ‰CH‰ØÇC[]A\Ãf.„ATI‰ü¿(UH‰õSè¬$ÿÿÇnH‰ÃèžÆþÿÇC H‰C‹ÙëL‰c‰CH‰ØH‰k []A\Ãf.„ÇÎîH‹H‰ïH‰õîH‰5þîé9äÿÿf„H�ÉÓÇ—îHÇÄîHÇÁîH‰Âîéýãÿÿff.„f�ATA‰ü¿(UH‰ÕSH‰óHƒìèå#ÿÿH‹SD‰ H‰P‹SÇ@ƒ{‰PH‰XH‰h tHƒÄ[]A\ÃfDƒ}uëA�”$ÜþÿÿƒúvÞA�ütÕH‰ÇH‰D$è·ýÿÿH‹D$ëÁAUA‰ý¿0ATI‰ÌUH‰ÕSH‰óHƒìè`#ÿÿH‹SD‰(H‰P‹SÇ@ƒ{‰PH‰h H‰XL‰`(tHƒÄ[]A\A]Ã}uìAƒ|$uäH‰ÇH‰D$è=ýÿÿH‹D$ëÐfDU‰ý¿(SH‰óHƒìèë"ÿÿH‹S‰(H‰P‹SÇ@ƒ{‰PH‰Xt HƒÄ[]Ã�ýtî‰êƒâß�ú@tá�ý&tÙH‰ÇH‰D$èÆüÿÿH‹D$ëÅff.„@ATA‰ü¿ UH‰õSèl"ÿÿD‰ H‰ÃèaÄþÿH‰kH‰C‹ŸéÇC‰CH‰Ø[]A\Ã�ATI‰ü¿0U‰ÕSH‰óè*"ÿÿH‹SÇ=H‰P‹SÇ@‰PH‰X L‰`‰h([]A\Ãff.„@UH‰ý¿0SH‰óHƒìèÚ!ÿÿH‹SÇ=H‰P‹SÇ@‰PH‰X H‰hÇ@(HƒÄ[]Ãf„ATI‰ü¿0U‰ÕSH‰óèŠ!ÿÿH‹SÇ=H‰P‹SÇ@‰PH‰X L‰`‰h([]A\Ãff.„@UH‰õSH‰û¿(Hƒìè:!ÿÿH‹SÇ!H‰P‹SÇ@‰PH‰XH‰h HƒÄ[]ÃUH�-tpSH‰ûHƒìHƒ=ðêt&H…Û„=ƒ{ ‡S‹CHcD…HèÿàfDH‹ÉÒH‰ºêëÊH‹ ±êº¾H�=™oèceþÿH‹{èŠÿÿÿH‹S H�5‰oH‹=€êHƒÄ1À[]é+`þÿH‹CH‹°ðH…öt1ÀH�=,oèºH‹CH‹S H‹0HƒÄ1À[H�=o]雋;��éþÿÿƒù/w&Hº`À¸HÓàH…Ð… ©…íH‹5öé¿(è^þÿH‹{èÛþÿÿ‹;¾èOÞÿÿH‹{ ë~f„H‹{è·þÿÿH‹5¸é¿?èÆ]þÿH‹{ è�þÿÿH‹5žé¿:è¬]þÿH‹[(é“þÿÿ‹;1öè÷ÝÿÿHƒ{„äH‹ m麾H�=[nèdþÿH‹{èFþÿÿH‹5GéHƒÄ¿)[]éO]þÿ€‹;�ÿ„b1öè“ÝÿÿH‹SH…Ò„~H�5né{þÿÿf.„H‹=ñèH‹SH�5Èm1Àè—^þÿH‹{ ë†�H‹sHƒÄH�=2H1À[]é(„H‹{H‹5­èèÐ[þÿ‹;¾èÝÿÿH‹[ é›ýÿÿHƒÄ[]Ã�HƒÄ¾áH�=íl[]é™f„1öèÙÜÿÿH‹5Zè¿ èh\þÿH‹5Iè¿(èW\þÿH‹{è.ýÿÿºH‹ *è¾H�=mèábþÿé=þÿÿ@1öè�ÜÿÿºH‹ ýç¾H�=âlè´bþÿH‹{ èÛüÿÿºH‹ ×ç¾H�=ÀléjþÿÿfDH‹{H‹5µçHƒÄ[]éÒZþÿf�HƒÄH�=gl1À[]éüff.„�ATUSH‰óH…ÿtQH� ÍH‰ýI‰ÔÇÕçH‰èHÇûçHÇøçè;Ýÿÿ‹Ýç…ÀuM…ät ƒ=•çuH‰Ø[]A\Ã[H‹ ç]A\Ã@1ÿºH�5:kèåXþÿL‰âH‰îH‰Ç1ÀèUëÀHƒìHcöèTÿÿÿHƒÄÃff.„@ATUSH‰óH…ÿ„¸H�IÌH‰ýI‰ÔÇçH‰RçHÇ7çHÇ4çèwÜÿÿ‹ç…Àt=H‹=þæH…ÿt è|XþÿH‰ÃH…Àud¿èÚbþÿ‹ÔæHÇʉP[]A\ÃM…ät3ƒ=”æt*ºH�5Vj1ÿèÿWþÿL‰âH‰îH‰Ç1Àèo€H‰Ø[]A\ÃH�hHÑíH�}èpbþÿH‹5qæ1ÒH‰(L�@HƒÆ¶~ÿ�OЃù v�OɃáÁâHƒëÊöÃuÜAˆH…Ût¯HƒÆ¶~ÿIƒÀ1Ò�OЃù vÔëÌff.„�ATUS‰óH…ÿtUH�ËH‰ýI‰ÔÇÖåH‰æHÇüåHÇùåè<Ûÿÿ‹Þå…Àu"M…ät ƒ=–åu<@HcÃ[]A\ÄH‹©åH‹’åH…ÒtàHB([]A\H‰~åÃD1ÿºH�5ièÅVþÿL‰âH‰îH‰Ç1Àè5ë£Hƒì¹ º(H�5;ØÿÿH�=´Òè�Yþÿ…Àt HƒÄÃfD1ÿºH�5JLèmVþÿHƒÄH‰Ç1Àéßff.„@1ÒH�5gØÿÿH�=`Òé;Uþÿff.„H�=IÒéDWþÿ@H‹aÒÿ`fDH‹QÒÿ`fDH‹AÒÿ`fDH‹1Òÿ €H‹!Òÿ` fDH‹Òÿ`(fDH‹Òÿ`0fDH‹ñÑÿ`HfDH‹áÑÿ`8fDH‹ÑÑÿ`hfDH‹ÁÑH‹€ˆH…ÀtÿàÀH‹¡ÑH‹@pH…ÀtÿàfDÀH‹�Ñÿ`PfDH‹qÑH‹@xH…ÀtÿàfD1ÀÃDH‹QÑH‹€€H…Àtÿà1ÀÃDH‹1ÑH‹€˜H…ÀtÿàÀH‹ÑH‹€ H…Àtÿà1ÀÃDH‹ñÐH‹€�H…Àtÿà1ÀÃDH‹ÑÐH‹€¨H…Àtÿà1ÀÃDH‹±ÐH‹€¸H…Àtÿà1ÀÃDH‹‘Ðÿ`@fDHƒìH�=égè`QþÿH…Àu H‹lÐH‹@`HƒÄÃff.„HƒìH‹=MÍH…ÿt‹5†ßö3àu)…öu)è¨HÿÿHƒ=âtnHƒ=âtH‹=‡ÁL‰%�ÁH…ÿtè¶OþÿHÇkÁH‹|$HH…ÿt èGþÿH‰UÁH‹=VÁH…ÿtè„OþÿH‹|$PèúFþÿÇD$H‰3ÁécûÿÿH�IH‰ïL�kH‹„ÄÀH‹pH‹HH‹L‹F(H�5[H‹H‹P1À蟶séøÿÿH� !4H�5$[H‰ï1ÀèNHþÿH‹L$(H‹T$ H‰ï1ÀH�5µZècéWûÿÿH�IL�kH‹”ÄÀH…Ò„ÚH‹‚ÐH‹ H…Àt ö@H„âH‰îH‰ÏèaEþÿ¶sé”÷ÿÿH�IH�5œZH‹”ÄÀéfüÿÿH�IH‰îL�kL‹¤ÄÀI‹”$ðI‹<$H‰T$èEþÿH‹T$H…Ò„AüÿÿH‹B‹@ƒø„;ƒø…(üÿÿI‹„$ðH‹@ƒx…üÿÿI‹„$àH…À„üÿÿH‹@@H…À„ôûÿÿH‹H…Ò„èûÿÿH�5ÁYH‰ï1Àè/Gþÿ¶séÒöÿÿfDH�IL�kL‹¤ÄÀI‹D$ H‹€ÐH…Àt ö@H„�I‹|$H‰îèXDþÿI‹D$ H‹€ÐH…Àt ö@H„uûÿÿI‹t$I‹|$èNBþÿ…À„^ûÿÿI‹T$H�5úUH‰ï1Àè Fþÿ¶séCöÿÿH‹T$P€;G…;þÿÿH…Ò„2þÿÿH�5òXH‰ï1ÀèŸé“ùÿÿ1ÿºH�5äDè‡BþÿL‰æH‰Ç1ÀèúéˆøÿÿH‹|$éøÿÿH‹´ÐH�5ºXH‰ï1Àè#Fþÿ¶séÆõÿÿH‹H�5ôMH‰ï1ÀèFþÿ¶sé©õÿÿH�¶\¾ÆH�=/XèUóÿÿºH�5‹X1ÿèBþÿH‰ïH‰Æ1ÀèÅEþÿ¶séhõÿÿH‹”ÄÀH�5iXH‰ï1Àè£Eþÿ¶séFõÿÿH�IL�kH‹”ÄÀH…Ò„¡H‹BH…À„úÿÿ‹JH�5XH‰ÂH‰ï1Àè]EþÿéúÿÿL‹d$éùÿÿI‹„$àHƒ¸À„àùÿÿAöD$#…ÔùÿÿH‹�°é×ýÿÿH‹BéFöÿÿ€H‰îL‰çèuBþÿ¶sé¨ôÿÿH�µ[¾©H�=.WèTòÿÿ@è+§þÿ‹qÌH‰D$X‰T$TH‹T$éEÿÿÿH‹=;½H‹t$HH…ÿA”ÀH…ö”ÀA8À…eûÿÿH…öt\è&@þÿH‹L$P…À…NûÿÿH‹= ½H‰ÎH‰L$0èEDþÿH‹L$0…À‰D$„!÷ÿÿé$ûÿÿ€H‹H�5ŸSH‰ï1ÀèDDþÿéJýÿÿH‹=À¼H‰ÖH‰T$8H‰T$0èöCþÿH‹T$0…À‰D$„ƒýÿÿH‹L$8éÐúÿÿH‹Béõÿÿ¿èxGþÿ„H�ìØH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH�„$àH‰þH‹=Ó°1ÉH‰D$H�T$H�D$ ÇD$ÇD$ 0H‰D$èXñÿÿH�ÄØÃSH‰ûH�ìÐH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH‹=:°èUDþÿH�„$àH�T$H‰ÞH‹=µH‰D$¹H�D$ H‰D$ÇD$ÇD$ 0è¥ðÿÿH‹=î´è DþÿH�ÄÐ[ÃUº‰õH�5RUSH‰û1ÿHƒìè¢>þÿHƒÄ‰êH‰ÞH‰Ç[1À]é ÿÿÿff.„f�H�ìØH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀHƒ=5ÌtHH�„$à€?%H‰þÇD$H‰D$H�D$ ÇD$ 0H‰D$u€!tH‹=÷ËH�T$1Éè£ïÿÿH�ÄØÃ€uÜ¿ èXHþÿ‹L$Hǃù/wXH‹|$‰Î�Q‰T$H‹47H‰pƒú/wz‰Ö�Q‰T$H‹47H‰pƒú/w]ƒÁHú‰L$H‹H‰PH‹ïÈH‰H‰åÈë€H‹T$H‰ÑHƒÂH‰T$H‹ H‰HH‰ÑHƒÂH‰T$H‹ H‰HH�JH‰L$ë­H‹T$ëîH‹T$ëÔff.„�H�ìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH�„$àH�T$1ÉÇD$H‰D$H�D$ ÇD$ 0H‰D$èGîÿÿH�ÄØÃf.„DU1ÒH�5íV1ÀS1íH�ì˜è•=þÿH‰â¿H‰ÆH‰ÃèAþÿ…Àu‹D$1í%ð=@@”ÅH‰ßè¢FþÿH�ʉè[]ÃfDAVAUATI‰ôH�5ÇUH‰ýSè&CþÿH‰ÃH…Àt~E1íHƒ=3Êt.H‰ïè‰;þÿH‰ÇI‰Æèî;þÿHcßÇ9Â}Lò€:/tkL‰÷è3FþÿE‰,$‹ñÉ…Òt ºH�5GV1ÿè‚;þÿH‰îH‰Ç1ÀèUûÿÿH‰Ø[]A\A]A^Ãf„‹²É…ÀtáºH�5ìUë¿„ÆH‹=–ÉL‰öE1íè‹:þÿ…ÀA”Åéuÿÿÿ…öu ‹É…ÀujATA‰ôUSH‰û¿èžEþÿH‰ÅHÇD‰`H‹ù�H‰-ò�H‰(€;=tZ¹H�=Î)H‰Þó¦—À„Àt H‰ßèÈ<þÿ[H‰E]A\ÀÀH‹=ÁÇH�s1ÒèÞ;þÿ[H‰E]A\ÃDH‹=¡ÇH�s1Ò1Àè¼;þÿ[H‰E]A\ÃAWAVAUA‰õATI‰üUSHƒì…ö„tH‹­¶H…Û„œH‹=�H‰L�t$ L�=Ë(ë@H‹H…Û„õH‹{1ÉL‰âL‰þ1ÀèI;þÿL‰öH‰ÇI‰ÅèëýÿÿL‰ïH‰ÅèpDþÿH…ítÃH‹äŽHÇ‹T$ L‰æH‰ïèœþÿH‰-§µÇÅHƒÄ[]A\A]A^A_ÃfDH‹=áÇH�_TH�5rTèn@þÿH‰ÃH‰ÅH…À„çH‰Çèýÿÿ…À„ÏL‹5hŽH�Áµ¾H‰ïH‰RŽèþÿÿL‰5FŽH‹ŸµI‰E…íuH‹`ÈH…Û…íþÿÿH‹ Ž¿HÇèÏ:þÿºH�5«T1ÿèì8þÿL‰æH‰Ç1Àè_ùÿÿHƒÄ[]A\A]A^A_ÃL�t$ L‰öèÃüÿÿH‰ÅH…À…êþÿÿH‹ µH…À„ÿÿÿH‹°�H‰éqÿÿÿ„H‰ßèCþÿH‹=ÑÆH�OSH�5kSè^?þÿH‰ÃH‰ÅH…ÀtH‰Çèûûÿÿ…À…ôþÿÿH‰ßèÛBþÿH�;^H‹=�ÆH‰Öè%?þÿH‰ÃH‰ÅH…ÀtH‰ÇèÂûÿÿ…À…»þÿÿH‰ßè¢BþÿL‹5�éÐþÿÿfDAWAVAUATUH‰ýSH‰óHƒìH‹v@è“7þÿ‹55ÆH‰C …öt0ºH�5ÛRH…ÀtH�5êR1ÿè¶7þÿH‰îH‰Ç1Àè‰÷ÿÿH‹C H…À„´¶PH�HD‰ÑƒÉˆHH€{IyƒÊHˆPH¶SHƒâ$€ú u)ö«Ã…¤A¼HƒÄD‰à[]A\A]A^A_Ã@¾H‰Çè+@þÿ…À…3L‹c M…ät¹¾L‰çè @þÿ…À…�L9c užöCHt˜è´8þÿƒø uŽH‰ßègâÿÿA‰Å…À…{ÿÿÿ1öH‰ïA¼oè|üÿÿÇ:³Ç0Â蓜þÿëB�A�ü�bA�üuH‹=ëÁH…ÿtè)Aþÿf„è»~þÿA‰ÄE…ä„?A�ü~¶A�ü,…è”~þÿA‰Äƒø(uÔè‡~þÿA‰Ä=uÅL‹5†Áèq~þÿƒø,„ǃø)…±‹�Ãø„ƒø„ÂL‰÷E1äE1ÿH‰|$è”&ÿÿH‹|$H‰Æè—9þÿ…À¸DEèL‰÷èt@þÿM…ÿtL‰ÿèg@þÿM…ä„>ÿÿÿL‰çèV@þÿé1ÿÿÿ�‹Ú²…À…NþÿÿH‹{ ¾è”>þÿ…À„8þÿÿH‰ßèt/é+þÿÿ€¶CH¨ uH‹S öBE…ʨ„ùýÿÿ‹ÀÂH‹5íÁL‰çè7þÿH…À…ÛýÿÿI‹D$ƒxuH‹ÊÁH‹@ƒx„g‹zÂ…Ò…-H‹{ E1äè’<þÿHÇC é§ýÿÿDH‹{ 1öèõ=þÿI‰Äé¾ýÿÿDè“6þÿE1äƒø…yýÿÿH‹[@1ÿºH�5­PèÀ4þÿH‰ÇH‰Þ1Àè3õÿÿéPýÿÿfDºH�5ÜP1ÿE1äè’4þÿH‰îH‰Ç1ÀèõÿÿH‹{ èü;þÿHÇC éýÿÿ€ŒÒýÿÿA�ìuAƒü‡ÁýÿÿH‹=Š¿èÕ>þÿé°ýÿÿè;šþÿH‹=l«Ç’°èõ3þÿHÇR«E…í„ üÿÿ‹ _Á…Éu]H‹{ è~;þÿHÇC é“üÿÿL‹c1ÿºH�5çOèÚ3þÿH‰îH‰ÇL‰â1ÀèJôÿÿé§þÿÿH‹{ ¾è§<þÿ…À…>üÿÿé~þÿÿL‹k1ÿºH�5 Oè“3þÿH‰îH‰ÇL‰ê1ÀèôÿÿéwÿÿÿL‰÷è>þÿéáüÿÿèœ{þÿA‰Ä=tL‰÷èê=þÿéÍüÿÿE1ÿL‰÷E1äé9ýÿÿL‹=€¾èk{þÿA‰Äƒø,uè^{þÿA‰Ä=t9L‰÷è¬=þÿL‰ÿè¤=þÿé‡üÿÿE1äè—#ÿÿL‰÷H‰Æèœ6þÿ…ÀuvL‰÷è€=þÿéýÿÿL‹%$¾è{þÿƒø)…êüÿÿ‹DÀƒøtL‰÷ƒø…±üÿÿL‰çM…ä…¥üÿÿé\ÿÿÿM…ÿt�è4#ÿÿL‰ÿH‰Æè96þÿ…Àt&L‰÷A½è=þÿé£üÿÿL‰÷A½è=þÿé˜üÿÿL‰÷è÷<þÿéƒüÿÿf�AWI‰ÏAVAUI‰ýATUH‰õSHƒì¶FHH‰T$¨u.H‹~¨t €?/„ H‰îè#úÿÿ…À…×H‹E€8/„ÞH‹GÁL�%­ H…ÛuAéÆfD1ÉL‰æ1Àè43þÿH‰îI‰ÆL‰÷èÖùÿÿ…À…†L‰÷èV<þÿH‹H…Û„Š¶EH¨ t%¶ë½ƒâ€útH‰êH‰ÞL‰ïèeÜÿÿ…ÀuM¶EHƒàH‹UH‹{<uŽHƒìH‰ÑL‰æ1ÀjH‹T$M‰ùM‰èè°2þÿH‰îI‰ÆXZL‰÷èPùÿÿ…À„zÿÿÿL‰u¸HƒÄ[]A\A]A^A_ÃHƒÄ1À[]A\A]A^A_ÃH‰þH‹==¾1Ò1Àè\2þÿH‰îH‰ÇH‰Ãèþøÿÿ…Àt H‰]¸ë°H‰ßèw;þÿéÇþÿÿf�Hƒ t ÄATUH‰ýS¶GH¨„µH‹.­H…ÛtUL�%²ë „H‹;H‰îèEàÿÿ…Àu"H‹[H…Ût(H‹;L‰áH�²H‰îèþÿÿ…ÀtÏ€eHû[]A\ÃfD¶EHH‹]¨tL‹%u½M…ät €;/„¤ºH�5ÑK1ÿè,0þÿH‰ÞH‰Ç1ÀèŸðÿÿ€MI[€ Ô»]A\ÀH‹H‰îèü÷ÿÿ…Àu�H‹uH‹}èK/þÿ…Àt7L‹eH‹]ºH�5K1ÿèÌ/þÿL‰âH‰ÞH‰Ç1Àè<ðÿÿë›f.„H‹]ºH�5KéhÿÿÿºH�5Këºff.„f�1öéõÿÿf„¾éõÿÿfDUH‰ýSHƒìèb1þÿ¿H‰Ãèå9þÿ¶H‰-S„H‰HÇ@„ÒtH� ¥xD¶HƒÃˆSÿ¶„ÒuîH‹„H‰HƒÀH‰„HƒÄ[]Ãf�U‰õSH‰ûHƒìèð5þÿH…Àt+‹P ‰¾H‹PH‹@ H‰û½H‰ÔƒHƒÄ[]ÃD…ít‰-Ö½HƒÄ[]ÀH�5 K1ÿºè….þÿHƒÄH‰ÞH‰Ç[1À]éòîÿÿf�SH‰óHƒìH…ÿt3H‰Þèó8þÿH…ÀtHƒ«HÇ@HÇ@ HƒÄ[ľ(H‰ßH‰T$èž1þÿH‹T$H…ÀtÖH‰Çë¬ff.„@UH‰õSH‰ûHƒìHƒt¾KH�=~JèïÿÿH‹sH‹=aººèÇ4þÿH‰CH…ÀtH‹EH‰HƒÀH‰EHƒÄ¸[]ÃH‹CH‰CëØfDAVI‰þH‰ÏAUA‰õATI‰ÔUL‰ÅSH‰ËHƒì0è,þÿ…ÀtAH‹ƒ°H‰âH‰ßH�5ÅL‰4$D‰l$ L‰d$H‰l$H‰D$èx6þÿHƒÄ0[]A\A]A^Ã1ÿºH�5r/è-þÿH‰ÞH‰Ç1Àèˆíÿÿë�fDAWAVAUATUSHƒìL‹o M…í„åL‰ïè�+þÿ…À„îI‹…°L‹ H‰D$M…äu é¼@HƒD$H‹D$L‹ M…ä„¡A‹D$©puÝ©tÖI‹T$ H‹RhH…ÒtÈH‹*E1ööÄ„€H‹ê·H…Ût­DL‹{M…ÿuëED‹C…Àu9M‹?M…ÿt1I‹H‰îèÕ/þÿ…ÀuáI‹T$ I‰ØL‰é1öL‰÷èŒþÿÿ‹C…ÀtÌDH‹H…Ûu¨éKÿÿÿHƒÄ[]A\A]A^A_ÃM‹t$évÿÿÿ1ÿºH�51.èÔ+þÿL‰îH‰Ç1ÀèGìÿÿéíþÿÿf�AWI‰ÿ1É1ÒAVA¸AUATUSHƒìH‹wH‹=¸èu.þÿH…À„ÉH‰Å¶@ƒè<‡£H‹E(H‹@hH…À„’L‹-â¶L‹0M…í„fDM‹eM…äuëeDA‹E…ÀuXM‹$$M…ätOI‹|$L‰öèÂ.þÿ…ÀuÞI‹_ H…ÛtÕDH‹KH‹U(M‰è¾H‹}ègýÿÿH‹H…ÛußA‹E…Àt¯€M‹mM…íu‡HƒÄ¸[]A\A]A^A_ÃI‹_1ÿºH�5±Gè¬*þÿH‰ÇH‰Þ1ÀèëÿÿëÆff.„f�AWAVAUI‰õATI‰ÔUSHƒìHH‹FhH‰|$H‹H‹BH‹@hH‰ßL‹0L‰öèú-þÿ…ÀtXI‹D$H‹hH…íuëHfDH‹mH…ít9H‹uH‰ßèË-þÿ…ÀuçI‹$H‹|$L‰îH‰D$A‹D$ ‰D$ è83þÿH‰ÅH…Àxu8HƒÄH[]A\A]A^A_ÀH�5Ñ-1ÿºèÕ)þÿH‹t$H‰Ç1ÀèFêÿÿH‰ïè^4þÿI‹L$H‹|$L‰îH‰ÂH‰D$èä1þÿH‰ÅH…ÀˆFH‹D$L�èL9ЃL‹8H‰ÅM…ÿ„ H‰\$(H‹\$L‰t$0L‰l$D‹l$ L‰d$ M‰Ôë>@A÷FtH‹D$ H‹@I9F tW€HƒÅI9솹L‹}M…ÿ„¬I‹H…ÀtÞL‹0M…ötÖE…ít±I‹F H� Ž›H9Ètö@!u AöF‚t´@H…Û„¯I‹~H‰Þèk,þÿ…À”À„Àt’M‹Nº1ÿM‹H�5ÜEHƒÅL‰L$8èž(þÿHƒìL‰ùÿt$8L‹L$HH‰Ç1ÀL‹D$8H‹T$(H‹t$èõèÿÿXZI9ì‡GÿÿÿH‹|$HƒÄH[]A\A]A^A_éâ2þÿ1ÿºH�54,è?(þÿH‹t$H‰Ç1Àè°èÿÿé“þÿÿA‹FÁèƒàéSÿÿÿf„‹ .´H‹H‹…ÉtH‹rH‹xé“+þÿH‹rH‹xéƒ+þÿAUI‰ÕATUH‰õSH‰ûHƒì‹�¤…À„¯1ɺH‰ÞH�=ޤèù+þÿI‰ÄH…À„ÍI‹\$ H…ÛtH;ku ëCH9kt:H‹H…Ûuò¾H�=N¤èé*þÿH‰ÃH…À„ÔI‹D$ H‰I‰\$ €cøH‰kH�Ù™I9Åt\AöE!u€KHƒÄ[]A\A]ÃfD€KHƒÄ[]A\A]Ã�º(H�5”øÿÿH�=Ý£è0þÿ…ÀtLDz£é&ÿÿÿD€KHƒÄ[]A\A]Ã�1ÿºH�5jDè½&þÿH‰Ç1Àè3çÿÿéÿÿÿfD1ÿºH�5 Dè•&þÿH‰Ç1Àè çÿÿë•1ÿºH�5*Cèv&þÿH‰Ç1Àèìæÿÿé ÿÿÿ€‹"£…Ò„DAUATU‰õSHƒì…ö…—D‹/£H‹À¢L‹%±¢E…Ò„ H‹ù¢A�RÿH‰ß1ÉD‹ £E1íL�HM�ÑL‰âH‹0H…ö„‚LÇf„H‹F H…ÀtHƒÂë�H‰ÊH‹H�JH…Àuñ¹H‹6I�8H…ö„<H‰Çëǃþtƒþ„ú1ÀHƒÄ[]A\A]ÃH‹5-¢H…ö„‰‹*¢H‹¢1íL�%F¢H‹=¢H‹è¡‰J¢‹ü¡L�,H‰=!¢Lë‰4¢ès)þÿH‹¬¡H‰å¡‹¢…ÀtiI‹$‰èH‹ ÂH…ÉtO@‹¢L‰îH‰Ïè7)þÿH‰Á‹î¡IÅH‹A H…Àtf�óo HƒÃH‹SøH‰PH‹H…ÀuåH‹ H…ÉuµƒÅ9-¬¡w—H‹5K¡H‹=”¡èÏ*þÿH‹=@¡è#/þÿHÇ0¡HƒÄ¸[]A\A]ÄA½L‰ÈM9Ët IƒÁéaþÿÿ„É„;H‰Ò E„í„9H‰=Ê D‰ÐHÁàHÇH‰Á H×èÁ.þÿ¾H�=õ H‰¶ è‰'þÿH‰¢ H…À„`þÿÿH‹Š H‹ “ H‹5Ä H‰ÚH‰Ïè(þÿ‹5Ï ‹Å H‰ÁH‹£ HÙ‰5j H‹C H‹5l H‰] HˉP H‰5 …Ò„ÿÿÿL�%f ‰êL‹,ÐM…ítP‹r H‰ÏL‰îè§'þÿH‰Á‹^ HÁI‹E H…Àtf�óoHƒÃCèH‹PH‰SøH‹H…ÀuäM‹mM…íu³ƒÅ9- †”þÿÿI‹$ë�L‰âéÄþÿÿ¸ÃH‰ßéÆþÿÿL‰âH‰ß1ÀéÀþÿÿH�=ÌŸè$þÿ¸Ç Ÿé<ýÿÿAWºH�5Ž?AVAUATUH‰ý1ÿSHƒì(è¬"þÿH‰ïH‰Æ1Àèo&þÿºH�5x?1ÿèŒ"þÿH‰îH‰ÃH‰Çè¾#þÿH‰ßè¦"þÿ‰Ãƒø1€H‰î¿ ƒÃè&þÿƒû2uëºH�53?1ÿè@"þÿH‰ïH‰Æ1Àè&þÿ‹õž…Ò„H‹ÞžH�<Åè±,þÿH�5 ôÿÿH�T$H�=ÞžI‰ÆH‰D$èñ þÿH‹D$H‹5¥žL)ðHÁøH9ð…•H� ¾ùÿÿºL‰÷è¡ þÿH‹zžL�-7I�ÆH‰D$I9ƃ†�M‹&H‹=þ­1É1ÒA¸I‹t$èb$þÿH…À„ €x„§‹�­…À„YI‹T$H�5éH‰ï1Àè%þÿI‹|$èq!þÿ�XM‹|$ M…ÿué€M‹?M…ÿt@AöGtñƒû1@H‰î¿ ƒÃè°$þÿƒû2uëI‹WL‰îH‰ï1À1ÛèèãÿÿM‹?M…ÿuÀM‹|$ M…ÿué£�M‹?M…ÿt@AöGtñƒû1@H‰î¿ ƒÃèX$þÿƒû2uëI‹WL‰îH‰ï1À1Ûè�ãÿÿM‹?M…ÿuÀM‹d$ M…äuëN@M‹$$M…ätAAöD$uïƒû1f�H‰î¿ ƒÃè$þÿƒû2uëI‹T$L‰îH‰ï1À1Ûè7ãÿÿM‹$$M…äu¿…ÛuJIƒÆL9t$‡{þÿÿHƒÄ([]A\A]A^A_Ã@I‹T$H�5� H‰ï1ÀèÂ#þÿI‹|$è þÿ�Xé¢þÿÿ¾èH�=q<èáÿÿë£DH‹@(Hƒxht“H‹€ðH…À„>þÿÿö@E„4þÿÿI‹D$ H…Àuéjÿÿÿ@H‹H…À„ZÿÿÿH‹PöBEuêéþÿÿDI‹\$1ÿºH�5]<èXþÿH‰ÇH‰Þ1ÀèËßÿÿé×ýÿÿfD¾ˆH�=Ñ;èoàÿÿH‹5è›éNýÿÿºH�5<1ÿè þÿH‰ïH‰Æ1ÀèÐ"þÿHƒÄ([]A\A]A^A_Ã�‹²›…ÀuÃDHƒìH�=µ›1ÒH�5 óÿÿèÇþÿH�=ÀñÿÿHƒÄégÿÿ€AUATI‰ôUH‰ýH‰÷SHƒìèÈþÿH‰ïH�XH‰Þè™þÿH‰ÅH…Àt!H‰ÚL‰æH‰ïè³"þÿHƒÄ[]A\A]Äè þÿ1ÿºH�5<A‰ÅèEþÿD‰îH‰Ç1Àè¸ÞÿÿëµfDAVAUI‰ýATI‰ÔUH‰ÍSH‰óHƒìD‹t$@H…ö„‰€~H‰ð„­H…ítöEF u:H�³’I9Ðt A÷Æ „¹€x„öEE…5A€L$€H‹r›…Àu-I‹}8L‰L$L‰$H…ÿtdH‹s1É1Òèß!þÿL‹$L‹L$H…ÀtIH‹2›H‰éL‰âH‰ÞD‰t$@L‰ïH‹@PHƒÄ[]A\A]A^ÿà€H‹F(H…í…KÿÿÿéLÿÿÿfDHƒÄ¸[]A\A]A^ÃfDA÷Æ…[ÿÿÿH� ¤�¶PI9È„��Jý€ù†£€úu"H‹P(H‹RH‹’ðH…ÒtöBF tÆ@H‰P(Aö@!„ ÿÿÿöEEu1é÷þÿÿfDA€|$…ìþÿÿöEEtA€L$éÛþÿÿA€L$€HéÉþÿÿ�A€L$é½þÿÿDƒê€úw§H‹P(H…ÒtöBF t˜H‰h(ë’H‹P(H‹’ðH…Ò…bÿÿÿékÿÿÿ€Hƒ=ø™SH‰ût"‹{(ƒÿÿt èþÿÇC(ÿÿÿÿ1À[Ãf.„¾eH�=û;è/ÝÿÿëËff.„f�UH‰ýSH‰óHƒìHƒ=œ™t*H‹E H‰H‹E0H‰CH‹E8H‰k H‰CHƒÄ1À[]ÃfD¾H�=›;èÏÜÿÿëÃff.„f�H‹I™SH‰ûH…ÀtH‰X81À[ľÞH�=[;è�ÜÿÿH‹™H‰X81À[ÃH‹ ™SH‰ûH…ÀtH‰X01À[ľÕH�=;èOÜÿÿH‹ؘH‰X01À[ÃH‹ɘSH‰ûH…ÀtH‰X(1À[ľÌH�=Û:èÜÿÿH‹˜˜H‰X(1À[ÃHƒ=ˆ˜SH‰ûtH‰ßèºþÿ1öH‰Çè€ßÿÿ1À[Ã@¾BH�=“:èÇÛÿÿëÓDHƒ=H˜SH‰ût"H‰ßèzþÿ1Ò1öH‰ÇèžäþÿH…Àt!€HI€1À[Ã�¾4H�=K:èÛÿÿëËD¸[Ã�Hƒ=ø—SH‰ût*H‰ßè*þÿ1Ò¾H‰ÇèKäþÿH…Àt&€HI€1À[ÃfD¾%H�=ó9è'ÛÿÿëÃD¸[Ãf„AWAVI‰öAUATUSH‰ûHƒìHƒ=„—H‹o8L‹o0tzH‹CH…Àt H9k„·L‰èH‰kD‹C(1ÿH™L‰k¹H÷= –I)ÕHÕI‰ÔºM‰éH‰îè¿þÿHƒøÿ„�ÇC,IÄL‰c1ÀM‰&HƒÄ[]A\A]A^A_þH�=+9è_ÚÿÿL‹c8L9å„hÿÿÿL‹{ 1ÿºH�57èûþÿL‰âH‰ÇL‰þ1ÀèkÙÿÿé<ÿÿÿfDL9k…?ÿÿÿI‰1Àë�€ÇC,‹{(1ÒL‰îèäþÿH…ÀxQH‹;H‰îè´þÿI‰ÄH…Àt>I‰Åë€IÅH)ÅH…í„6ÿÿÿ‹{(H‰êL‰îèãþÿH…À„ÿÿÿØèSþÿƒ8tÔ¸éÿÿÿ@AWAVAUI‰ÕATUSHƒì8Hƒ=–L‹?‰t$$„:Hc|$$H‰ûHÁçè¹"þÿH‰D$(…ÛŽ ‹D$$H‹L$(H�-¼8ƒèH‰ËH�DÁH‰D$@I‹GL‰ÿÿ�I‹UH‰I‰ÄL‰8H…Ò„I‹}1ÉH�5:,1ÀèþÿAƒ}I‰D$IÇD$‡hA‹EHcD…Hèÿàf.„I‹u A¾H…ö„�1ÒH�=}71Àè­þÿL‰ÿH‰ÆH‰D$è�þÿL‹D$H…ÀH‰D$„êL‰ÇèÂ!þÿI‹WH‹D$‹RE‰t$I‰D$ ƒú„šHƒÃIƒÅ0H;\$…ÿÿÿ‹T$$H‹t$(L‰ÿèþÿ1ÀHƒÄ8[]A\A]A^A_ÃfDI‹EI‰D$I‹Gƒx„¡AÇD$H�1ˆI‰D$ ë—f.„I‹GA¾€‹PH�$‰E‰t$I‰D$ ƒú…fÿÿÿI‹$H…ÀtH‹Pƒz„²M‹d$ºH�5‘41ÿèJþÿH‰ÇL‰æ1ÀE1äèºÖÿÿA‹Mƒù‡˜A¶D$IH�5\7ƒàü AˆD$IéýþÿÿI‹GE1ö‹PH�—ˆéÔþÿÿf.„I‹u A¾‚H…ö…pþÿÿH�5£;L‰ÿèþÿI‹W‹Réœþÿÿf�I‹Eéþÿÿ€Hƒ¸ø„@ÿÿÿA‹Mƒù†hÿÿÿºH�5ñ31ÿ‰L$è~þÿ‹L$H‰Ç1À‰ÎèîÕÿÿHƒÄ8¸[]A\A]A^A_Ãf.„º�"L‰ÆL‰ÿè�þÿH…À…iÿÿÿ€¸é9þÿÿfDAÇD$LòÿÿÿH��†IÇD$0AÇD$I‰D$ é{þÿÿ@¾ìH�=ë4èÖÿÿé°üÿÿf.„UH‰õS‰ûH�ìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀH�„$ðÇD$H‰D$H�D$ ÇD$ 0H‰D$…Û„”ƒû„Ã1ÿºH�5e4è(þÿƒûH�Á!H�=ÚHEúH‰ÆE1ÀH‰êH� �31ÀèLþÿH‹=…H‰Ãè-þÿH‹=ŠH�T$H‰Þ¹è¤ÅÿÿH‹=í‰èþÿH‰ßèPþÿH�ÄØ1À[]Ã@H‹=É„H�T$H‰î1ÉèjÅÿÿH‹5³„¿ è9þÿH�ÄØ1À[]ÃDºH�5–31ÿèeþÿH‰î1ÉH�ó2H‰Ç1ÀèŸþÿH�T$¹H‹=^„H‰ÃH‰ÆèÅÿÿH‰ßè»þÿH�ÄØ1À[]Ãff.„@AWAVAUATU‰õSH‰ÓHƒìHƒ=Å�L‹'‰L$ „ą펫�EÿH�@HÁàH�l0éÒH‹=)ŸA¸1É1Òè’þÿI‰ÆM…ö„çE¶~A¹A�Gÿ<v{A�Gý<‡ŸI‹F(A€ÿuH‹@H‹�ð‹CH‹5øžƒèƒø‡<A¹H9òt9I9Ô„ H…Òt+‹BDA¹Áè%ÿÿ©uE1ɨ@A•ÁAƒÁfDD‰K(‹V¡…À…†HƒÃ0H9Ý„ă{H‹3…$ÿÿÿH‹=užH‰òE1À1ÉA¹H�5žèkþÿI‰ÆM…ö…ÿÿÿ‹Kƒù‡¿¸HÓਅ3¨ „§A¹D‰K(‹Ó …Àt�€D‹sD‹{º1ÿL‹+H�570D‰L$HƒÃ0èYþÿD‹L$E‰ðD‰ùH‰ÇL‰êL‰æ1Àè¾ÑÿÿH9Ý…<ÿÿÿHƒÄ1À[]A\A]A^A_Ã@A¹H9ò„ùþÿÿI9ÔtdH…Ò„ëþÿÿE1ÉöBF A•ÁAƒÁé×þÿÿ€H‹±ŽºH�5m/1ÿL‹hèÊþÿA¶×H‰ÇL‰î1Àè9ÑÿÿE¶~é(þÿÿ€A¶FA¹¨…}þÿÿ¶Μ‰Öƒæ@€þtUƒàƒâÐu@€þtA¹éMþÿÿDI‹vH‹=u�èþÿ…ÀuÜH‹ÕœH‹@ƒxt-1Àƒ{–À…Àt¾D‹L$ é þÿÿ¾ŸH�=0èSÑÿÿé&ýÿÿA¶Fa‰Âƒâ”Àƒú” Ð¶ÀëÂH�-1¾µH�=è/èÁÿÿff.„�¹ é¶üÿÿfD¹é¦üÿÿfDöGF …ž¶WHƒâ0t1À€úuH‹GPH‹@ÃDÀAWAVAUATUH‰ýSI‰ìHƒìHL‹/H‹Ç;…èþÿL‰ïH�5�/…À‰ÃLE%Л1Ò1Àè‡þÿL‰æH‰ÇèÜþÿI‰ÅH…À„ð�HD"H‰Çè! þÿ…À„Ù…Ûu=H‰ïè-þÿL‰ïH‰ÆèþÿH‰ïè þÿL‰ï‰Æè@þÿI‹EL‰îH‰ïÿ�8…À„˜º� H�5‰4L‰ïèþÿH…À„{¾@L‰ïè®þÿI‰ÄH…À„ÊL�t$H‰ïL‰öèâþÿ…À„âH‹uH9t$„Û‹D$L‰d$0L‰ïL�|$ M‰,$A‰D$(H‹D$ IÇD$I‰D$0H‹D$(IÇD$IÇD$AÇD$,I‰D$8èdïÿÿH‹õ‹ÇD$ I‰D$ H…ÛuëKf„‹L$ …Éu:H‹C(H…Àt)H‰¨‹L‰þL‰÷ÿÐHÇ•‹…Àt H‹CH‰~‹H‹H…Ûu¾H‹o‹H…Ût H�5-1ÿºè� þÿH‰ÞH‰Ç1ÀèÎÿÿAƒ|$(ÿtH‹}è!þÿ…À„ù‹T$ …Òta¶EHL‰mPL‰ïƒàσȈEHè¸ þÿI‹EHƒÄH[]A\A]A^A_ÃDºH�5<,1ÿE1íè þÿH‰Ç1Àè�Íÿÿé`þÿÿ1ÀÃDA‹D$,…À…£¶EHL‰ïƒàÏƒÈ ˆEHè^þÿHƒÄH1À[]A\A]A^A_ÃDèsþÿ1ÿºH�5ý+‰Ãè® þÿ‰ÞH‰Ç1Àè"Íÿÿé þÿÿD1ÀéMÿÿÿ�L‰ïèØíÿÿH‹uH‰D$éþÿÿf.„A‹|$(èfþÿAÇD$(ÿÿÿÿéïþÿÿ„I‹D$I‹|$I‹t$H™H÷=`‰HÖH)×è�þÿé5ÿÿÿ„H‹á‰H…ÀtúH�5^,1ÿéý þÿff.„f�AUATI‰ü¿HUSHƒìH‹¿‰èrþÿfïÀ¾L‰çH‰ÅHÇ@@L‰`@@ @0è£þÿH‰EH…À„ŽH…ÛtH‹EH;Cu ëEDH9Ct:H‹H…ÛuòH‹‹`H‰-D‰H‰-}`H‰(HƒÅH‰-'‰HƒÄ[]A\A]Ã@ºH�5š+1ÿè- þÿL‰æH‰Ç1Àè ËÿÿHƒÄH‰ï[]A\A]éžþÿfDèSþÿ1ÿºH�5¥*I‰Åèí þÿL‰êL‰æH‰Ç1Àè]ËÿÿéBÿÿÿ„Hƒ=¨ˆStf€?-H‰ûu(€-H�wtH�w¹ H�=$+ó¦—À¾À…Àt4¿è+þÿH‹\ˆH‰XHÇH‰JˆH‰H‹HˆHƒ@ 1À[úH�5­*1ÿèL þÿ[H‰ ˆ¸ÿÿÿÿÃff.„H‹ˆH…À„÷AW1ÒAVAUATUSHƒìH‹H ‰ÖH‹H9ñGÑH…Àuì�zL�%V+HƒÇM�t$@L�-¶*HÁçL�=§ïÿÿèrþÿH� ïÿÿH�DïÿÿH�hH‰Ã¸ ‰Eøƒøw9IcD…LèÿàfDH�ÉùÿÿH‰EDHƒÅM9æt?A‹$IƒÄ‰EøƒøvǾ¸H�=r)HƒÅè¢ÊÿÿH�ÛîÿÿH� ”îÿÿM9æuÈ€L‹-)‡L�£H�-Ã)M…í„…f.„I‹}H‰îèôþÿI‰ÆH…À„ˆI‹UL‰àH…Òt@H‹JH‹ÇHƒÀH‰HøH…ÒuæÇH‰ßÇ@L‰-—†AÿÖHlj†A‰Æ…À…þM‹mM…íu…¶ß”H�=çøÿÿ‰ÐƒÊƒà‰I†H‹â”óoH‰/†ˆ²”)ª…óoH) ®…óoP )²…óoX0)¶…óo`@)%º…óohP)-¾…óop`)5Â…H‹@pH‰Ç…H�àéÿÿH‰™…H�B…H‰[”è¦þÿèqþÿH˜H‰…HƒÄ[]A\A]A^A_Ãf„H�ùíÿÿH‰Eé0þÿÿÇEçé$þÿÿ@H‰Méþÿÿ€H‹Q\H‰EéþÿÿH‰Ué÷ýÿÿ€H�IëÿÿH‰EéàýÿÿH�‰ëÿÿH‰EéÐýÿÿH�‰òÿÿH‰EéÀýÿÿL‰}é·ýÿÿ€H�y÷ÿÿH‰Eé ýÿÿH�ÙîÿÿH‰Eé�ýÿÿH�™ëÿÿH‰Eé€ýÿÿH�ÉëÿÿH‰EépýÿÿH�ùëÿÿH‰Eé`ýÿÿ¶)“1öƒà<t¾„Àt 1ö<@”ƃƉué4ýÿÿ@ÇEé$ýÿÿ@M‹}1ÿºH�55'è™þÿD‰òH‰ÇL‰þ1Àè ÇÿÿéÖýÿÿ@I‹}H�5'èPþÿI‰ÆH…À…\ýÿÿè¯þÿ1ÿºH�5&I‰ÇI‹EH‰D$è@þÿH‹t$L‰úH‰Ç1Àè®Æÿÿé!ýÿÿÄUSH‰ûHƒìƒt¾ŸH�= &è@ÇÿÿH‹{ èGöÿÿH…ÀtH‹{ Hƒ¿ÐH‹oPt€KI H‰k HƒÄ[]Ã�èK þÿëéf„SH‹ ƒÇ΂H…Ût=f„H‹C0H…Àt#H‰`ƒÿÐHÇSƒ…Àt H‹CH‰<ƒH‹H…ÛuÌ1ÀHƒ=*ƒ[•À÷ØÃff.„AUATUSHƒìH‹'ƒH…ÛtzL�- %ë�H‹{èg þÿH‹H…Ût_H‹C8H…Àtï‹S@…ÒuèÇC@H‰Ñ‚ÿÐHÇÄ‚‰Å…Àt¾L‹cL‰î1ÿºèÛþÿ‰êH‰ÇL‰æ1Àè¬Äÿÿëšf.„HƒÄ[]A\A]ÃD@¶×H�%L·P¨u%¨€uHƒì¨„Œþÿ�G©HƒÄÃD�GÉÃ@�GÐÃ@I‰ø¹H�=&¸L‰Æó¦—€ڄÒtT¹H�=é%L‰Æó¦—€ڄÒt9¹H�=Ó%L‰Æó¦—€ڄÒt¹H�=yñL‰Æó¦—À„À”À¶ÀÄH‰ú¹H�=…%¸H‰Öó¦—Á€Ù„ÉtX¹H�=n%H‰Öó¦—Á€Ù„Ét=¹H�=N%H‰Ö¸ó¦—Á€Ù„Ét¹H�=ôðH‰Öó¦—Á€Ù1À„ÉtÃ@H�JH�=åJ¶Rë!€¶qöDwtHƒÀHƒÁ¶„Òt¶òöDwuÜ€ú-t€ú:uHƒÁëß@À1ÀÃDAWH‰ðAVAUI‰Í¹ATUH‰ýH�=–$SH‰ÓH�ì¸ó¦—€ڄÒ„?¹H�=s$H‰Æó¦—€ڄÒ„è¹H�=Y$H‰Æó¦—ÀÛ¾Û…Û„6¹H�=øïH‰Æó¦—€ڄÒ…bH�XE1ä¶@H�-åIë<-t<:…?HƒÃ¶„ÀtY¶Ð¾øöDUtܶSöDUtÑè|ýÿÿO�|%IƒÄÁàAˆ¾{A‰ÆH�CH‰D$èXýÿÿH‹\$A ÆEˆ7¶„Àu­fD»H�ĸ‰Ø[]A\A]A^A_ÀL�d$L‰çèóØL‰âH�5)ìH‰ïÿӉÅÀtÃL‰îL‰ç»èÎêë±@L�d$L‰çèkÌL‰âH�5ÁÔH‰ïÿӉÅÀt‹L‰îL‰ç»èÔévÿÿÿ�1öH�= #1ÀD‰D$è{þÿ‰Å…ÀˆVÿÿÿHcT$L‰î‰Çè¢þÿ‰ïH‰Ãè(þÿD‹D$A9؞öÛé*ÿÿÿèðþýÿǶC�ƒâ€ú„Ÿ‹5áŽH�Ê–…ö„†‹ œŽH�Õº…É„qH‹5�H¹ @H¸ @H!ñH9Á„†H¿@H¸@H!÷H9Ç„NI¸@H�JI¹@I!ðM9È„D‹ ˜ŒH�amA�á A�ù „áH�^“€ú„ÑH¸ @H9Á„H¸@H9Ç„—H¹@H�I9È„‘H�ž@A�ù „}H�B€útqH¸ @H‰òH!ÂH9„ÎH¸@H!ÆH9Æ„ÒH�gGöÔ‹@u2öÊ‹ H�hdH�9!HDÂÃ@H�ýöZŒ„UÿÿÿË=�H�óH�„j…ÿHDÂÃDH�i%ö"Œ„žþÿÿÃöŒH�ÂÝH�£ˆHEÂÃfDöñ‹H�ʶH�›ÙHEÂÃö׋H�ÒH�Q­HDÂÃH�Íöö¶‹„ÿÿÿÀATUH‰ýS¾_H‰ØÁë‰Âƒâ¨@u'ƒËL‹g „ÒtAöD$EuLAöD$Eu,[1À]A\ÃD„Òt L‹g AöD$Eu(…ÛtàL‹e AöD$EtÔ‰ÞL‰çèæþÿ[1À]A\À1ÿH�5ºè%þýÿL‰æH‰Ç1À蘾ÿÿ…Ût˜ë¶f�SºH‰ûH�5ˆ1ÿèùýýÿH‰ßH‰Æ1Àè¼þÿºH�5¸1ÿèÙýýÿH‰ßH‰Æ1ÀèœþÿºH�5(1ÿè¹ýýÿH‰ßH‰Æ1Àè|þÿºH�5P1ÿè™ýýÿH‰ßH‰Æ1Àè\þÿºH�5x1ÿèyýýÿH‰ßH‰Æ1Àè<þÿºH�5˜1ÿèYýýÿH‰ßH‰Æ1ÀèþÿºH�5À1ÿè9ýýÿH‰ßH‰Æ1ÀèüþÿH�5õ1ÿºèýýÿH‰ß[H‰Æ1ÀéÛþÿff.„AWAVAUATUH‰õSHƒìL‹7H‰|$H‰÷M…ö„«èýýÿD¾%ÖŠM‰÷H‰ÃE‰åë HƒÀI‰Çt0H‰ÚL‰þH‰ïèÉúýÿ…ÀuA¶„ÀtXD8ètSD‰æL‰ÿè,ýýÿH…ÀuÇL‰÷è¯üýÿH�|èþÿL‹t$I‰è¾ nŠH‰ÃH�5Ò1ÀI‹H‰ßèþÿI‹>è×þÿI‰HƒÄ[]A\A]A^A_ÃDè;þýÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@USHƒì�ÿ’„žŽ˜�ÿ–„¬ŽÆ�ÿ˜„ Œ”�ÿ™…HH‹!mH�5êÕH‰ßè‚ùýÿ…À„úH�5H‰ßèkùýÿ…À„CH�5H‰ßèTùýÿ…À…§Ç¾‡¸HƒÄ[]ÃfD�ÿ-„„~b�ÿ�„Ö�è�ÿ.…´€ r‡¸ë¹fD�ÿ”„\�n¶J‡ƒà?ƒÈ@ˆ>‡¸ë‡@ƒÿP„gƒÿzubH‹;l¹H�=ŽÖH‰Þó¦—À„À„%¹H�=HH‰Þó¦—À„À…Ÿ¶Ú†ƒàŸƒÈ ˆΆ¸éÿÿÿf�HƒÄ1À[]À€%®†þ¸éòþÿÿ€€ –†¸éÚþÿÿ€H‹=IxH…ÿtè¿þÿHÇ4xH‹}kH…Ò„¬¹H�=8ÔH‰Ö¸ó¦—Á€Ù„É„ƒþÿÿH‰×èøûýÿH‰ñw¸éjþÿÿ€€%†ý¸éRþÿÿ€€%ô…?¸é:þÿÿ€H‹=ùjètéþÿ¸éþÿÿf.„H‹5ÙjH�=Šwèmüÿÿ¸éöýÿÿHƒ X†¸f� Œ…àéØýÿÿD¶}…H‹’j¹H�=³ƒàóH‰Þˆ^…ó¦—€ڄÒ„йH�=}H‰Þó¦—€ڄÒ…³ƒÈˆ&…¸ékýÿÿ„H‹5)jH�=âvè½ûÿÿ¸éFýÿÿÇò„¸é/ýÿÿ@€ Ó„`¸éýÿÿ€ƒÈˆ»„¸éýÿÿDH� H‰ºiéeþÿÿDÇ’„¸éÏüÿÿ@¹H�=¾H‰Þó¦—€ڄÒ…ƒÈ ˆT„¸é™üÿÿfD¹H�=’H‰Þó¦—À„ÀuR€ $„¸éhüÿÿH�5QH‰ßè–õýÿºH�5Ú…À„bÿÿÿ1ÿè«÷ýÿH‰ÞH‰Ç1Àè¸ÿÿ¸é'üÿÿ¹H�=.H‰Þó¦—À„À„‰¹H�=H‰Þó¦—À„À„ɹ H�=H‰Þó¦—À„À„0¹ H�=H‰Þó¦—À„À…Ô‹Zƒ%ÿþÿ€Ì€‰Lƒ¸é‘ûÿÿºH�5Jé;ÿÿÿ1ÒH�t$H�{è½þýÿH‹T$H‰ …€:u H�PÿH…„’ûÿÿH‹hºH�5$H�X1ÿè¡öýÿH‰ÞH‰Ç1Àè·ÿÿébûÿÿ1ÒH�t$H�{è_þýÿH‹T$H‰³„€:u H�PÿH…„4ûÿÿH‹ºgºH�5îH�Xë ¹ H�=H‰Þó¦—À„À…‘‹h‚%ÿþÿ ‰X‚¸é�úÿÿ1ÒH�t$H�{ èÚýýÿH‹T$H‰>‚€:u#H…ÀxHƒ=,‚…©úÿÿHÇ‚ÿÿÿÿé™úÿÿH‹g1ÿºH�5yH�X è¨õýÿH‰ÞH‰Ç1Àè¶ÿÿëµH�5qH‰ßè*ùýÿ…ÀuH� {‚¸éúÿÿH�5�óH‰ßèùýÿ…ÀuHƒ V‚¸éßùÿÿH�50H‰ßèÝøýÿ…ÀuHƒ 1‚ ¸éºùÿÿH�5H‰ßè¸øýÿ…ÀuH� ‚¸é’ùÿÿH�5÷H‰ßè�øýÿ…ÀuHƒ ä�¸émùÿÿH�5ÛH‰ßèkøýÿ…ÀuH� ¼�¸éEùÿÿH�5ÀH‰ßèCøýÿ…ÀuHƒ —�¸é ùÿÿH�5¤H‰ßèøýÿ…ÀuHƒ r�@¸éûøÿÿH�5ˆH‰ßèù÷ýÿ…ÀuH� J�¸éÓøÿÿH�5CñH‰ßèÑ÷ýÿ…ÀuHƒ �¸Hƒ �馸ÿÿH�5:H‰ßè¤÷ýÿ…ÀuHƒ%ð€÷¸Hƒ%ë€þéyøÿÿH�5H‰ßèw÷ýÿ…ÀuHƒ À¸H� »€€éIøÿÿH�5ëH‰ßèG÷ýÿ…Àu€ à@¸é%øÿÿH�5ÅH‰ßè#÷ýÿ…Àu€%¼¿¸éøÿÿH�5­H‰ßèÿöýÿ…Àu€ ”¸éÝ÷ÿÿH�5—H‰ßèÛöýÿ…Àu€ s¸é¹÷ÿÿH�5qH‰ßè·öýÿ…Àu€%Oï¸é•÷ÿÿH�5WH‰ßè“öýÿ…Àu€ + ¸éq÷ÿÿH�51H‰ßèoöýÿ…Àu€%߸éM÷ÿÿH�5‰ÏH‰ßèKöýÿ…Àu¶â~ƒàùƒÈˆÖ~¸é÷ÿÿH�5íH‰ßèöýÿ…Àu¶²~ƒàùƒÈˆ¦~¸éíöÿÿH�5âÆH‰ßèëõýÿ…Àu€ „~¸éÉöÿÿH�5¢H‰ßèÇõýÿ…Àu€%`~ý¸é¥öÿÿH�5…H‰ßè£õýÿ…ÀtÜH�5zH‰ßè�õýÿ…ÀuÇÂ~¸éköÿÿH�5mH‰ßèiõýÿ…ÀuÇŸ~¸éDöÿÿH�5DH‰ßèBõýÿ…ÀuÇx~¸éöÿÿH�56H‰ßèõýÿ…Àu€ ·}¸éùõÿÿº H�5H‰ßèrïýÿ…Àu6H�k H�5H‰ïèÛôýÿ…ÀuC·w}f%ï€Ìgf‰i}¸é«õÿÿH�5H‰ßè©ôýÿ…ÀuD€ D}€¸é‡õÿÿH�5ÇH‰ïè…ôýÿ…ÀuH·!}f%ïf �f‰}¸éTõÿÿH�5¶H‰ßèRôýÿ…À…€ ê|¸é,õÿÿºH�5rH‰ïè¥îýÿ…À„…ºH�5^H‰ïè‰îýÿ…Àu\1ÒH�t$H�{è5øýÿˆ—|H‹D$€8t+H‹žaH�5W1ÿºH�Xè'ðýÿH‰ÞH‰Ç1Àèš°ÿÿ€ Z|¸éœôÿÿºH�5UéFøÿÿ1ÒH�t$H�{èÈ÷ýÿˆ*|H‹D$€8t+H‹1aH�5²1ÿºH�XèºïýÿH‰ÞH‰Ç1Àè-°ÿÿ€%í{ï¸é/ôÿÿH�5•H‰ßè-óýÿ…Àu€ É{¸é ôÿÿH�5wH‰ßè óýÿ…Àu€ ¤{@¸éçóÿÿºH�5Ué‘÷ÿÿAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èðýÿ‹ÃH‰ÞI‰E‰(¶¶ˆT(I‹<$èñïýÿH�5ÊI‰$H�Œ@þÿÿH‹·H�yH‰H‹aHƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ã�AW1ÀAVAUATUSHƒìD¶zHAöÇ„ÔL‹jI‰þH‹~H‰ÓH‰õè›îýÿL‰ïI‰Äè�îýÿIÄAƒç…»L‰÷è{îýÿI�|èáøýÿH‹UM‰ðL‰éH‰ÇI‰ÄH�5S1ÀèãöýÿH‰ÞL‰çè¶ÿÿ…À„°L‰cH‹{ ¾èîöýÿ‰Â¸…ÒtFH‹S öBEt<¶CH‰Âƒâ€út¾õH�=è ¯ÿÿ¶CH¨„~H‹{ L‰îèÒõýÿ¸HƒÄ[]A\A]A^A_ÃfDI�|$è.øýÿH‹UH�5ÒL‰éH‰ÇI‰Ä1Àè3öýÿH‰ÞL‰çèhµÿÿ…À…PÿÿÿL‰ç‰D$ èä÷ýÿ‹D$ HƒÄ[]A\A]A^A_Ã�H‹{èGðýÿI‰Åéqÿÿÿff.„@AWAVAUE1íATL�%NyUSHƒìhH‹iyƒx@„÷H‹-€zH…í„'€}„5H‹vyH…Û„�L�5Þjë@H‹›ðH…Û„€H‹CƒxuæH‹ƒøH‹¸H…ÿtÓ€?tÎè™îýÿI‰Çë@ÆA€?…sHƒÀI‰Çtª¾5kzL‰ÿèûìýÿH…ÀuÖA€?t�L‰þL‰÷èEïÿÿH‹›ðH…Ûu‰f„HƒìL‹ =jL‹>jH‰êH�D$ H‹ ¯yH‹5�yPH‹=�xATÿ5 yèƒñýÿHƒÄ …À„—H‹=`yH…ÿtH‹\$H…ÛtH‰»°èõëýÿHƒÀH‰C8L‹=eM…ÿ„ L�%ëj@H‹ùwÆ+E1É1ÒI‹O E1ÀH‰ÞH�=¿wÿP(H‰ßèöýÿI‹FhH…ÀtH‹P@I‹N8H9ÊrH)ÊH‰P@A�N € IÇF8M‹0M…ÿ„šAöGHuìI‹ L‰æèwíýÿI‰ÆH…ÀtØH‹h8H�}è²õýÿI‹ 1ÉI‰èH‰ÂL‰öH‰Ãèëýÿ…À…SÿÿÿI‹G 1ÿºH�5‘ H‰$èØêýÿH‹4$H‰Ç1ÀèJ«ÿÿé%ÿÿÿDH�= èäçýÿH‰ÅH…À…Áýÿÿ1íéÄýÿÿ�è{—ÿÿH‹=$wH�5Ívèˆòýÿ…Àt\M…ít¶D$foD$@AˆEH‹D$PAE I‰E0HƒÄh[]A\A]A^A_Ã1ÿºH�5 è=êýÿH‰Ç1À質ÿÿéGþÿÿfD1ÿºH�5š èêýÿH‰Ç1À苪ÿÿë…f„H‹=‰vL‰æè‘éýÿ¶*vƒà<uE1íH�=ù脳þÿéØüÿÿ€H‹=)vA¸1É1ÒH�5õè‹ìýÿI‰ÅH…ÀtÀ¶@<v<u´H‹ vºL‰îH�=ÁuH‹@H‹€hÿ�¸A¶Ea‰Âƒâ€út ƒàüƒÈAˆEaI‹E0óAoUIÇE0óAo] óAoMH‰D$PA¶E)L$ ˆD$H�Ï\)T$0)\$@AÆEI‰E(é'ÿÿÿ€L‰þL‰÷H‰$èñëÿÿH‹$éuüÿÿ„AUATL�%ÌUH�-eSH‰ûHƒìƒ{w6‹CHcD…Hèÿàf�E1ÉH‹S¹L‰çH‰Öó¦—À„ÀucH‹[ ƒ{vÊHƒÄ[]A\A]ÃfDH‹[ë­f�H‹{è‡ÿÿÿH‹{ è~ÿÿÿH‹[(ë“„H‹{ègÿÿÿë²DA¹ë‹„D‹C(H‹=µtD‰ÉH�5[tèFæýÿ…À…{ÿÿÿL‹k1ÿºH�5ìè÷çýÿH‰ÇL‰î1Àèj¨ÿÿéRÿÿÿDƒt Ãf„H‹éçþÿÿ€AWAVAUATUSHƒìH‹‡øH‹WH‹€˜ L‹²hL‹`0H‹H(I‹D$hH‰L$H� 0[H9È„ÿL‹¸àH‰ýM‹l$8I‹_HH…Û„«I\$`H‰Þ¿Iƒíÿ’�H‹EL‰ïH�sÿ��H‹EH�s¿ÿ��E‰èH�KH‰ïÇC GNUI‹†H‹t$H‹P èêãÿÿI‹t$`1ÒIwH‰ïM‹l$8èbñýÿ1Ò…ÀtHƒÄ‰Ð[]A\A]A^A_ÃH‰êL‰îH‰ßèêêýÿ1ÒL9è”ÂëÔI‹œ$°H…Û…IÿÿÿL‰ïè7ñýÿM‹l$8H‹UH‰ÃI‰„$°é(ÿÿÿfDºH�5Œ1ÿèeæýÿH‰Ç1ÀèÛ¦ÿÿºéuÿÿÿ�AWAVAUATUH‰ýS1ÛHƒìH‹=^sèaæýÿD¾%1tH‰ïI‰Åë�H�x€?/J�+D‰æHDØè©æýÿH…ÀuäH‰ïè,æýÿH�|è’ðýÿD¾5òsI‰ÇI‰Äë-f�D‰öH‰ïèuæýÿH…ÀtCH)èH‰îL‰çH�XH‰ÚIÜHÝèµãýÿ€}/uÏH‹5ÐrL‰çMìèíãýÿD‰öH‰ïè2æýÿH…Àu½H‰îL‰çèÒãýÿHƒÄL‰ø[]A\A]A^A_ÃAWAVAUATUSH�ì˜H‰|$H‰÷H‰t$(H�5"¿è†ìýÿI‰Ç1ÀM…ÿ„濽I½:è¿ïýÿI‰Ä@M‰æë6H‰ÇL�uÿè4åýÿL‰òH)ÚH9Ðu?A€|,þ t7HíL‰çH‰îèãåýÿI‰ÄIÆL‰ó‰îL‰úL‰÷L)ã)ÞèhçýÿH…Àu³M9ô„S¾ L‰çèMåýÿH…Àtƾ#L‰çè8åýÿH…ÀtÆA¶$L‰ã< †O¹H‰ÞH�=Ü ó¦—À„Àu¶C< „:< „2¶H‰Ú<=wH¹: H£Ás ëQfDH‰Â¶JH�B€ù=wðH¿: H£ÏsàH9Ø„c€:/téÝD€xÿ/…ÎHƒèH9ØuíE1ö1ÀH‹L$H‹9H…ÿ„ÆH‹L$H‹AH‹IH�PJ�42H9΃ÐH‹L$H‰Q¶©qˆH‹yH9L‰òH‰ÞèÌçýÿH‹D$LpL‰pH‹BÆ0L‰ÿè_çýÿ…À„OþÿÿL‰çèïíýÿL‰ÿè'ãýÿ¸H�Ę[]A\A]A^A_ÃHƒÃ¶< ‡±þÿÿI£Årë„Àt°é¢þÿÿf�H�D$@L�KH‰D$ f�A¶€ú „s€ú „j„Ò„{ÿÿÿL‰ËëDH‰ÃD¶sH�CA€þ „RA€þ „HE„öuÛH�CH‰D$„Ò„;ÿÿÿ€ú/„IH‹|$(¾/L‰L$0è¥ãýÿL‹L$0H‰D$L‰ÏL‰L$8è®âýÿH‹L$H+L$(H�|H‰ÃH‰L$èíýÿH‹L$H‹t$(H‰ÇH‰D$HƒÁH‰ÊH‰L$0èæýÿH‹L$0H‹D$H�SL‹L$8H�<L‰Îè`æýÿH‹L$ 1Ò1öH‹|$è½êýÿ…ÀuTHƒ|$@„J1ÛH‰l$0H‰ÝH‹\$fDH‹D$HH‰ßH‹4èHƒÅècüÿÿH;l$@räH‹|$ H‹l$0èßýÿHƒ|$t H‹|$è;ìýÿL‹L$E„ö„&þÿÿA¶€ú …�þÿÿIƒÁéwþÿÿ€ÆA¶H�KH‰L$„ÒtÁéµþÿÿ€H‹L$ 1Ò1öL‰Ïèÿéýÿ…Àu HÇD$Hƒ|$@…9ÿÿÿH‹|$ èŒÞýÿé|ÿÿÿ€H‹L$H)ØI‰ÆH‹9H…ÿ…:ýÿÿH�¸H‰yè™ëýÿH‰ÇH‹D$H‰8HÇ@éJýÿÿH‹D$J�´1H‰pèËáýÿH‰ÇH‹D$H‰8H‹@H�PéýÿÿH‹|$ è Þýÿéïþÿÿ1ÀE1öéºüÿÿf.„Hƒ=À^tÃDH‹G H…ÀtñATUSH‰ûH‰ÇH�ì�èQáýÿ¨t H�Ä�[]A\Ã�H‹{ H‰æè´ßýÿ…À…ìH‹u^H9$„«H‹ô^¾/H‹hH‰ïè³àýÿH…Àu±H�5˜H‰ïè?êýÿH…Àt�H‹{ H�hè½àýÿI‰ÄH…À„ºH‹ª^H‰êL‰çH‹pH)òè(áýÿ…À…cÿÿÿH‹‰^1ÿºH�5H‹hH‹XèžßýÿL‰áH‰ÇH‰êH‰Þ1Àè  ÿÿé)ÿÿÿfDH‹D$H9¼]…CÿÿÿH…À„:ÿÿÿH‰–]éüþÿÿf„H‹[ 1ÿºH�5±è9ßýÿH‰ÇH‰Þ1À謟ÿÿéÊþÿÿH‹{è.âýÿI‰Äé5ÿÿÿfD¶Ikƒà<u H� ÷kH¸HºH#kH9ÐtéŠÿÿf�‹®k…ÀÇ ké§Šÿÿ€HƒìºH�5@ÿ1ÿè™ÞýÿH‰Ç1ÀèŸÿÿÇikHƒÄélŠÿÿff.„�Hƒì¾H�=öèk¯ÿÿ€ j H¸0 ÇlÇ:lH ojÆpjgHƒÄÃAWAVA‰ÖAUATUSH‰ûHƒì(H‹‡ðH‰4$H‹@ÇD$ ‹hH‹{jH‹@ƒý”D$D‹huH‹‡à‹@‰D$ ¶jƒà<„Aƒý”Àöïi@…åÇD$€|$„æ„À„Þ‹S ö„ÒH‹»àöG „ÁL‹=FiM…ÿtZH�5 Qf.„I‹G8H9ðt7H…Àt2H‹ˆàöA t%D‹P A1ÒD‰Ð©u‹G,9A,„è„M‹ M…ÿu·H�®H‰$÷ÂtHH��H‰$öÂt8ƒâH�¡H�ŒHDÂH‰$ëf„‹S öÂ…´ÇD$E…ö„“‹=©Z…ÿu\L�-Ò1M�¥°I‹}H…ÿt/1Ò1öè&¹þÿI‰EH…Àt‹°ˆ…öuA‹U‰�ˆf„IƒÅ0M9åu¿ÇIZ¶vh¨u2H‹3¹ H�=ó¦—€ڄÒuL‹=`1M…ÿ…×€ƒàD‹c <„‘H‹»ðI‰Ý€L‰îè8áýÿI‰ÅH…ÀtpIƒ}hI‹½ðuâA‹E ‰Â%€D1âƒâ ÂuÍöGEuÇH‹‡H…Àt»ö@HuµH‹“ðH‰ÙL‰îè3æýÿ…ÀtA‹E AƒôƒðA ÄAƒôI‹½ðë„@A÷Ä uOL�-2I‹EH…À„£HƒìD‰òE1ÉM‰èjH‹t$H‰ÁH‰ßèTôþÿI‰ÇXZHƒÄ(L‰ø[]A\A]A^A_ÃDAöÄ„îD‰àƒàtFƒ|$ u€|$L�-C1u‘ƒýt,H‹4$¹H�=ÅL�-%1ó¦—€ڄÒ„eÿÿÿDL�-©0A÷Ä„LÿÿÿI�Å�A÷Ä@…8ÿÿÿI�íðA÷Ä…$ÿÿÿIƒÅ0AöÄ„ÿÿÿƒý„%H‹4$¹H�=3ó¦—€ڄÒuL�-j0…À…âþÿÿL�-›/AöÄI�EÐLEèéÊþÿÿf.„H‹<$1Ò1öè³¶þÿI‰ÇH…À„TýÿÿE1ä饀‹F …À„­3C ¨uvƒý…�Aƒý…“H‹ƒàH‹–à‹H,9J,uM¶ æeƒá€ùuH‹RH3PH‰Ð©€u,H‹“ðH‹=fH‰Ùè&äýÿ…ÀuBIƒ8MDçf„L‰ÿ1öèVºþÿI‰ÇH…À„I‹w8H…ö…UÿÿÿM‰üëØ„I�L‰ù1ÒH‰Þè?Ãþÿéûýÿÿf.„E1í1ÀéÃýÿÿfDƒý„ßH‹4$¹H�=ÍþÇD$ó¦—À„À…$üÿÿH‹4$ÇD$€~a„ðH��þH‰$éþûÿÿf.„M‹]M…Û„Ù1Ò1öL‰ßè7µþÿI‰EH…À…7ýÿÿH‹ S%I�UD‰æH‰ßèÔ¹þÿH…À…ýÿÿH‹4dé ýÿÿ€A¾~M…ä„–ûÿÿI�|$L‰á1ÒH‰ÞèGÂþÿM‰çéýÿÿ€‹L$ ƒùt-‰È1Ƀø H�ÞýHE$”Á‰L$H‰$Aƒý„iúÿÿé6ûÿÿH� ®ýÇD$H‰ $é-úÿÿH�–ýH‰$éûÿÿH‹H‹�c€xa”D$ ¶L$ H…Ò„ÿÿÿ1öD‰d$ E1É1íL‰l$L‰ØD‹l$I‰ôH‰\$L�=Wý‰Ëé¨f.„L‹B0¹L‰ÿL‰Æó¦—Á€Ù„É…�A€xaA”ÂE…í…àA¶ÊH�5#ýI�|¹ó¦—Á€Ù„É„»D8Ó@”ÆM…Ûtn@„öuiH‹J8H…ÀtH@„öuCH…Ét‹I öÁt ƒáI‰ÔHEêH‹J I‰ÑH…Ét:H‰Ê‹Š„…ɉTÿÿÿH‹J8ëÆfDH…ÉtÒ‹I öÁtÊH‰Ðë»fDI‰Óë’L‰áL‹l$D‹d$ H‹\$H…Àt I‰EéèýÿÿL‰ØM…ÛuïH‰èH…íuçH‰ÈH…ÉHDÂëÛL‰áL‹l$D‹d$ L‰ÊH‹\$ë¿‹L$ ƒù„êûÿÿƒù …ðûÿÿéÜûÿÿff.„f�ATH‹=—bH�5@bUSè‰ØýÿºH�5½ö…Àˆñ‰Ç» L�%bëCDH‹YbH‹€øH‹�˜ H‹B8H9ńڃû H9Ńȿƒë„’èmæþÿH‹=bH‹Gƒx…¤A¶$ƒà<„”H‹‡øHƒ=)aH‹€˜ H‹h8t/„lè_ÐýÿL‰÷H‰D$èÂÏýÿH‹|$H‰ÃèµÏýÿH�|èÚýÿH‹T$L‰ñH�5»õH‰ÃH‰Ç1ÀèØýÿ¾/H‰ßèbÐýÿH…À„)ÆH‰ßI‰ÞèkÏýÿE‰íI)ìI�|èËÙýÿI‰ÅM…ÿ„ŸI‰ØM�OH‰éD‰âH�5VõL‰ï1ÀèÁ×ýÿH‰ßè)ÏýÿA�\H‰ïL‰íèyÙýÿL‰÷èqÙýÿ‰ß¾$HïèrÏýÿI‰ÄH…À„þ¾/L‰çI�\$èTÏýÿH‰ïI‰ÇèÙÎýÿI‰ÅM…ÿtAÆA¶D$H‰Þ<{u A¶D$I�t$H�VH‹=gWH�5Wè+ÍýÿH‰ÅH‰ÃH…À„0H�D$0H‰$H�D$ H‰D$H�D$@H‰D$€H‹{H…ÿt+èzËýÿ¨…êH‹{H…ÿt·´Vf%€f=€„4I‰ìH9Ýt6@I‹|$H…ÿt è9Ëýÿ¨uH‹sI‹|$è×Íýÿ…À„ïM‹$$I9ÜuÎH�=_õÿÿH‰èHHÇEHèˆÄþÿH‹9HH…Àt H‹x èãÊýÿ¨tWL‹cL‹k‹ 9XL‰d$ L‰l$(L‰d$0…É…ËH‹ûGH…À„šH‹pH‹<$ºH‰t$8èÃõÿÿ…Àt€H‹H…Û…ôþÿÿ¶ÈUƒàÀ<€…þÿÿ1ÿH�5±UèÜÎýÿ…À…þÿÿ1ÿºH�5VìèQÉýÿH‰Ç1Àèljÿÿéãýÿÿf�L9ãu£éÿÿÿfDèÊýÿ¨u�é¾þÿÿf�E1äL‹t$H‹=©VD‰âL‰öè&øÿÿ…À…fÿÿÿH‹=‡VH…ÿ„è™âÿÿD‰âL‰öH‰ÇI‰Åèø÷ÿÿL‰ïA‰Çè]ÓýÿE…ÿ…,ÿÿÿHƒ=TVuHƒ=BV„ÏH�=^ïèÐÅýÿH…ÀtH‹t$D‰âH‰Çè«÷ÿÿ…À…ëþÿÿH‹= UH�5µTè@ÇýÿI‰ÇH…ÀuëfDL‰ÇèèÒýÿM‹?M…ÿt`E„öt[I‹E1íA¾èéáÿÿI‰ÀH‹CI9GuÌH‹t$L‰ÇD‰âL‰D$E1íè4÷ÿÿL‹D$…ÀL‰ÇA•ÅA”Æè�ÒýÿM‹?M…ÿu¥DE…í…Oþÿÿ‹éEL‹-ÚE…Ò„ûH‹{M…ít*H‹CH‹t$H‰|$HD‰âL‰ïH‰D$@èËöÿÿ…À… þÿÿH‹{èÊÇýÿL‹=ÓVI‰ÅM…ÿtfA‹G…ÀuSI‹è§ÇýÿI�|è ÒýÿI‹WH‹KH�5­íI‰ÆH‰Ç1ÀèÐýÿH‹<$D‰âL‰öL‰t$8è]óÿÿ…À…�ýÿÿL‰÷è½ÑýÿM‹?M…ÿu�Aƒü…L‹cL‹k1ÿºH�5-êèÇýÿL‰âL‰îH‰Ç1Àèp‡ÿÿéSýÿÿHƒ={T…1þÿÿH�=(ìèÄýÿH…À„þÿÿ€8„þÿÿH‹t$D‰âH‰ÇèÏõÿÿ…À„ûýÿÿé ýÿÿf�H‹9SH…Û„²ûÿÿE1öE1íE1äA¿L� *:L�òìL�ûìëf.„H‹›ðH…Û„½H‹ƒö@HuãH‹ƒ�H…ÀtwE1Àë/f�H‰Ö¹ L‰ßó¦—€ڄÒu Hƒx8 ECÇH‹@H…À„¶H‹L9Hhtê¹H‰ÖL‰×ó¦—Á€Ù„Éu³A¸E…ö„”E9ð…M…䄎f�Aƒþ…Vÿÿÿ¶òQH‹›ðƒà?ƒÈ€ˆßQH…Û…CÿÿÿM…ä„:I‹D$H�5ìL‰çH‹€h‹P0ƒÊèÉÃýÿH…À„Ç@pH‰…(éoúÿÿE…ÀtˆéfÿÿÿE‰ÆM…ä…tÿÿÿAƒøt öjQÀ„aÿÿÿH‹CA½ƒxLDãéJÿÿÿA¼éâûÿÿ1ÿºH�5˜ëèìÄýÿL‰âL‰îH‰Ç1À輄ÿÿé ûÿÿH‹=øQ1ÒH�5�ë1ÀHÇD$@HÇD$PHÇD$HèõÅýÿH‹|$H‰ÆI‰Åè%ßÿÿ…ÀtlL‰ïèÏýÿH‹|$@L‹-}BH…ÿtè#ÞÿÿH‹|$@I‰ÅH‰dBèïÎýÿÇ]Bé~üÿÿE…í„iùÿÿ1ÿºH�5éæè4ÄýÿH‰Ç1À誄ÿÿéGùÿÿL‰ïè­ÎýÿH‹=>Q1Ò1ÀH�5ØêèVÅýÿH‹|$H‰ÆI‰Åè†Þÿÿé`ÿÿÿH‹JQ1ÿºH�5Œåè×ÃýÿH‰ÇH‰Þ1ÀèJ„ÿÿéT÷ÿÿºH�5ÉåépøÿÿAƒøºH�5æIEÜ1ÿè™ÃýÿH‰ÇH‰Þ1Àè „ÿÿéôýÿÿ€‹¢A…ÀuH‹G H…Àtö@EuÃfDAUATUSH‰ûH‰ÇHƒìèÄýÿI‰ÄH…À„�H‹hAH…ÛtqL�-½èëf.„H‹H…ÛtVH‹sL‰çèlÂýÿ…ÀtèH‹k¾/H‰ïè—ÃýÿH…ÀuÒL‰îH‰ïè'ÍýÿH…ÀtÂH�PH‰îL‰çH)êè0Äýÿ…Àu¬Çê@HƒÄ[]A\A]ÀH‹C H‹8è´ÅýÿI‰Äé]ÿÿÿf.„f�ǶÃNƒâ€ú„Ÿ‹5aPH�R_…ö„†‹ PH�݃…É„qH‹5†NH¹ @H¸ @H!ñH9Á„†H¿@H¸@H!÷H9Ç„NI¸@H�I¹@I!ðM9È„D‹ NH�ù8A�á A�ù „áH�v_€ú„ÑH¸ @H9Á„H¸@H9Ç„—H¹@H�FíI9È„‘H�V A�ù „}H�RÍ€útqH¸ @H‰òH!ÂH9„ÎH¸@H!ÆH9Æ„ÒH�oöTM@u2öJM H�¨3 H�¹èHDÂÃ@H�ÁÊöÚM„UÿÿÿË=žNH�{HH� 3…ÿHDÂÃDH�ðö¢M„žþÿÿÃö‘MH�R§H�kX HEÂÃfDöqMH�bƒH�»¦HEÂÃöWMH�Ø¢ H�™} HDÂÃH�%È ö6M„ÿÿÿÀATUH‰ýS¾_H‰ØÁë‰Âƒâ¨@u'ƒËL‹g „ÒtAöD$EuLAöD$Eu,[1À]A\ÃD„Òt L‹g AöD$Eu(…ÛtàL‹e AöD$EtÔ‰ÞL‰çèfÄýÿ[1À]A\À1ÿH�5ÿÚº西ýÿL‰æH‰Ç1Àè€ÿÿ…Ût˜ë¶f�SºH‰ûH�5Û1ÿèy¿ýÿH‰ßH‰Æ1Àè<ÃýÿºH�58Û1ÿèY¿ýÿH‰ßH‰Æ1ÀèÃýÿºH�5¨Û1ÿè9¿ýÿH‰ßH‰Æ1ÀèüÂýÿºH�5ÐÛ1ÿè¿ýÿH‰ßH‰Æ1ÀèÜÂýÿºH�5øÛ1ÿèù¾ýÿH‰ßH‰Æ1Àè¼ÂýÿºH�5Ü1ÿèÙ¾ýÿH‰ßH‰Æ1ÀèœÂýÿH�5EÜ1ÿºè¹¾ýÿH‰ß[H‰Æ1Àé{Âýÿff.„AWAVAUATUH‰õSHƒìL‹7H‰|$H‰÷M…ö„«è¦¾ýÿD¾%vLM‰÷H‰ÃE‰åë HƒÀI‰Çt0H‰ÚL‰þH‰ïèi¼ýÿ…ÀuA¶„ÀtXD8ètSD‰æL‰ÿè̾ýÿH…ÀuÇL‰÷èO¾ýÿH�|èµÈýÿL‹t$I‰è¾ LH‰ÃH�5¶“1ÀI‹H‰ßè¯ÆýÿI‹>èwÈýÿI‰HƒÄ[]A\A]A^A_ÃDèÛ¿ýÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@USHƒì�ÿ’„žŽ˜�ÿ–„¬ŽÆ�ÿ˜„ Œ”�ÿ™…HH‹Á.H�5Š—H‰ßè"»ýÿ…À„úH�5¸àH‰ßè »ýÿ…À„CH�5¦àH‰ßèôºýÿ…À…§Ç^I¸HƒÄ[]ÃfD�ÿ-„„~b�ÿ�„Ö�è�ÿ.…´€ I¸ë¹fD�ÿ”„\�n¶êHƒà?ƒÈ@ˆÞH¸ë‡@ƒÿP„gƒÿzubH‹Û-¹H�=.˜H‰Þó¦—À„À„%¹H�=èßH‰Þó¦—À„À…Ÿ¶zHƒàŸƒÈ ˆnH¸éÿÿÿf�HƒÄ1À[]À€%NHþ¸éòþÿÿ€€ 6H¸éÚþÿÿ€H‹=É:H…ÿtè_ÆýÿHÇ´:H‹-H…Ò„¬¹H�=Ø•H‰Ö¸ó¦—Á€Ù„É„ƒþÿÿH‰×蘽ýÿH‰q:¸éjþÿÿ€€%®Gý¸éRþÿÿ€€%”G?¸é:þÿÿ€H‹=™,è«þÿ¸éþÿÿf.„H‹5y,H�= :èmüÿÿ¸éöýÿÿHƒ øG¸f� ,GàéØýÿÿD¶GH‹2,¹H�=SÞƒàóH‰ÞˆþFó¦—€ڄÒ„йH�=ÞH‰Þó¦—€ڄÒ…³ƒÈˆÆF¸ékýÿÿ„H‹5É+H�=b9è½ûÿÿ¸éFýÿÿÇ’F¸é/ýÿÿ@€ sF`¸éýÿÿ€ƒÈˆ[F¸éýÿÿDH�©ÛH‰Z+éeþÿÿDÇ2F¸éÏüÿÿ@¹H�=^ÝH‰Þó¦—€ڄÒ…ƒÈ ˆôE¸é™üÿÿfD¹H�=2ÝH‰Þó¦—À„ÀuR€ ÄE¸éhüÿÿH�5ñÜH‰ßè6·ýÿºH�5z×…À„bÿÿÿ1ÿèK¹ýÿH‰ÞH‰Ç1Àè¾yÿÿ¸é'üÿÿ¹H�=ÎÜH‰Þó¦—À„À„‰¹H�=¿ÜH‰Þó¦—À„À„ɹ H�=³ÜH‰Þó¦—À„À„0¹ H�=£ÜH‰Þó¦—À„À…Ô‹úD%ÿþÿ€Ì€‰ìD¸é‘ûÿÿºH�5êÖé;ÿÿÿ1ÒH�t$H�{è]ÀýÿH‹T$H‰©F€:u H�PÿH…„’ûÿÿH‹¸)ºH�5ÄÖH�X1ÿèA¸ýÿH‰ÞH‰Ç1Àè´xÿÿébûÿÿ1ÒH�t$H�{èÿ¿ýÿH‹T$H‰SF€:u H�PÿH…„4ûÿÿH‹Z)ºH�5ŽÖH�Xë ¹ H�=¯ÛH‰Þó¦—À„À…‘‹D%ÿþÿ ‰øC¸é�úÿÿ1ÒH�t$H�{ èz¿ýÿH‹T$H‰ÞC€:u#H…ÀxHƒ=ÌC…©úÿÿHÇ»Cÿÿÿÿé™úÿÿH‹¿(1ÿºH�5ÖH�X èH·ýÿH‰ÞH‰Ç1Àè»wÿÿëµH�5ÛH‰ßèʺýÿ…ÀuH� D¸éúÿÿH�5-µH‰ß袺ýÿ…ÀuHƒ öC¸éßùÿÿH�5ÐÚH‰ßè}ºýÿ…ÀuHƒ ÑC ¸éºùÿÿH�5µÚH‰ßèXºýÿ…ÀuH� ©C¸é’ùÿÿH�5—ÚH‰ßè0ºýÿ…ÀuHƒ „C¸émùÿÿH�5{ÚH‰ßè ºýÿ…ÀuH� \C¸éEùÿÿH�5`ÚH‰ßèã¹ýÿ…ÀuHƒ 7C¸é ùÿÿH�5DÚH‰ßè¾¹ýÿ…ÀuHƒ C@¸éûøÿÿH�5(ÚH‰ß虹ýÿ…ÀuH� êB¸éÓøÿÿH�5ã²H‰ßèq¹ýÿ…ÀuHƒ ½B¸Hƒ ¸B馸ÿÿH�5ÚÙH‰ßèD¹ýÿ…ÀuHƒ%�B÷¸Hƒ%‹BþéyøÿÿH�5²ÙH‰ßè¹ýÿ…ÀuHƒ cB¸H� [B€éIøÿÿH�5‹ÙH‰ßèç¸ýÿ…Àu€ €A@¸é%øÿÿH�5eÙH‰ßèøýÿ…Àu€%\A¿¸éøÿÿH�5MÙH‰ß蟸ýÿ…Àu€ 4A¸éÝ÷ÿÿH�57ÙH‰ßè{¸ýÿ…Àu€ A¸é¹÷ÿÿH�5ÙH‰ßèW¸ýÿ…Àu€%ï@ï¸é•÷ÿÿH�5÷ØH‰ßè3¸ýÿ…Àu€ Ë@ ¸éq÷ÿÿH�5ÑØH‰ßè¸ýÿ…Àu€%§@߸éM÷ÿÿH�5)‘H‰ßèë·ýÿ…Àu¶‚@ƒàùƒÈˆv@¸é÷ÿÿH�5�ØH‰ßè»·ýÿ…Àu¶R@ƒàùƒÈˆF@¸éíöÿÿH�5‚ˆH‰ßè‹·ýÿ…Àu€ $@¸éÉöÿÿH�5BØH‰ßèg·ýÿ…Àu€%@ý¸é¥öÿÿH�5%ØH‰ßèC·ýÿ…ÀtÜH�5ØH‰ßè0·ýÿ…ÀuÇb@¸éköÿÿH�5 ØH‰ßè ·ýÿ…ÀuÇ?@¸éDöÿÿH�5ä×H‰ßèâ¶ýÿ…ÀuÇ@¸éöÿÿH�5Ö×H‰ßè»¶ýÿ…Àu€ W?¸éùõÿÿº H�5¾×H‰ßè±ýÿ…Àu6H�k H�5±×H‰ïè{¶ýÿ…ÀuC·?f%ï€Ìgf‰ ?¸é«õÿÿH�5¦×H‰ßèI¶ýÿ…ÀuD€ ä>€¸é‡õÿÿH�5g×H‰ïè%¶ýÿ…ÀuH·Á>f%ïf �f‰²>¸éTõÿÿH�5V×H‰ßèòµýÿ…À…€ Š>¸é,õÿÿºH�5×H‰ïèE°ýÿ…À„…ºH�5þÖH‰ïè)°ýÿ…Àu\1ÒH�t$H�{èÕ¹ýÿˆ7>H‹D$€8t+H‹>#H�5÷Ð1ÿºH�XèDZýÿH‰ÞH‰Ç1Àè:rÿÿ€ ú=¸éœôÿÿºH�5õÐéFøÿÿ1ÒH�t$H�{èh¹ýÿˆÊ=H‹D$€8t+H‹Ñ"H�5RÐ1ÿºH�XèZ±ýÿH‰ÞH‰Ç1ÀèÍqÿÿ€%�=ï¸é/ôÿÿH�55ÖH‰ßèÍ´ýÿ…Àu€ i=¸é ôÿÿºH�5Öéµ÷ÿÿ€AUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èÕ±ýÿ‹ËÜ H‰ÞI‰E‰(¶¾Ü ˆT(I‹<$è±±ýÿH�5JÓI‰$H�Œ@þÿÿH‹7ÓH�yH‰H‹áÔHƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ã�AW1ÀAVAUATUSHƒìD¶zHAöÇ„ÔL‹jI‰þH‹~H‰ÓH‰õè[°ýÿL‰ïI‰ÄèP°ýÿIÄAƒç…»L‰÷è;°ýÿI�|衺ýÿH‹UM‰ðL‰éH‰ÇI‰ÄH�5Õ1À裸ýÿH‰ÞL‰çèØwÿÿ…À„°L‰cH‹{ ¾许ýÿ‰Â¸…ÒtFH‹S öBEt<¶CH‰Âƒâ€út¾õH�=7Û èÊpÿÿ¶CH¨„~H‹{ L‰îè’·ýÿ¸HƒÄ[]A\A]A^A_ÃfDI�|$èî¹ýÿH‹UH�5’ÕL‰éH‰ÇI‰Ä1Àèó·ýÿH‰ÞL‰çè(wÿÿ…À…PÿÿÿL‰ç‰D$ 褹ýÿ‹D$ HƒÄ[]A\A]A^A_Ã�H‹{è²ýÿI‰Åéqÿÿÿff.„@AWAVAUE1íATL�%;USHƒìhH‹);ƒx@„÷H‹-@<H…í„'€}„5H‹6;H…Û„�L�5~-ë@H‹›ðH…Û„€H‹CƒxuæH‹ƒøH‹¸H…ÿtÓ€?tÎèY°ýÿI‰Çë@ÆA€?…sHƒÀI‰Çtª¾5+<L‰ÿè»®ýÿH…ÀuÖA€?t�L‰þL‰÷èeïÿÿH‹›ðH…Ûu‰f„HƒìL‹ Ý,L‹Þ,H‰êH�D$ H‹ o;H‹5P;PH‹=P:ATÿ5`;èC³ýÿHƒÄ …À„—H‹= ;H…ÿtH‹\$H…ÛtH‰»°èµ­ýÿHƒÀH‰C8L‹=Æ&M…ÿ„ L�%ÄÒëj@H‹¹9Æ+E1É1ÒI‹O E1ÀH‰ÞH�=9ÿP(H‰ßèÄ·ýÿI‹FhH…ÀtH‹P@I‹N8H9ÊrH)ÊH‰P@A�N € IÇF8M‹0M…ÿ„šAöGHuìI‹ L‰æè7¯ýÿI‰ÆH…ÀtØH‹h8H�}èr·ýÿI‹ 1ÉI‰èH‰ÂL‰öH‰ÃèÛ¬ýÿ…À…SÿÿÿI‹G 1ÿºH�5QÌH‰$蘬ýÿH‹4$H‰Ç1Àè mÿÿé%ÿÿÿDH�=ËÑ褩ýÿH‰ÅH…À…Áýÿÿ1íéÄýÿÿ�è;YÿÿH‹=ä8H�5�8èH´ýÿ…Àt\M…ít¶D$foD$@AˆEH‹D$PAE I‰E0HƒÄh[]A\A]A^A_Ã1ÿºH�5‚Ëèý«ýÿH‰Ç1ÀèslÿÿéGþÿÿfD1ÿºH�5ZËèÕ«ýÿH‰Ç1ÀèKlÿÿë…f„H‹=I8L‰æèQ«ýÿ¶ê7ƒà<uE1íH�=ùèDuþÿéØüÿÿ€H‹=é7A¸1É1ÒH�5µÐèK®ýÿI‰ÅH…ÀtÀ¶@<v<u´H‹à7ºL‰îH�=�7H‹@H‹€hÿ�¸A¶Ea‰Âƒâ€út ƒàüƒÈAˆEaI‹E0óAoUIÇE0óAo] óAoMH‰D$PA¶E)L$ ˆD$H��)T$0)\$@AÆEI‰E(é'ÿÿÿ€L‰þL‰÷H‰$èìÿÿH‹$éuüÿÿ„AUATL�%ŒÐUH�-mÖ SH‰ûHƒìƒ{w6‹CHcD…Hèÿàf�E1ÉH‹S¹L‰çH‰Öó¦—À„ÀucH‹[ ƒ{vÊHƒÄ[]A\A]ÃfDH‹[ë­f�H‹{è‡ÿÿÿH‹{ è~ÿÿÿH‹[(ë“„H‹{ègÿÿÿë²DA¹ë‹„D‹C(H‹=u6D‰ÉH�56è¨ýÿ…À…{ÿÿÿL‹k1ÿºH�5¬Éè·©ýÿH‰ÇL‰î1Àè*jÿÿéRÿÿÿDƒt Ãf„H‹éçþÿÿ€AWAVAUATUSHƒìH‹‡øH‹WH‹€˜ L‹²hL‹`0H‹H(I‹D$hH‰L$H� ðH9È„ÿL‹¸àH‰ýM‹l$8I‹_HH…Û„«I\$`H‰Þ¿Iƒíÿ’�H‹EL‰ïH�sÿ��H‹EH�s¿ÿ��E‰èH�KH‰ïÇC GNUI‹†H‹t$H‹P 誥ÿÿI‹t$`1ÒIwH‰ïM‹l$8è"³ýÿ1Ò…ÀtHƒÄ‰Ð[]A\A]A^A_ÃH‰êL‰îH‰ß説ýÿ1ÒL9è”ÂëÔI‹œ$°H…Û…IÿÿÿL‰ïè÷²ýÿM‹l$8H‹UH‰ÃI‰„$°é(ÿÿÿfDºH�5LÈ1ÿè%¨ýÿH‰Ç1Àè›hÿÿºéuÿÿÿ�AWAVAUATUH‰ýS1ÛHƒìH‹=5è!¨ýÿD¾%ñ5H‰ïI‰Åë�H�x€?/J�+D‰æHDØèi¨ýÿH…ÀuäH‰ïèì§ýÿH�|èR²ýÿD¾5²5I‰ÇI‰Äë-f�D‰öH‰ïè5¨ýÿH…ÀtCH)èH‰îL‰çH�XH‰ÚIÜHÝèu¥ýÿ€}/uÏH‹5�4L‰çMìè­¥ýÿD‰öH‰ïèò§ýÿH…Àu½H‰îL‰çè’¥ýÿHƒÄL‰ø[]A\A]A^A_ÃAWAVAUATUSH�ì˜H‰|$H‰÷H‰t$(H�5â€èF®ýÿI‰Ç1ÀM…ÿ„濽I½:è±ýÿI‰Ä@M‰æë6H‰ÇL�uÿèô¦ýÿL‰òH)ÚH9Ðu?A€|,þ t7HíL‰çH‰î裧ýÿI‰ÄIÆL‰ó‰îL‰úL‰÷L)ã)Þè(©ýÿH…Àu³M9ô„S¾ L‰çè §ýÿH…Àtƾ#L‰çèø¦ýÿH…ÀtÆA¶$L‰ã< †O¹H‰ÞH�=œËó¦—À„Àu¶C< „:< „2¶H‰Ú<=wH¹: H£Ás ëQfDH‰Â¶JH�B€ù=wðH¿: H£ÏsàH9Ø„c€:/téÝD€xÿ/…ÎHƒèH9ØuíE1ö1ÀH‹L$H‹9H…ÿ„ÆH‹L$H‹AH‹IH�PJ�42H9΃ÐH‹L$H‰Q¶i3ˆH‹yH9L‰òH‰Þ茩ýÿH‹D$LpL‰pH‹BÆ0L‰ÿè©ýÿ…À„OþÿÿL‰ç误ýÿL‰ÿèç¤ýÿ¸H�Ę[]A\A]A^A_ÃHƒÃ¶< ‡±þÿÿI£Årë„Àt°é¢þÿÿf�H�D$@L�KH‰D$ f�A¶€ú „s€ú „j„Ò„{ÿÿÿL‰ËëDH‰ÃD¶sH�CA€þ „RA€þ „HE„öuÛH�CH‰D$„Ò„;ÿÿÿ€ú/„IH‹|$(¾/L‰L$0èe¥ýÿL‹L$0H‰D$L‰ÏL‰L$8èn¤ýÿH‹L$H+L$(H�|H‰ÃH‰L$è®ýÿH‹L$H‹t$(H‰ÇH‰D$HƒÁH‰ÊH‰L$0è?¨ýÿH‹L$0H‹D$H�SL‹L$8H�<L‰Îè ¨ýÿH‹L$ 1Ò1öH‹|$è}¬ýÿ…ÀuTHƒ|$@„J1ÛH‰l$0H‰ÝH‹\$fDH‹D$HH‰ßH‹4èHƒÅècüÿÿH;l$@räH‹|$ H‹l$0èÝ ýÿHƒ|$t H‹|$èû­ýÿL‹L$E„ö„&þÿÿA¶€ú …�þÿÿIƒÁéwþÿÿ€ÆA¶H�KH‰L$„ÒtÁéµþÿÿ€H‹L$ 1Ò1öL‰Ïè¿«ýÿ…Àu HÇD$Hƒ|$@…9ÿÿÿH‹|$ èL ýÿé|ÿÿÿ€H‹L$H)ØI‰ÆH‹9H…ÿ…:ýÿÿH�¸H‰yèY­ýÿH‰ÇH‹D$H‰8HÇ@éJýÿÿH‹D$J�´1H‰pè‹£ýÿH‰ÇH‹D$H‰8H‹@H�PéýÿÿH‹|$ èÉŸýÿéïþÿÿ1ÀE1öéºüÿÿf.„Hƒ=`!tÃDH‹G H…ÀtñATUSH‰ûH‰ÇH�ì�è£ýÿ¨t H�Ä�[]A\Ã�H‹{ H‰æèt¡ýÿ…À…ìH‹!H9$„«H‹”!¾/H‹hH‰ïès¢ýÿH…Àu±H�5XÇH‰ïèÿ«ýÿH…Àt�H‹{ H�hè}¢ýÿI‰ÄH…À„ºH‹J!H‰êL‰çH‹pH)òèè¢ýÿ…À…cÿÿÿH‹)!1ÿºH�5ÓÁH‹hH‹Xè^¡ýÿL‰áH‰ÇH‰êH‰Þ1ÀèËaÿÿé)ÿÿÿfDH‹D$H9\ …CÿÿÿH…À„:ÿÿÿH‰6 éüþÿÿf„H‹[ 1ÿºH�5qÆèù ýÿH‰ÇH‰Þ1ÀèlaÿÿéÊþÿÿH‹{èî£ýÿI‰Äé5ÿÿÿfD¶ -ƒà<u H� ·-H¸HºH#Ü,H9Ðté‚Lÿÿf�‹n-…ÀÇ`-égLÿÿ€HƒìºH�5Á1ÿèY ýÿH‰Ç1ÀèÏ`ÿÿÇ)-HƒÄé,Lÿÿff.„�Hƒì¾H�=ØË è+qÿÿ€ Ô+ H¸0 ÇÈ-Çú-H /,Æ0,gHƒÄÃAWAVA‰ÖAUATUSH‰ûHƒì(H‹‡ðH‰4$H‹@ÇD$ ‹hH‹;,H‹@ƒý”D$D‹huH‹‡à‹@‰D$ ¶Ä+ƒà<„Aƒý”Àö¯+@…åÇD$€|$„æ„À„Þ‹S ö„ÒH‹»àöG „ÁL‹=+M…ÿtZH�5Êf.„I‹G8H9ðt7H…Àt2H‹ˆàöA t%D‹P A1ÒD‰Ð©u‹G,9A,„è„M‹ M…ÿu·H�nÄH‰$÷ÂtHH�OÄH‰$öÂt8ƒâH�aÄH�LÄHDÂH‰$ëf„‹S öÂ…´ÇD$E…ö„“‹=I…ÿu\L�-2öM�¥°I‹}H…ÿt/1Ò1öèæzþÿI‰EH…Àt‹°ˆ…öuA‹U‰�ˆf„IƒÅ0M9åu¿Çé¶6*¨u2H‹3¹ H�=ÎÃó¦—€ڄÒuL‹=ÀõM…ÿ…×€ƒàD‹c <„‘H‹»ðI‰Ý€L‰îèø¢ýÿI‰ÅH…ÀtpIƒ}hI‹½ðuâA‹E ‰Â%€D1âƒâ ÂuÍöGEuÇH‹‡H…Àt»ö@HuµH‹“ðH‰ÙL‰îèó§ýÿ…ÀtA‹E AƒôƒðA ÄAƒôI‹½ðë„@A÷Ä uOL�-pöI‹EH…À„£HƒìD‰òE1ÉM‰èjH‹t$H‰ÁH‰ßè¶þÿI‰ÇXZHƒÄ(L‰ø[]A\A]A^A_ÃDAöÄ„îD‰àƒàtFƒ|$ u€|$L�-£õu‘ƒýt,H‹4$¹H�=…ÂL�-…õó¦—€ڄÒ„eÿÿÿDL�- õA÷Ä„LÿÿÿI�Å�A÷Ä@…8ÿÿÿI�íðA÷Ä…$ÿÿÿIƒÅ0AöÄ„ÿÿÿƒý„%H‹4$¹H�=óÁó¦—€ڄÒuL�-Êô…À…âþÿÿL�-ûóAöÄI�EÐLEèéÊþÿÿf.„H‹<$1Ò1öèsxþÿI‰ÇH…À„TýÿÿE1ä饀‹F …À„­3C ¨uvƒý…�Aƒý…“H‹ƒàH‹–à‹H,9J,uM¶ ¦'ƒá€ùuH‹RH3PH‰Ð©€u,H‹“ðH‹=Î'H‰Ùèæ¥ýÿ…ÀuBIƒ8MDçf„L‰ÿ1öè|þÿI‰ÇH…À„I‹w8H…ö…UÿÿÿM‰üëØ„I�L‰ù1ÒH‰Þèÿ„þÿéûýÿÿf.„E1í1ÀéÃýÿÿfDƒý„ßH‹4$¹H�=�ÀÇD$ó¦—À„À…$üÿÿH‹4$ÇD$€~a„ðH�PÀH‰$éþûÿÿf.„M‹]M…Û„Ù1Ò1öL‰ßè÷vþÿI‰EH…À…7ýÿÿH‹ çI�UD‰æH‰ßè”{þÿH…À…ýÿÿH‹ô%é ýÿÿ€A¾~M…ä„–ûÿÿI�|$L‰á1ÒH‰Þè„þÿM‰çéýÿÿ€‹L$ ƒùt-‰È1Ƀø H�ž¿HE$”Á‰L$H‰$Aƒý„iúÿÿé6ûÿÿH� n¿ÇD$H‰ $é-úÿÿH�V¿H‰$éûÿÿH‹H‹P%€xa”D$ ¶L$ H…Ò„ÿÿÿ1öD‰d$ E1É1íL‰l$L‰ØD‹l$I‰ôH‰\$L�=¿‰Ëé¨f.„L‹B0¹L‰ÿL‰Æó¦—Á€Ù„É…�A€xaA”ÂE…í…àA¶ÊH�5ã¾I�|¹ó¦—Á€Ù„É„»D8Ó@”ÆM…Ûtn@„öuiH‹J8H…ÀtH@„öuCH…Ét‹I öÁt ƒáI‰ÔHEêH‹J I‰ÑH…Ét:H‰Ê‹Š„…ɉTÿÿÿH‹J8ëÆfDH…ÉtÒ‹I öÁtÊH‰Ðë»fDI‰Óë’L‰áL‹l$D‹d$ H‹\$H…Àt I‰EéèýÿÿL‰ØM…ÛuïH‰èH…íuçH‰ÈH…ÉHDÂëÛL‰áL‹l$D‹d$ L‰ÊH‹\$ë¿‹L$ ƒù„êûÿÿƒù …ðûÿÿéÜûÿÿff.„f�ATH‹=W$H�5$USèIšýÿºH�5}¸…Àˆñ‰Ç» L�%×#ëCDH‹$H‹€øH‹�˜ H‹B8H9ńڃû H9Ńȿƒë„’è-¨þÿH‹=Ö#H‹Gƒx…¤A¶$ƒà<„”H‹‡øHƒ=é"H‹€˜ H‹h8t/„lè’ýÿL‰÷H‰D$è‚‘ýÿH‹|$H‰Ãèu‘ýÿH�|èÛ›ýÿH‹T$L‰ñH�5{·H‰ÃH‰Ç1Àèß™ýÿ¾/H‰ßè"’ýÿH…À„)ÆH‰ßI‰Þè+‘ýÿE‰íI)ìI�|è‹›ýÿI‰ÅM…ÿ„ŸI‰ØM�OH‰éD‰âH�5·L‰ï1Àè�™ýÿH‰ßèé�ýÿA�\H‰ïL‰íè9›ýÿL‰÷è1›ýÿ‰ß¾$Hïè2‘ýÿI‰ÄH…À„þ¾/L‰çI�\$è‘ýÿH‰ïI‰Çè™�ýÿI‰ÅM…ÿtAÆA¶D$H‰Þ<{u A¶D$I�t$H�VH‹='H�5ÐèëŽýÿH‰ÅH‰ÃH…À„0H�D$0H‰$H�D$ H‰D$H�D$@H‰D$€H‹{H…ÿt+è:�ýÿ¨…êH‹{H…ÿt·tf%€f=€„4I‰ìH9Ýt6@I‹|$H…ÿt èùŒýÿ¨uH‹sI‹|$è—�ýÿ…À„ïM‹$$I9ÜuÎH�=_õÿÿH‰ˆ HÇå èH†þÿH‹Ù H…Àt H‹x 裌ýÿ¨tWL‹cL‹k‹ ùL‰d$ L‰l$(L‰d$0…É…ËH‹› H…À„šH‹pH‹<$ºH‰t$8èÃõÿÿ…Àt€H‹H…Û…ôþÿÿ¶ˆƒàÀ<€…þÿÿ1ÿH�5qèœ�ýÿ…À…þÿÿ1ÿºH�5®è‹ýÿH‰Ç1Àè‡Kÿÿéãýÿÿf�L9ãu£éÿÿÿfDèÛ‹ýÿ¨u�é¾þÿÿf�E1äL‹t$H‹=iD‰âL‰öè&øÿÿ…À…fÿÿÿH‹=GH…ÿ„è™âÿÿD‰âL‰öH‰ÇI‰Åèø÷ÿÿL‰ïA‰Çè•ýÿE…ÿ…,ÿÿÿHƒ=uHƒ=„ÏH�=±è�‡ýÿH…ÀtH‹t$D‰âH‰Çè«÷ÿÿ…À…ëþÿÿH‹=ÌH�5uè‰ýÿI‰ÇH…ÀuëfDL‰Ç訔ýÿM‹?M…ÿt`E„öt[I‹E1íA¾èéáÿÿI‰ÀH‹CI9GuÌH‹t$L‰ÇD‰âL‰D$E1íè4÷ÿÿL‹D$…ÀL‰ÇA•ÅA”ÆèM”ýÿM‹?M…ÿu¥DE…í…Oþÿÿ‹‰L‹-z…Ò„ûH‹{M…ít*H‹CH‹t$H‰|$HD‰âL‰ïH‰D$@èËöÿÿ…À… þÿÿH‹{芉ýÿL‹=“I‰ÅM…ÿtfA‹G…ÀuSI‹èg‰ýÿI�|èÍ“ýÿI‹WH‹KH�5m¯I‰ÆH‰Ç1ÀèÑ‘ýÿH‹<$D‰âL‰öL‰t$8è]óÿÿ…À…�ýÿÿL‰÷è}“ýÿM‹?M…ÿu�Aƒü…L‹cL‹k1ÿºH�5í«èÀˆýÿL‰âL‰îH‰Ç1Àè0IÿÿéSýÿÿHƒ=;…1þÿÿH�=è­èÁ…ýÿH…À„þÿÿ€8„þÿÿH‹t$D‰âH‰ÇèÏõÿÿ…À„ûýÿÿé ýÿÿf�H‹ùH…Û„²ûÿÿE1öE1íE1äA¿L� êûL�²®L�»®ëf.„H‹›ðH…Û„½H‹ƒö@HuãH‹ƒ�H…ÀtwE1Àë/f�H‰Ö¹ L‰ßó¦—€ڄÒu Hƒx8 ECÇH‹@H…À„¶H‹L9Hhtê¹H‰ÖL‰×ó¦—Á€Ù„Éu³A¸E…ö„”E9ð…M…䄎f�Aƒþ…Vÿÿÿ¶²H‹›ðƒà?ƒÈ€ˆŸH…Û…CÿÿÿM…ä„:I‹D$H�5×­L‰çH‹€h‹P0ƒÊ艅ýÿH…À„Ç@pH‰…(éoúÿÿE…ÀtˆéfÿÿÿE‰ÆM…ä…tÿÿÿAƒøt ö*À„aÿÿÿH‹CA½ƒxLDãéJÿÿÿA¼éâûÿÿ1ÿºH�5X­謆ýÿL‰âL‰îH‰Ç1Àè|Fÿÿé ûÿÿH‹=¸1ÒH�5P­1ÀHÇD$@HÇD$PHÇD$H赇ýÿH‹|$H‰ÆI‰Åè%ßÿÿ…ÀtlL‰ïèÙ�ýÿH‹|$@L‹-H…ÿtè#ÞÿÿH‹|$@I‰ÅH‰è¯�ýÿÇýé~üÿÿE…í„iùÿÿ1ÿºH�5©¨èô…ýÿH‰Ç1ÀèjFÿÿéGùÿÿL‰ïèm�ýÿH‹=þ1Ò1ÀH�5˜¬è‡ýÿH‹|$H‰ÆI‰Åè†Þÿÿé`ÿÿÿH‹ 1ÿºH�5L§è—…ýÿH‰ÇH‰Þ1Àè FÿÿéT÷ÿÿºH�5‰§épøÿÿAƒøºH�5ħIEÜ1ÿèY…ýÿH‰ÇH‰Þ1ÀèÌEÿÿéôýÿÿ€‹B…ÀuH‹G H…Àtö@EuÃfDAUATUSH‰ûH‰ÇHƒìèÛ…ýÿI‰ÄH…À„�H‹H…ÛtqL�-}ªëf.„H‹H…ÛtVH‹sL‰çè,„ýÿ…ÀtèH‹k¾/H‰ïèW…ýÿH…ÀuÒL‰îH‰ïèçŽýÿH…ÀtÂH�PH‰îL‰çH)êèð…ýÿ…Àu¬ÇŠHƒÄ[]A\A]ÀH‹C H‹8èt‡ýÿI‰Äé]ÿÿÿf.„f�Ƕƒƒâ€ú„Ÿ‹5!H�ê …ö„†‹ ÜH��? …É„qH‹5FH¹ @H¸ @H!ñH9Á„†H¿@H¸@H!÷H9Ç„NI¸@H�mÆ I¹@I!ðM9È„D‹ ØH�ñç A�á A�ù „áH�– €ú„ÑH¸ @H9Á„H¸@H9Ç„—H¹@H�†� I9È„‘H�>¯ A�ù „}H�Úƒ €útqH¸ @H‰òH!ÂH9„ÎH¸@H!ÆH9Æ„ÒH�ŸÒ ö@u2ö  H�°Ð H�Á® HDÂÃ@H�Yo öš„UÿÿÿË=^H�3 H�ìó …ÿHDÂÃDH�©£ öb„žþÿÿÃöQH�2` H�“ò HEÂÃfDö1H�ª, H�«M HEÂÃöH�P8 H�i HDÂÃH�E[ öö„ÿÿÿÀATUH‰ýS¾_H‰ØÁë‰Âƒâ¨@u'ƒËL‹g „ÒtAöD$EuLAöD$Eu,[1À]A\ÃD„Òt L‹g AöD$Eu(…ÛtàL‹e AöD$EtÔ‰ÞL‰çè&†ýÿ[1À]A\À1ÿH�5¿œºèe�ýÿL‰æH‰Ç1ÀèØAÿÿ…Ût˜ë¶f�SºH‰ûH�5Èœ1ÿè9�ýÿH‰ßH‰Æ1Àèü„ýÿºH�5øœ1ÿè�ýÿH‰ßH‰Æ1ÀèÜ„ýÿºH�5°�1ÿèù€ýÿH‰ßH‰Æ1À輄ýÿºH�5Ø�1ÿèÙ€ýÿH‰ßH‰Æ1À蜄ýÿºH�5ø�1ÿè¹€ýÿH‰ßH‰Æ1Àè|„ýÿH�5%ž1ÿº虀ýÿH‰ß[H‰Æ1Àé[„ýÿff.„AWAVAUATUH‰õSHƒìL‹7H‰|$H‰÷M…ö„«è†€ýÿD¾%VM‰÷H‰ÃE‰åë HƒÀI‰Çt0H‰ÚL‰þH‰ïèI~ýÿ…ÀuA¶„ÀtXD8ètSD‰æL‰ÿ謀ýÿH…ÀuÇL‰÷è/€ýÿH�|蕊ýÿL‹t$I‰è¾ î H‰ÃH�5–U1ÀI‹H‰ßè�ˆýÿI‹>èWŠýÿI‰HƒÄ[]A\A]A^A_ÃDè»�ýÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@USHƒì�ÿ’„žŽ˜�ÿ–„¬ŽÆ�ÿ˜„ Œ”�ÿ™…HH‹¡ðH�5jYH‰ßè}ýÿ…À„úH�5˜¢H‰ßèë|ýÿ…À„CH�5†¢H‰ßèÔ|ýÿ…À…§Ç> ¸HƒÄ[]ÃfD�ÿ-„„~b�ÿ�„Ö�è�ÿ.…´€ ò ¸ë¹fD�ÿ”„\�n¶Ê ƒà?ƒÈ@ˆ¾ ¸ë‡@ƒÿP„gƒÿzubH‹»ï¹H�=ZH‰Þó¦—À„À„%¹H�=È¡H‰Þó¦—À„À…Ÿ¶Z ƒàŸƒÈ ˆN ¸éÿÿÿf�HƒÄ1À[]À€%. þ¸éòþÿÿ€€  ¸éÚþÿÿ€H‹=‰ýH…ÿtè?ˆýÿHÇtýH‹ýîH…Ò„¬¹H�=¸WH‰Ö¸ó¦—Á€Ù„É„ƒþÿÿH‰×èxýÿH‰1ý¸éjþÿÿ€€%Ž ý¸éRþÿÿ€€%t ?¸é:þÿÿ€H‹=yîèôlþÿ¸éþÿÿf.„H‹5YîH�=Êüèmüÿÿ¸éöýÿÿHƒ Ø ¸f� àéØýÿÿD¶ýH‹î¹H�=3 ƒàóH‰ÞˆÞó¦—€ڄÒ„йH�=ýŸH‰Þó¦—€ڄÒ…³ƒÈˆ¦¸ékýÿÿ„H‹5©íH�="üè½ûÿÿ¸éFýÿÿÇr¸é/ýÿÿ@€ S`¸éýÿÿ€ƒÈˆ;¸éýÿÿDH�‰�H‰:íéeþÿÿDǸéÏüÿÿ@¹H�=>ŸH‰Þó¦—€ڄÒ…ƒÈ ˆÔ¸é™üÿÿfD¹H�=ŸH‰Þó¦—À„ÀuR€ ¤¸éhüÿÿH�5ÑžH‰ßèyýÿºH�5Z™…À„bÿÿÿ1ÿè+{ýÿH‰ÞH‰Ç1Àèž;ÿÿ¸é'üÿÿ¹H�=®žH‰Þó¦—À„À„‰¹H�=ŸžH‰Þó¦—À„À„ɹ H�=“žH‰Þó¦—À„À„0¹ H�=ƒžH‰Þó¦—À„À…Ô‹Ú%ÿþÿ€Ì€‰Ì¸é‘ûÿÿºH�5ʘé;ÿÿÿ1ÒH�t$H�{è=‚ýÿH‹T$H‰‰€:u H�PÿH…„’ûÿÿH‹˜ëºH�5¤˜H�X1ÿè!zýÿH‰ÞH‰Ç1Àè”:ÿÿébûÿÿ1ÒH�t$H�{èß�ýÿH‹T$H‰3€:u H�PÿH…„4ûÿÿH‹:ëºH�5n˜H�Xë ¹ H�=��H‰Þó¦—À„À…‘‹è%ÿþÿ ‰Ø¸é�úÿÿ1ÒH�t$H�{ èZ�ýÿH‹T$H‰¾€:u#H…ÀxHƒ=¬…©úÿÿHÇ›ÿÿÿÿé™úÿÿH‹Ÿê1ÿºH�5ù—H�X è(yýÿH‰ÞH‰Ç1Àè›9ÿÿëµH�5ñœH‰ßèª|ýÿ…ÀuH� û¸éúÿÿH�5 wH‰ßè‚|ýÿ…ÀuHƒ Ö¸éßùÿÿH�5°œH‰ßè]|ýÿ…ÀuHƒ ± ¸éºùÿÿH�5•œH‰ßè8|ýÿ…ÀuH� ‰¸é’ùÿÿH�5wœH‰ßè|ýÿ…ÀuHƒ d¸émùÿÿH�5[œH‰ßèë{ýÿ…ÀuH� <¸éEùÿÿH�5@œH‰ßèÃ{ýÿ…ÀuHƒ ¸é ùÿÿH�5$œH‰ßèž{ýÿ…ÀuHƒ ò@¸éûøÿÿH�5œH‰ßèy{ýÿ…ÀuH� ʸéÓøÿÿH�5ÃtH‰ßèQ{ýÿ…ÀuHƒ �¸Hƒ ˜馸ÿÿH�5º›H‰ßè${ýÿ…ÀuHƒ%p÷¸Hƒ%kþéyøÿÿH�5’›H‰ßè÷zýÿ…ÀuHƒ C¸H� ;€éIøÿÿH�5k›H‰ßèÇzýÿ…Àu€ `@¸é%øÿÿH�5E›H‰ßè£zýÿ…Àu€%<¿¸éøÿÿH�5-›H‰ßèzýÿ…Àu€ ¸éÝ÷ÿÿH�5›H‰ßè[zýÿ…Àu€ ó¸é¹÷ÿÿH�5ñšH‰ßè7zýÿ…Àu€%Ïï¸é•÷ÿÿH�5ךH‰ßèzýÿ…Àu€ « ¸éq÷ÿÿH�5±šH‰ßèïyýÿ…Àu€%‡߸éM÷ÿÿH�5 SH‰ßèËyýÿ…Àu¶bƒàùƒÈˆV¸é÷ÿÿH�5mšH‰ßè›yýÿ…Àu¶2ƒàùƒÈˆ&¸éíöÿÿH�5bJH‰ßèkyýÿ…Àu€ ¸éÉöÿÿH�5"šH‰ßèGyýÿ…Àu€%àý¸é¥öÿÿH�5šH‰ßè#yýÿ…ÀtÜH�5ú™H‰ßèyýÿ…ÀuÇB¸éköÿÿH�5í™H‰ßèéxýÿ…ÀuǸéDöÿÿH�5Ä™H‰ßèÂxýÿ…ÀuÇø¸éöÿÿº H�5™H‰ßèsýÿ…Àu6H�k H�5µ™H‰ïèxýÿ…ÀuC·f%ï€Ìgf‰ ¸éÏõÿÿH�5ª™H‰ßèMxýÿ…ÀuD€ 耸é«õÿÿH�5k™H‰ïè)xýÿ…ÀuH·Åf%ïf �f‰¶¸éxõÿÿH�5Z™H‰ßèöwýÿ…À…€ ޏéPõÿÿºH�5™H‰ïèIrýÿ…À„…ºH�5™H‰ïè-rýÿ…Àu\1ÒH�t$H�{èÙ{ýÿˆ;H‹D$€8t+H‹BåH�5û’1ÿºH�XèËsýÿH‰ÞH‰Ç1Àè>4ÿÿ€ þÿ¸éÀôÿÿºH�5ù’éjøÿÿ1ÒH�t$H�{èl{ýÿˆÎÿH‹D$€8t+H‹ÕäH�5V’1ÿºH�Xè^sýÿH‰ÞH‰Ç1ÀèÑ3ÿÿ€%‘ÿï¸éSôÿÿH�59˜H‰ßèÑvýÿ…Àu€ mÿ¸é/ôÿÿºH�5˜éÙ÷ÿÿff.„AUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èÕsýÿ‹Ãm H‰ÞI‰E‰(¶¶m ˆT(I‹<$è±sýÿH�5 —I‰$H�Œ@þÿÿH‹÷–H�yH‰H‹¡˜HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ã�AW1ÀAVAUATUSHƒìD¶zHAöÇ„ÔL‹jI‰þH‹~H‰ÓH‰õè[rýÿL‰ïI‰ÄèPrýÿIÄAƒç…»L‰÷è;rýÿI�|è¡|ýÿH‹UM‰ðL‰éH‰ÇI‰ÄH�5—1Àè£zýÿH‰ÞL‰çèØ9ÿÿ…À„°L‰cH‹{ ¾è®zýÿ‰Â¸…ÒtFH‹S öBEt<¶CH‰Âƒâ€út¾õH�=Dl èÊ2ÿÿ¶CH¨„~H‹{ L‰îè’yýÿ¸HƒÄ[]A\A]A^A_ÃfDI�|$èî{ýÿH‹UH�5’—L‰éH‰ÇI‰Ä1ÀèóyýÿH‰ÞL‰çè(9ÿÿ…À…PÿÿÿL‰ç‰D$ è¤{ýÿ‹D$ HƒÄ[]A\A]A^A_Ã�H‹{ètýÿI‰Åéqÿÿÿff.„@AWAVAUE1íATL�%ýUSHƒìhH‹)ýƒx@„÷H‹-@þH…í„'€}„5H‹6ýH…Û„�L�5^ðë@H‹›ðH…Û„€H‹CƒxuæH‹ƒøH‹¸H…ÿtÓ€?tÎèYrýÿI‰Çë@ÆA€?…sHƒÀI‰Çtª¾5+þL‰ÿè»pýÿH…ÀuÖA€?t�L‰þL‰÷è…ïÿÿH‹›ðH…Ûu‰f„HƒìL‹ ½ïL‹¾ïH‰êH�D$ H‹ oýH‹5PýPH‹=PüATÿ5`ýèCuýÿHƒÄ …À„—H‹= ýH…ÿtH‹\$H…ÛtH‰»°èµoýÿHƒÀH‰C8L‹=ÆèM…ÿ„ L�%Ä”ëj@H‹¹ûÆ+E1É1ÒI‹O E1ÀH‰ÞH�=ûÿP(H‰ßèÄyýÿI‹FhH…ÀtH‹P@I‹N8H9ÊrH)ÊH‰P@A�N € IÇF8M‹0M…ÿ„šAöGHuìI‹ L‰æè7qýÿI‰ÆH…ÀtØH‹h8H�}èryýÿI‹ 1ÉI‰èH‰ÂL‰öH‰ÃèÛnýÿ…À…SÿÿÿI‹G 1ÿºH�5QŽH‰$è˜nýÿH‹4$H‰Ç1Àè /ÿÿé%ÿÿÿDH�=Ë“è¤kýÿH‰ÅH…À…Áýÿÿ1íéÄýÿÿ�è;ÿÿH‹=äúH�5�úèHvýÿ…Àt\M…ít¶D$foD$@AˆEH‹D$PAE I‰E0HƒÄh[]A\A]A^A_Ã1ÿºH�5‚�èýmýÿH‰Ç1Àès.ÿÿéGþÿÿfD1ÿºH�5Z�èÕmýÿH‰Ç1ÀèK.ÿÿë…f„H‹=IúL‰æèQmýÿ¶êùƒà<uE1íH�=ùèD7þÿéØüÿÿ€H‹=éùA¸1É1ÒH�5µ’èKpýÿI‰ÅH…ÀtÀ¶@<v<u´H‹àùºL‰îH�=�ùH‹@H‹€hÿ�¸A¶Ea‰Âƒâ€út ƒàüƒÈAˆEaI‹E0óAoUIÇE0óAo] óAoMH‰D$PA¶E)L$ ˆD$H��à)T$0)\$@AÆEI‰E(é'ÿÿÿ€L‰þL‰÷H‰$è1ìÿÿH‹$éuüÿÿ„AUATL�%Œ’UH�-eg SH‰ûHƒìƒ{w6‹CHcD…Hèÿàf�E1ÉH‹S¹L‰çH‰Öó¦—À„ÀucH‹[ ƒ{vÊHƒÄ[]A\A]ÃfDH‹[ë­f�H‹{è‡ÿÿÿH‹{ è~ÿÿÿH‹[(ë“„H‹{ègÿÿÿë²DA¹ë‹„D‹C(H‹=uøD‰ÉH�5øèjýÿ…À…{ÿÿÿL‹k1ÿºH�5¬‹è·kýÿH‰ÇL‰î1Àè*,ÿÿéRÿÿÿDƒt Ãf„H‹éçþÿÿ€AWAVAUATUSHƒìH‹‡øH‹WH‹€˜ L‹²hL‹`0H‹H(I‹D$hH‰L$H� ðÞH9È„ÿL‹¸àH‰ýM‹l$8I‹_HH…Û„«I\$`H‰Þ¿Iƒíÿ’�H‹EL‰ïH�sÿ��H‹EH�s¿ÿ��E‰èH�KH‰ïÇC GNUI‹†H‹t$H‹P èªgÿÿI‹t$`1ÒIwH‰ïM‹l$8è"uýÿ1Ò…ÀtHƒÄ‰Ð[]A\A]A^A_ÃH‰êL‰îH‰ßèªnýÿ1ÒL9è”ÂëÔI‹œ$°H…Û…IÿÿÿL‰ïè÷týÿM‹l$8H‹UH‰ÃI‰„$°é(ÿÿÿfDºH�5LŠ1ÿè%jýÿH‰Ç1Àè›*ÿÿºéuÿÿÿ�AWAVAUATUH‰ýS1ÛHƒìH‹=÷è!jýÿD¾%ñ÷H‰ïI‰Åë�H�x€?/J�+D‰æHDØèijýÿH…ÀuäH‰ïèìiýÿH�|èRtýÿD¾5²÷I‰ÇI‰Äë-f�D‰öH‰ïè5jýÿH…ÀtCH)èH‰îL‰çH�XH‰ÚIÜHÝèugýÿ€}/uÏH‹5�öL‰çMìè­gýÿD‰öH‰ïèòiýÿH…Àu½H‰îL‰çè’gýÿHƒÄL‰ø[]A\A]A^A_ÃAWAVAUATUSH�ì˜H‰|$H‰÷H‰t$(H�5âBèFpýÿI‰Ç1ÀM…ÿ„濽I½:èsýÿI‰Ä@M‰æë6H‰ÇL�uÿèôhýÿL‰òH)ÚH9Ðu?A€|,þ t7HíL‰çH‰îè£iýÿI‰ÄIÆL‰ó‰îL‰úL‰÷L)ã)Þè(kýÿH…Àu³M9ô„S¾ L‰çè iýÿH…Àtƾ#L‰çèøhýÿH…ÀtÆA¶$L‰ã< †O¹H‰ÞH�=œ�ó¦—À„Àu¶C< „:< „2¶H‰Ú<=wH¹: H£Ás ëQfDH‰Â¶JH�B€ù=wðH¿: H£ÏsàH9Ø„c€:/téÝD€xÿ/…ÎHƒèH9ØuíE1ö1ÀH‹L$H‹9H…ÿ„ÆH‹L$H‹AH‹IH�PJ�42H9΃ÐH‹L$H‰Q¶iõˆH‹yH9L‰òH‰ÞèŒkýÿH‹D$LpL‰pH‹BÆ0L‰ÿèkýÿ…À„OþÿÿL‰çè¯qýÿL‰ÿèçfýÿ¸H�Ę[]A\A]A^A_ÃHƒÃ¶< ‡±þÿÿI£Årë„Àt°é¢þÿÿf�H�D$@L�KH‰D$ f�A¶€ú „s€ú „j„Ò„{ÿÿÿL‰ËëDH‰ÃD¶sH�CA€þ „RA€þ „HE„öuÛH�CH‰D$„Ò„;ÿÿÿ€ú/„IH‹|$(¾/L‰L$0èegýÿL‹L$0H‰D$L‰ÏL‰L$8ènfýÿH‹L$H+L$(H�|H‰ÃH‰L$èÂpýÿH‹L$H‹t$(H‰ÇH‰D$HƒÁH‰ÊH‰L$0è?jýÿH‹L$0H‹D$H�SL‹L$8H�<L‰Îè jýÿH‹L$ 1Ò1öH‹|$è}nýÿ…ÀuTHƒ|$@„J1ÛH‰l$0H‰ÝH‹\$fDH‹D$HH‰ßH‹4èHƒÅècüÿÿH;l$@räH‹|$ H‹l$0èÝbýÿHƒ|$t H‹|$èûoýÿL‹L$E„ö„&þÿÿA¶€ú …�þÿÿIƒÁéwþÿÿ€ÆA¶H�KH‰L$„ÒtÁéµþÿÿ€H‹L$ 1Ò1öL‰Ïè¿mýÿ…Àu HÇD$Hƒ|$@…9ÿÿÿH‹|$ èLbýÿé|ÿÿÿ€H‹L$H)ØI‰ÆH‹9H…ÿ…:ýÿÿH�¸H‰yèYoýÿH‰ÇH‹D$H‰8HÇ@éJýÿÿH‹D$J�´1H‰pè‹eýÿH‰ÇH‹D$H‰8H‹@H�PéýÿÿH‹|$ èÉaýÿéïþÿÿ1ÀE1öéºüÿÿf.„Hƒ=@ätÃDH‹G H…ÀtñATUSH‰ûH‰ÇH�ì�èeýÿ¨t H�Ä�[]A\Ã�H‹{ H‰æètcýÿ…À…ìH‹õãH9$„«H‹tä¾/H‹hH‰ïèsdýÿH…Àu±H�5X‰H‰ïèÿmýÿH…Àt�H‹{ H�hè}dýÿI‰ÄH…À„ºH‹*äH‰êL‰çH‹pH)òèèdýÿ…À…cÿÿÿH‹ ä1ÿºH�5ÓƒH‹hH‹Xè^cýÿL‰áH‰ÇH‰êH‰Þ1ÀèË#ÿÿé)ÿÿÿfDH‹D$H9<ã…CÿÿÿH…À„:ÿÿÿH‰ãéüþÿÿf„H‹[ 1ÿºH�5qˆèùbýÿH‰ÇH‰Þ1Àèl#ÿÿéÊþÿÿH‹{èîeýÿI‰Äé5ÿÿÿfD¶ ïƒà<u H� ·ïH¸HºH#ÜîH9Ðté‚ÿÿf�‹nï…ÀÇ`ïégÿÿ€HƒìºH�5ƒ1ÿèYbýÿH‰Ç1ÀèÏ"ÿÿÇ)ïHƒÄé,ÿÿff.„�Hƒì¾H�=ð\ è+3ÿÿ€ Ôí H¸0 ÇÈïÇúïH /îÆ0îgHƒÄÃAWAVA‰ÖAUATUSH‰ûHƒì(H‹‡ðH‰4$H‹@ÇD$ ‹hH‹;îH‹@ƒý”D$D‹huH‹‡à‹@‰D$ ¶Äíƒà<„Aƒý”Àö¯í@…åÇD$€|$„æ„À„Þ‹S ö„ÒH‹»àöG „ÁL‹=íM…ÿtZH�5ÊÔf.„I‹G8H9ðt7H…Àt2H‹ˆàöA t%D‹P A1ÒD‰Ð©u‹G,9A,„è„M‹ M…ÿu·H�n†H‰$÷ÂtHH�O†H‰$öÂt8ƒâH�a†H�L†HDÂH‰$ëf„‹S öÂ…´ÇD$E…ö„“‹=)à…ÿu\L�-ÒºM�¥°I‹}H…ÿt/1Ò1öèæ<þÿI‰EH…Àt‹°ˆ…öuA‹U‰�ˆf„IƒÅ0M9åu¿ÇÉß¶6ì¨u2H‹3¹ H�=Î…ó¦—€ڄÒuL‹=`ºM…ÿ…×€ƒàD‹c <„‘H‹»ðI‰Ý€L‰îèødýÿI‰ÅH…ÀtpIƒ}hI‹½ðuâA‹E ‰Â%€D1âƒâ ÂuÍöGEuÇH‹‡H…Àt»ö@HuµH‹“ðH‰ÙL‰îèóiýÿ…ÀtA‹E AƒôƒðA ÄAƒôI‹½ðë„@A÷Ä uOL�-»I‹EH…À„£HƒìD‰òE1ÉM‰èjH‹t$H‰ÁH‰ßèxþÿI‰ÇXZHƒÄ(L‰ø[]A\A]A^A_ÃDAöÄ„îD‰àƒàtFƒ|$ u€|$L�-Cºu‘ƒýt,H‹4$¹H�=…„L�-%ºó¦—€ڄÒ„eÿÿÿDL�-©¹A÷Ä„LÿÿÿI�Å�A÷Ä@…8ÿÿÿI�íðA÷Ä…$ÿÿÿIƒÅ0AöÄ„ÿÿÿƒý„%H‹4$¹H�=óƒó¦—€ڄÒuL�-j¹…À…âþÿÿL�-›¸AöÄI�EÐLEèéÊþÿÿf.„H‹<$1Ò1öès:þÿI‰ÇH…À„TýÿÿE1ä饀‹F …À„­3C ¨uvƒý…�Aƒý…“H‹ƒàH‹–à‹H,9J,uM¶ ¦éƒá€ùuH‹RH3PH‰Ð©€u,H‹“ðH‹=ÎéH‰Ùèægýÿ…ÀuBIƒ8MDçf„L‰ÿ1öè>þÿI‰ÇH…À„I‹w8H…ö…UÿÿÿM‰üëØ„I�L‰ù1ÒH‰ÞèÿFþÿéûýÿÿf.„E1í1ÀéÃýÿÿfDƒý„ßH‹4$¹H�=�‚ÇD$ó¦—À„À…$üÿÿH‹4$ÇD$€~a„ðH�P‚H‰$éþûÿÿf.„M‹]M…Û„Ù1Ò1öL‰ßè÷8þÿI‰EH…À…7ýÿÿH‹ ©I�UD‰æH‰ßè”=þÿH…À…ýÿÿH‹ôçé ýÿÿ€A¾~M…ä„–ûÿÿI�|$L‰á1ÒH‰ÞèFþÿM‰çéýÿÿ€‹L$ ƒùt-‰È1Ƀø H�ž�HE$”Á‰L$H‰$Aƒý„iúÿÿé6ûÿÿH� n�ÇD$H‰ $é-úÿÿH�V�H‰$éûÿÿH‹H‹Pç€xa”D$ ¶L$ H…Ò„ÿÿÿ1öD‰d$ E1É1íL‰l$L‰ØD‹l$I‰ôH‰\$L�=�‰Ëé¨f.„L‹B0¹L‰ÿL‰Æó¦—Á€Ù„É…�A€xaA”ÂE…í…àA¶ÊH�5ã€I�|¹ó¦—Á€Ù„É„»D8Ó@”ÆM…Ûtn@„öuiH‹J8H…ÀtH@„öuCH…Ét‹I öÁt ƒáI‰ÔHEêH‹J I‰ÑH…Ét:H‰Ê‹Š„…ɉTÿÿÿH‹J8ëÆfDH…ÉtÒ‹I öÁtÊH‰Ðë»fDI‰Óë’L‰áL‹l$D‹d$ H‹\$H…Àt I‰EéèýÿÿL‰ØM…ÛuïH‰èH…íuçH‰ÈH…ÉHDÂëÛL‰áL‹l$D‹d$ L‰ÊH‹\$ë¿‹L$ ƒù„êûÿÿƒù …ðûÿÿéÜûÿÿff.„f�ATH‹=WæH�5æUSèI\ýÿºH�5}z…Àˆñ‰Ç» L�%×åëCDH‹æH‹€øH‹�˜ H‹B8H9ńڃû H9Ńȿƒë„’è-jþÿH‹=ÖåH‹Gƒx…¤A¶$ƒà<„”H‹‡øHƒ=éäH‹€˜ H‹h8t/„lèTýÿL‰÷H‰D$è‚SýÿH‹|$H‰ÃèuSýÿH�|èÛ]ýÿH‹T$L‰ñH�5{yH‰ÃH‰Ç1Àèß[ýÿ¾/H‰ßè"TýÿH…À„)ÆH‰ßI‰Þè+SýÿE‰íI)ìI�|è‹]ýÿI‰ÅM…ÿ„ŸI‰ØM�OH‰éD‰âH�5yL‰ï1Àè�[ýÿH‰ßèéRýÿA�\H‰ïL‰íè9]ýÿL‰÷è1]ýÿ‰ß¾$Hïè2SýÿI‰ÄH…À„þ¾/L‰çI�\$èSýÿH‰ïI‰Çè™RýÿI‰ÅM…ÿtAÆA¶D$H‰Þ<{u A¶D$I�t$H�VH‹='ÛH�5ÐÚèëPýÿH‰ÅH‰ÃH…À„0H�D$0H‰$H�D$ H‰D$H�D$@H‰D$€H‹{H…ÿt+è:Oýÿ¨…êH‹{H…ÿt·tÚf%€f=€„4I‰ìH9Ýt6@I‹|$H…ÿt èùNýÿ¨uH‹sI‹|$è—Qýÿ…À„ïM‹$$I9ÜuÎH�=_õÿÿH‰hÎHÇÅÍèHHþÿH‹¹ÍH…Àt H‹x è£Nýÿ¨tWL‹cL‹k‹ ùÛL‰d$ L‰l$(L‰d$0…É…ËH‹{ÍH…À„šH‹pH‹<$ºH‰t$8èÃõÿÿ…Àt€H‹H…Û…ôþÿÿ¶ˆÙƒàÀ<€…þÿÿ1ÿH�5qÙèœRýÿ…À…þÿÿ1ÿºH�5pèMýÿH‰Ç1Àè‡ ÿÿéãýÿÿf�L9ãu£éÿÿÿfDèÛMýÿ¨u�é¾þÿÿf�E1äL‹t$H‹=iÚD‰âL‰öè&øÿÿ…À…fÿÿÿH‹=GÚH…ÿ„è™âÿÿD‰âL‰öH‰ÇI‰Åèø÷ÿÿL‰ïA‰ÇèWýÿE…ÿ…,ÿÿÿHƒ=ÚuHƒ=Ú„ÏH�=sè�IýÿH…ÀtH‹t$D‰âH‰Çè«÷ÿÿ…À…ëþÿÿH‹=ÌØH�5uØèKýÿI‰ÇH…ÀuëfDL‰Çè¨VýÿM‹?M…ÿt`E„öt[I‹E1íA¾èéáÿÿI‰ÀH‹CI9GuÌH‹t$L‰ÇD‰âL‰D$E1íè4÷ÿÿL‹D$…ÀL‰ÇA•ÅA”ÆèMVýÿM‹?M…ÿu¥DE…í…Oþÿÿ‹iËL‹-ZË…Ò„ûH‹{M…ít*H‹CH‹t$H‰|$HD‰âL‰ïH‰D$@èËöÿÿ…À… þÿÿH‹{èŠKýÿL‹=“ÚI‰ÅM…ÿtfA‹G…ÀuSI‹ègKýÿI�|èÍUýÿI‹WH‹KH�5mqI‰ÆH‰Ç1ÀèÑSýÿH‹<$D‰âL‰öL‰t$8è]óÿÿ…À…�ýÿÿL‰÷è}UýÿM‹?M…ÿu�Aƒü…L‹cL‹k1ÿºH�5ímèÀJýÿL‰âL‰îH‰Ç1Àè0 ÿÿéSýÿÿHƒ=;Ø…1þÿÿH�=èoèÁGýÿH…À„þÿÿ€8„þÿÿH‹t$D‰âH‰ÇèÏõÿÿ…À„ûýÿÿé ýÿÿf�H‹ùÖH…Û„²ûÿÿE1öE1íE1äA¿L� ê½L�²pL�»pëf.„H‹›ðH…Û„½H‹ƒö@HuãH‹ƒ�H…ÀtwE1Àë/f�H‰Ö¹ L‰ßó¦—€ڄÒu Hƒx8 ECÇH‹@H…À„¶H‹L9Hhtê¹H‰ÖL‰×ó¦—Á€Ù„Éu³A¸E…ö„”E9ð…M…䄎f�Aƒþ…Vÿÿÿ¶²ÕH‹›ðƒà?ƒÈ€ˆŸÕH…Û…CÿÿÿM…ä„:I‹D$H�5×oL‰çH‹€h‹P0ƒÊè‰GýÿH…À„Ç@pH‰…(éoúÿÿE…ÀtˆéfÿÿÿE‰ÆM…ä…tÿÿÿAƒøt ö*ÕÀ„aÿÿÿH‹CA½ƒxLDãéJÿÿÿA¼éâûÿÿ1ÿºH�5Xoè¬HýÿL‰âL‰îH‰Ç1Àè|ÿÿé ûÿÿH‹=¸Õ1ÒH�5Po1ÀHÇD$@HÇD$PHÇD$HèµIýÿH‹|$H‰ÆI‰Åè%ßÿÿ…ÀtlL‰ïèÙRýÿH‹|$@L‹-ýÇH…ÿtè#ÞÿÿH‹|$@I‰ÅH‰äÇè¯RýÿÇÝÇé~üÿÿE…í„iùÿÿ1ÿºH�5©jèôGýÿH‰Ç1ÀèjÿÿéGùÿÿL‰ïèmRýÿH‹=þÔ1Ò1ÀH�5˜nèIýÿH‹|$H‰ÆI‰Åè†Þÿÿé`ÿÿÿH‹ Õ1ÿºH�5Liè—GýÿH‰ÇH‰Þ1Àè ÿÿéT÷ÿÿºH�5‰iépøÿÿAƒøºH�5ÄiIEÜ1ÿèYGýÿH‰ÇH‰Þ1ÀèÌÿÿéôýÿÿ€‹"Ç…ÀuH‹G H…Àtö@EuÃfDAUATUSH‰ûH‰ÇHƒìèÛGýÿI‰ÄH…À„�H‹èÆH…ÛtqL�-}lëf.„H‹H…ÛtVH‹sL‰çè,Fýÿ…ÀtèH‹k¾/H‰ïèWGýÿH…ÀuÒL‰îH‰ïèçPýÿH…ÀtÂH�PH‰îL‰çH)êèðGýÿ…Àu¬ÇjÆHƒÄ[]A\A]ÀH‹C H‹8ètIýÿI‰Äé]ÿÿÿf.„f�ǶƒÒƒâ€ú„Ÿ‹5!ÔH�z¬ …ö„†‹ ÜÓH�Í …É„qH‹5FÒH¹ @H¸ @H!ñH9Á„†H¿@H¸@H!÷H9Ç„NI¸@H�¥O I¹@I!ðM9È„D‹ ØÑH�p A�á A�ù „áH�¦’ €ú„ÑH¸ @H9Á„H¸@H9Ç„—H¹@H�FI9È„‘H�æ0A�ù „}H�2 €útqH¸ @H‰òH!ÂH9„ÎH¸@H!ÆH9Æ„ÒH�b öÑ@u2ö Ñ H�HQH�¹? HDÂÃ@H�1ó öšÑ„UÿÿÿË=^ÒH�ã– H�´‚ …ÿHDÂÃDH�ñ- öbÑ„žþÿÿÃöQÑH�šì H�rHEÂÃfDö1ÑH�¢² H�“Ò HEÂÃöÑH�¸µH�á“HDÂÃH��×ööЄÿÿÿÀATUH‰ýS¾_H‰ØÁë‰Âƒâ¨@u'ƒËL‹g „ÒtAöD$EuLAöD$Eu,[1À]A\ÃD„Òt L‹g AöD$Eu(…ÛtàL‹e AöD$EtÔ‰ÞL‰çè&Hýÿ[1À]A\À1ÿH�5¿^ºèeCýÿL‰æH‰Ç1ÀèØÿÿ…Ût˜ë¶f�SºH‰ûH�5È^1ÿè9CýÿH‰ßH‰Æ1ÀèüFýÿºH�5ø^1ÿèCýÿH‰ßH‰Æ1ÀèÜFýÿH�5µ_1ÿºèùBýÿH‰ß[H‰Æ1Àé»Fýÿff.„AWAVAUATUH‰õSHƒìL‹7H‰|$H‰÷M…ö„«èæBýÿD¾%¶ÐM‰÷H‰ÃE‰åë HƒÀI‰Çt0H‰ÚL‰þH‰ïè©@ýÿ…ÀuA¶„ÀtXD8ètSD‰æL‰ÿè CýÿH…ÀuÇL‰÷è�BýÿH�|èõLýÿL‹t$I‰è¾ NÐH‰ÃH�5ö1ÀI‹H‰ßèïJýÿI‹>è·LýÿI‰HƒÄ[]A\A]A^A_ÃDèDýÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@USHƒì�ÿ’„žŽ˜�ÿ–„¬ŽÆ�ÿ˜„ Œ”�ÿ™…HH‹³H�5ÊH‰ßèb?ýÿ…À„úH�5ødH‰ßèK?ýÿ…À„CH�5ædH‰ßè4?ýÿ…À…§ÇžÍ¸HƒÄ[]ÃfD�ÿ-„„~b�ÿ�„Ö�è�ÿ.…´€ R͸ë¹fD�ÿ”„\�n¶*̓à?ƒÈ@ˆÍ¸ë‡@ƒÿP„gƒÿzubH‹²¹H�=nH‰Þó¦—À„À„%¹H�=(dH‰Þó¦—À„À…Ÿ¶ºÌƒàŸƒÈ ˆ®Ì¸éÿÿÿf�HƒÄ1À[]À€%ŽÌþ¸éòþÿÿ€€ v̸éÚþÿÿ€H‹=ÉÀH…ÿtèŸJýÿHÇ´ÀH‹]±H…Ò„¬¹H�=H‰Ö¸ó¦—Á€Ù„É„ƒþÿÿH‰×èØAýÿH‰qÀ¸éjþÿÿ€€%îËý¸éRþÿÿ€€%ÔË?¸é:þÿÿ€H‹=Ù°èT/þÿ¸éþÿÿf.„H‹5¹°H�= Àèmüÿÿ¸éöýÿÿHƒ 8̸f� lËàéØýÿÿD¶]ËH‹r°¹H�=“bƒàóH‰Þˆ>Ëó¦—€ڄÒ„йH�=]bH‰Þó¦—€ڄÒ…³ƒÈˆË¸ékýÿÿ„H‹5 °H�=b¿è½ûÿÿ¸éFýÿÿÇÒʸé/ýÿÿ@€ ³Ê`¸éýÿÿ€ƒÈˆ›Ê¸éýÿÿDH�é_H‰š¯éeþÿÿDÇrʸéÏüÿÿ@¹H�=žaH‰Þó¦—€ڄÒ…ƒÈ ˆ4ʸé™üÿÿfD¹H�=raH‰Þó¦—À„ÀuR€ ʸéhüÿÿH�51aH‰ßèv;ýÿºH�5º[…À„bÿÿÿ1ÿè‹=ýÿH‰ÞH‰Ç1Àèþýþÿ¸é'üÿÿ¹H�=aH‰Þó¦—À„À„‰¹H�=ÿ`H‰Þó¦—À„À„ɹ H�=ó`H‰Þó¦—À„À„0¹ H�=ã`H‰Þó¦—À„À…Ô‹:É%ÿþÿ€Ì€‰,ɸé‘ûÿÿºH�5*[é;ÿÿÿ1ÒH�t$H�{è�DýÿH‹T$H‰éÊ€:u H�PÿH…„’ûÿÿH‹ø­ºH�5[H�X1ÿè�<ýÿH‰ÞH‰Ç1Àèôüþÿébûÿÿ1ÒH�t$H�{è?DýÿH‹T$H‰“Ê€:u H�PÿH…„4ûÿÿH‹š­ºH�5ÎZH�Xë ¹ H�=ï_H‰Þó¦—À„À…‘‹HÈ%ÿþÿ ‰8ȸé�úÿÿ1ÒH�t$H�{ èºCýÿH‹T$H‰È€:u#H…ÀxHƒ= È…©úÿÿHÇûÇÿÿÿÿé™úÿÿH‹ÿ¬1ÿºH�5YZH�X èˆ;ýÿH‰ÞH‰Ç1ÀèûûþÿëµH�5Q_H‰ßè ?ýÿ…ÀuH� [ȸéúÿÿH�5m9H‰ßèâ>ýÿ…ÀuHƒ 6ȸéßùÿÿH�5_H‰ßè½>ýÿ…ÀuHƒ È ¸éºùÿÿH�5õ^H‰ßè˜>ýÿ…ÀuH� éǸé’ùÿÿH�5×^H‰ßèp>ýÿ…ÀuHƒ ÄǸémùÿÿH�5»^H‰ßèK>ýÿ…ÀuH� œÇ¸éEùÿÿH�5 ^H‰ßè#>ýÿ…ÀuHƒ wǸé ùÿÿH�5„^H‰ßèþ=ýÿ…ÀuHƒ RÇ@¸éûøÿÿH�5h^H‰ßèÙ=ýÿ…ÀuH� *ǸéÓøÿÿH�5#7H‰ßè±=ýÿ…ÀuHƒ ýƸHƒ øÆ馸ÿÿH�5^H‰ßè„=ýÿ…ÀuHƒ%ÐÆ÷¸Hƒ%ËÆþéyøÿÿH�5ò]H‰ßèW=ýÿ…ÀuHƒ £Æ¸H� ›Æ€éIøÿÿH�5Ë]H‰ßè'=ýÿ…Àu€ ÀÅ@¸é%øÿÿH�5¥]H‰ßè=ýÿ…Àu€%œÅ¿¸éøÿÿH�5�]H‰ßèß<ýÿ…Àu€ tŸéÝ÷ÿÿH�5w]H‰ßè»<ýÿ…Àu€ SŸé¹÷ÿÿH�5Q]H‰ßè—<ýÿ…Àu€%/Åï¸é•÷ÿÿH�57]H‰ßès<ýÿ…Àu€ Å ¸éq÷ÿÿH�5]H‰ßèO<ýÿ…Àu€%çÄ߸éM÷ÿÿH�5iH‰ßè+<ýÿ…Àu¶ÂăàùƒÈˆ¶Ä¸é÷ÿÿH�5Í\H‰ßèû;ýÿ…Àu¶’ăàùƒÈˆ†Ä¸éíöÿÿH�5 H‰ßèË;ýÿ…Àu€ dĸéÉöÿÿH�5‚\H‰ßè§;ýÿ…Àu€%@Äý¸é¥öÿÿH�5e\H‰ßèƒ;ýÿ…ÀtÜH�5Z\H‰ßèp;ýÿ…ÀuǢĸéköÿÿH�5M\H‰ßèI;ýÿ…ÀuÇĸéDöÿÿH�5$\H‰ßè";ýÿ…ÀuÇXĸéöÿÿº H�5"\H‰ßèv5ýÿ…Àu6H�k H�5\H‰ïèß:ýÿ…Àu0·{Ãf%ï€Ìgf‰møéÏõÿÿºH�5\éyùÿÿH�5Þ[H‰ïèœ:ýÿ…Àu ·8Ãf%ïf �f‰)øé‹õÿÿºH�5±[H‰ïèä4ýÿ…À„…ºH�5�[H‰ïèÈ4ýÿ…Àu\1ÒH�t$H�{èt>ýÿˆÖÂH‹D$€8t+H‹ݧH�5–U1ÿºH�Xèf6ýÿH‰ÞH‰Ç1ÀèÙöþÿ€ ™Â¸éûôÿÿºH�5”U饸ÿÿ1ÒH�t$H�{è>ýÿˆiÂH‹D$€8t+H‹p§H�5ñT1ÿºH�Xèù5ýÿH‰ÞH‰Ç1Àèlöþÿ€%,Âï¸éŽôÿÿff.„AUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}è¥6ýÿ‹×éH‰ÞI‰E‰(¶ÊéˆT(I‹<$è�6ýÿH�5š[I‰$H�Œ@þÿÿH‹‡[H�yH‰H‹1]HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ã�AW1ÀAVAUATUSHƒìD¶zHAöÇ„ÔL‹jI‰þH‹~H‰ÓH‰õè+5ýÿL‰ïI‰Äè 5ýÿIÄAƒç…»L‰÷è 5ýÿI�|èq?ýÿH‹UM‰ðL‰éH‰ÇI‰ÄH�5ãY1Àès=ýÿH‰ÞL‰çè¨üþÿ…À„°L‰cH‹{ ¾è~=ýÿ‰Â¸…ÒtFH‹S öBEt<¶CH‰Âƒâ€út¾õH�=Wèèšõþÿ¶CH¨„~H‹{ L‰îèb<ýÿ¸HƒÄ[]A\A]A^A_ÃfDI�|$è¾>ýÿH‹UH�5bZL‰éH‰ÇI‰Ä1ÀèÃ<ýÿH‰ÞL‰çèøûþÿ…À…PÿÿÿL‰ç‰D$ èt>ýÿ‹D$ HƒÄ[]A\A]A^A_Ã�H‹{è×6ýÿI‰Åéqÿÿÿff.„@AWAVAUE1íATL�%Þ¿USHƒìhH‹ù¿ƒx@„÷H‹-ÁH…í„'€}„5H‹ÀH…Û„�L�5´ë@H‹›ðH…Û„€H‹CƒxuæH‹ƒøH‹¸H…ÿtÓ€?tÎè)5ýÿI‰Çë@ÆA€?…sHƒÀI‰Çtª¾5ûÀL‰ÿè‹3ýÿH…ÀuÖA€?t�L‰þL‰÷èõïÿÿH‹›ðH…Ûu‰f„HƒìL‹ m³L‹n³H‰êH�D$ H‹ ?ÀH‹5 ÀPH‹= ¿ATÿ50Àè8ýÿHƒÄ …À„—H‹=ð¿H…ÿtH‹\$H…ÛtH‰»°è…2ýÿHƒÀH‰C8L‹=–«M…ÿ„ L�%”Wëj@H‹‰¾Æ+E1É1ÒI‹O E1ÀH‰ÞH�=O¾ÿP(H‰ßè”<ýÿI‹FhH…ÀtH‹P@I‹N8H9ÊrH)ÊH‰P@A�N € IÇF8M‹0M…ÿ„šAöGHuìI‹ L‰æè4ýÿI‰ÆH…ÀtØH‹h8H�}èB<ýÿI‹ 1ÉI‰èH‰ÂL‰öH‰Ãè«1ýÿ…À…SÿÿÿI‹G 1ÿºH�5!QH‰$èh1ýÿH‹4$H‰Ç1ÀèÚñþÿé%ÿÿÿDH�=›Vèt.ýÿH‰ÅH…À…Áýÿÿ1íéÄýÿÿ�è ÞþÿH‹=´½H�5]½è9ýÿ…Àt\M…ít¶D$foD$@AˆEH‹D$PAE I‰E0HƒÄh[]A\A]A^A_Ã1ÿºH�5RPèÍ0ýÿH‰Ç1ÀèCñþÿéGþÿÿfD1ÿºH�5*Pè¥0ýÿH‰Ç1Àèñþÿë…f„H‹=½L‰æè!0ýÿ¶º¼ƒà<uE1íH�=ùèúýÿéØüÿÿ€H‹=¹¼A¸1É1ÒH�5…Uè3ýÿI‰ÅH…ÀtÀ¶@<v<u´H‹°¼ºL‰îH�=Q¼H‹@H‹€hÿ�¸A¶Ea‰Âƒâ€út ƒàüƒÈAˆEaI‹E0óAoUIÇE0óAo] óAoMH‰D$PA¶E)L$ ˆD$H�_£)T$0)\$@AÆEI‰E(é'ÿÿÿ€L‰þL‰÷H‰$è¡ìÿÿH‹$éuüÿÿ„AUATL�%\UUH�-yãSH‰ûHƒìƒ{w6‹CHcD…Hèÿàf�E1ÉH‹S¹L‰çH‰Öó¦—À„ÀucH‹[ ƒ{vÊHƒÄ[]A\A]ÃfDH‹[ë­f�H‹{è‡ÿÿÿH‹{ è~ÿÿÿH‹[(ë“„H‹{ègÿÿÿë²DA¹ë‹„D‹C(H‹=E»D‰ÉH�5ëºèÖ,ýÿ…À…{ÿÿÿL‹k1ÿºH�5|Nè‡.ýÿH‰ÇL‰î1ÀèúîþÿéRÿÿÿDƒt Ãf„H‹éçþÿÿ€AWAVAUATUSHƒìH‹‡øH‹WH‹€˜ L‹²hL‹`0H‹H(I‹D$hH‰L$H� À¡H9È„ÿL‹¸àH‰ýM‹l$8I‹_HH…Û„«I\$`H‰Þ¿Iƒíÿ’�H‹EL‰ïH�sÿ��H‹EH�s¿ÿ��E‰èH�KH‰ïÇC GNUI‹†H‹t$H‹P èz*ÿÿI‹t$`1ÒIwH‰ïM‹l$8èò7ýÿ1Ò…ÀtHƒÄ‰Ð[]A\A]A^A_ÃH‰êL‰îH‰ßèz1ýÿ1ÒL9è”ÂëÔI‹œ$°H…Û…IÿÿÿL‰ïèÇ7ýÿM‹l$8H‹UH‰ÃI‰„$°é(ÿÿÿfDºH�5M1ÿèõ,ýÿH‰Ç1Àèkíþÿºéuÿÿÿ�AWAVAUATUH‰ýS1ÛHƒìH‹=î¹èñ,ýÿD¾%ÁºH‰ïI‰Åë�H�x€?/J�+D‰æHDØè9-ýÿH…ÀuäH‰ïè¼,ýÿH�|è"7ýÿD¾5‚ºI‰ÇI‰Äë-f�D‰öH‰ïè-ýÿH…ÀtCH)èH‰îL‰çH�XH‰ÚIÜHÝèE*ýÿ€}/uÏH‹5`¹L‰çMìè}*ýÿD‰öH‰ïèÂ,ýÿH…Àu½H‰îL‰çèb*ýÿHƒÄL‰ø[]A\A]A^A_ÃAWAVAUATUSH�ì˜H‰|$H‰÷H‰t$(H�5²è3ýÿI‰Ç1ÀM…ÿ„濽I½:èO6ýÿI‰Ä@M‰æë6H‰ÇL�uÿèÄ+ýÿL‰òH)ÚH9Ðu?A€|,þ t7HíL‰çH‰îès,ýÿI‰ÄIÆL‰ó‰îL‰úL‰÷L)ã)Þèø-ýÿH…Àu³M9ô„S¾ L‰çèÝ+ýÿH…Àtƾ#L‰çèÈ+ýÿH…ÀtÆA¶$L‰ã< †O¹H‰ÞH�=lPó¦—À„Àu¶C< „:< „2¶H‰Ú<=wH¹: H£Ás ëQfDH‰Â¶JH�B€ù=wðH¿: H£ÏsàH9Ø„c€:/téÝD€xÿ/…ÎHƒèH9ØuíE1ö1ÀH‹L$H‹9H…ÿ„ÆH‹L$H‹AH‹IH�PJ�42H9΃ÐH‹L$H‰Q¶9¸ˆH‹yH9L‰òH‰Þè\.ýÿH‹D$LpL‰pH‹BÆ0L‰ÿèï-ýÿ…À„OþÿÿL‰çè4ýÿL‰ÿè·)ýÿ¸H�Ę[]A\A]A^A_ÃHƒÃ¶< ‡±þÿÿI£Årë„Àt°é¢þÿÿf�H�D$@L�KH‰D$ f�A¶€ú „s€ú „j„Ò„{ÿÿÿL‰ËëDH‰ÃD¶sH�CA€þ „RA€þ „HE„öuÛH�CH‰D$„Ò„;ÿÿÿ€ú/„IH‹|$(¾/L‰L$0è5*ýÿL‹L$0H‰D$L‰ÏL‰L$8è>)ýÿH‹L$H+L$(H�|H‰ÃH‰L$è’3ýÿH‹L$H‹t$(H‰ÇH‰D$HƒÁH‰ÊH‰L$0è-ýÿH‹L$0H‹D$H�SL‹L$8H�<L‰Îèð,ýÿH‹L$ 1Ò1öH‹|$èM1ýÿ…ÀuTHƒ|$@„J1ÛH‰l$0H‰ÝH‹\$fDH‹D$HH‰ßH‹4èHƒÅècüÿÿH;l$@räH‹|$ H‹l$0è­%ýÿHƒ|$t H‹|$èË2ýÿL‹L$E„ö„&þÿÿA¶€ú …�þÿÿIƒÁéwþÿÿ€ÆA¶H�KH‰L$„ÒtÁéµþÿÿ€H‹L$ 1Ò1öL‰Ïè�0ýÿ…Àu HÇD$Hƒ|$@…9ÿÿÿH‹|$ è%ýÿé|ÿÿÿ€H‹L$H)ØI‰ÆH‹9H…ÿ…:ýÿÿH�¸H‰yè)2ýÿH‰ÇH‹D$H‰8HÇ@éJýÿÿH‹D$J�´1H‰pè[(ýÿH‰ÇH‹D$H‰8H‹@H�PéýÿÿH‹|$ è™$ýÿéïþÿÿ1ÀE1öéºüÿÿf.„Hƒ=ð§tÃDH‹G H…ÀtñATUSH‰ûH‰ÇH�ì�èá'ýÿ¨t H�Ä�[]A\Ã�H‹{ H‰æèD&ýÿ…À…ìH‹¥§H9$„«H‹$¨¾/H‹hH‰ïèC'ýÿH…Àu±H�5(LH‰ïèÏ0ýÿH…Àt�H‹{ H�hèM'ýÿI‰ÄH…À„ºH‹Ú§H‰êL‰çH‹pH)òè¸'ýÿ…À…cÿÿÿH‹¹§1ÿºH�5£FH‹hH‹Xè.&ýÿL‰áH‰ÇH‰êH‰Þ1Àè›æþÿé)ÿÿÿfDH‹D$H9즅CÿÿÿH…À„:ÿÿÿH‰Ʀéüþÿÿf„H‹[ 1ÿºH�5AKèÉ%ýÿH‰ÇH‰Þ1Àè<æþÿéÊþÿÿH‹{è¾(ýÿI‰Äé5ÿÿÿfD¶Ù±ƒà<u H� ‡²H¸HºH#¬±H9ÐtéRÑþÿf�‹>²…ÀÇ0²é7Ñþÿ€HƒìºH�5ÐE1ÿè)%ýÿH‰Ç1ÀèŸåþÿÇù±HƒÄéüÐþÿff.„�Hƒì¾ H�=Ùèûõþÿ€ ¤° H¸0 ǘ²ÇʲH ÿ°Æ±gHƒÄÃAWAVA‰ÖAUATUSH‰ûHƒì(H‹‡ðH‰4$H‹@ÇD$ ‹hH‹ ±H‹@ƒý”D$D‹huH‹‡à‹@‰D$ ¶”°ƒà<„Aƒý”Àö°@…åÇD$€|$„æ„À„Þ‹S ö„ÒH‹»àöG „ÁL‹=Ö¯M…ÿtZH�5š—f.„I‹G8H9ðt7H…Àt2H‹ˆàöA t%D‹P A1ÒD‰Ð©u‹G,9A,„è„M‹ M…ÿu·H�>IH‰$÷ÂtHH�IH‰$öÂt8ƒâH�1IH�IHDÂH‰$ëf„‹S öÂ…´ÇD$E…ö„“‹=Ù£…ÿu\L�-B€M�¥°I‹}H…ÿt/1Ò1öè¶ÿýÿI‰EH…Àt‹°ˆ…öuA‹U‰�ˆf„IƒÅ0M9åu¿Çy£¶¯¨u2H‹3¹ H�=žHó¦—€ڄÒuL‹=ÐM…ÿ…×€ƒàD‹c <„‘H‹»ðI‰Ý€L‰îèÈ'ýÿI‰ÅH…ÀtpIƒ}hI‹½ðuâA‹E ‰Â%€D1âƒâ ÂuÍöGEuÇH‹‡H…Àt»ö@HuµH‹“ðH‰ÙL‰îèÃ,ýÿ…ÀtA‹E AƒôƒðA ÄAƒôI‹½ðë„@A÷Ä uOL�-€€I‹EH…À„£HƒìD‰òE1ÉM‰èjH‹t$H‰ÁH‰ßèä:þÿI‰ÇXZHƒÄ(L‰ø[]A\A]A^A_ÃDAöÄ„îD‰àƒàtFƒ|$ u€|$L�-³u‘ƒýt,H‹4$¹H�=UGL�-•ó¦—€ڄÒ„eÿÿÿDL�-A÷Ä„LÿÿÿI�Å�A÷Ä@…8ÿÿÿI�íðA÷Ä…$ÿÿÿIƒÅ0AöÄ„ÿÿÿƒý„%H‹4$¹H�=ÃFó¦—€ڄÒuL�-Ú~…À…âþÿÿL�- ~AöÄI�EÐLEèéÊþÿÿf.„H‹<$1Ò1öèCýýÿI‰ÇH…À„TýÿÿE1ä饀‹F …À„­3C ¨uvƒý…�Aƒý…“H‹ƒàH‹–à‹H,9J,uM¶ v¬ƒá€ùuH‹RH3PH‰Ð©€u,H‹“ðH‹=ž¬H‰Ùè¶*ýÿ…ÀuBIƒ8MDçf„L‰ÿ1öèæþÿI‰ÇH…À„I‹w8H…ö…UÿÿÿM‰üëØ„I�L‰ù1ÒH‰ÞèÏ þÿéûýÿÿf.„E1í1ÀéÃýÿÿfDƒý„ßH‹4$¹H�=]EÇD$ó¦—À„À…$üÿÿH‹4$ÇD$€~a„ðH� EH‰$éþûÿÿf.„M‹]M…Û„Ù1Ò1öL‰ßèÇûýÿI‰EH…À…7ýÿÿH‹ ãkI�UD‰æH‰ßèdþÿH…À…ýÿÿH‹Īé ýÿÿ€A¾~M…ä„–ûÿÿI�|$L‰á1ÒH‰Þè×þÿM‰çéýÿÿ€‹L$ ƒùt-‰È1Ƀø H�nDHE$”Á‰L$H‰$Aƒý„iúÿÿé6ûÿÿH� >DÇD$H‰ $é-úÿÿH�&DH‰$éûÿÿH‹H‹ ª€xa”D$ ¶L$ H…Ò„ÿÿÿ1öD‰d$ E1É1íL‰l$L‰ØD‹l$I‰ôH‰\$L�=çC‰Ëé¨f.„L‹B0¹L‰ÿL‰Æó¦—Á€Ù„É…�A€xaA”ÂE…í…àA¶ÊH�5³CI�|¹ó¦—Á€Ù„É„»D8Ó@”ÆM…Ûtn@„öuiH‹J8H…ÀtH@„öuCH…Ét‹I öÁt ƒáI‰ÔHEêH‹J I‰ÑH…Ét:H‰Ê‹Š„…ɉTÿÿÿH‹J8ëÆfDH…ÉtÒ‹I öÁtÊH‰Ðë»fDI‰Óë’L‰áL‹l$D‹d$ H‹\$H…Àt I‰EéèýÿÿL‰ØM…ÛuïH‰èH…íuçH‰ÈH…ÉHDÂëÛL‰áL‹l$D‹d$ L‰ÊH‹\$ë¿‹L$ ƒù„êûÿÿƒù …ðûÿÿéÜûÿÿff.„f�ATH‹='©H�5ШUSèýÿºH�5M=…Àˆñ‰Ç» L�%§¨ëCDH‹é¨H‹€øH‹�˜ H‹B8H9ńڃû H9Ńȿƒë„’èý,þÿH‹=¦¨H‹Gƒx…¤A¶$ƒà<„”H‹‡øHƒ=¹§H‹€˜ H‹h8tè…ýÿL‰âH‰îH‰Ç1ÀèUØþÿé8ÿÿÿ1ÿºH�5º9è]ýÿH‰ÞH‰Ç1ÀèÐØþÿéúþÿÿH‰ßH‰îè] ýÿI‹}H…ÿtèýÿ¾¨u¾H‰ßè¹ýÿH‹CH�5N¤H‰ßÿ�À…À…êþÿÿ1ÿºH�5èêýÿH‰ÞH‰Ç1Àè]ØþÿéÅþÿÿ„H‰ßèHýÿHƒÄ‰è[]A\A]A^Ãf„1ÿºH�5Â8è�ýÿH‰ÞH‰Ç1ÀèØþÿé­ýÿÿH‰ß1íèþýÿékþÿÿf„AWAVAUATUSH‰ûH‰÷HƒìHH‹F‰T$€8/H‰D$„ÎH…Û„]€;„TH‹H‰D$0H‹D$H‰ÇH‰D$8èJýÿHƒÀH‰D$ H�D$0H‰D$(€¾5¥H‰ßè‘ýÿH‰$H…À„DL‹4$H‹D$ M‰õI)ÝI�|èk!ýÿH‰ÅH‰ÇL9ótL‰êH‰ÞèõýÿBÆD-/J�|-H‹t$1Ûèîýÿé(f„¹H‰ÖH�=Gó¦—À„Àt¹H�=ª<H‰Öó¦—À„À…SH‹D$0H…À„jL‹0M…ö„9A€>/„lèïýÿL‰÷H‰D$èRýÿH‹|$H‰ÃèEýÿH�|è« ýÿH‹T$L‰ñH�5K<H‰ÃH‰Ç1Àè¯ýÿ¾/H‰ßèòýÿH…À„)ÆH‰ßI‰ÞèûýÿE‰íI)ìI�|è[ ýÿI‰ÅM…ÿ„ŸI‰ØM�OH‰éD‰âH�5æ;L‰ï1ÀèQýÿH‰ßè¹ýÿA�\H‰ïL‰íè ýÿL‰÷è ýÿ‰ß¾$HïèýÿI‰ÄH…À„þ¾/L‰çI�\$èäýÿH‰ïI‰ÇèiýÿI‰ÅM…ÿtAÆA¶D$H‰Þ<{u A¶D$I�t$H�VH‹=÷�H�5 �è»ýÿH‰ÅH‰ÃH…À„0H�D$0H‰$H�D$ H‰D$H�D$@H‰D$€H‹{H…ÿt+è ýÿ¨…êH‹{H…ÿt·D�f%€f=€„4I‰ìH9Ýt6@I‹|$H…ÿt èÉýÿ¨uH‹sI‹|$ègýÿ…À„ïM‹$$I9ÜuÎH�=_õÿÿH‰’HÇu‘è þÿH‹i‘H…Àt H‹x èsýÿ¨tWL‹cL‹k‹ ÉžL‰d$ L‰l$(L‰d$0…É…ËH‹+‘H…À„šH‹pH‹<$ºH‰t$8èÃõÿÿ…Àt€H‹H…Û…ôþÿÿ¶XœƒàÀ<€…þÿÿ1ÿH�5Aœèlýÿ…À…þÿÿ1ÿºH�5æ2èáýÿH‰Ç1ÀèWÐþÿéãýÿÿf�L9ãu£éÿÿÿfDè«ýÿ¨u�é¾þÿÿf�E1äL‹t$H‹=9�D‰âL‰öè&øÿÿ…À…fÿÿÿH‹=�H…ÿ„è™âÿÿD‰âL‰öH‰ÇI‰Åèø÷ÿÿL‰ïA‰ÇèíýÿE…ÿ…,ÿÿÿHƒ=äœuHƒ=Òœ„ÏH�=î5è` ýÿH…ÀtH‹t$D‰âH‰Çè«÷ÿÿ…À…ëþÿÿH‹=œ›H�5E›èÐ ýÿI‰ÇH…ÀuëfDL‰ÇèxýÿM‹?M…ÿt`E„öt[I‹E1íA¾èéáÿÿI‰ÀH‹CI9GuÌH‹t$L‰ÇD‰âL‰D$E1íè4÷ÿÿL‹D$…ÀL‰ÇA•ÅA”ÆèýÿM‹?M…ÿu¥DE…í…Oþÿÿ‹�L‹- �…Ò„ûH‹{M…ít*H‹CH‹t$H‰|$HD‰âL‰ïH‰D$@èËöÿÿ…À… þÿÿH‹{èZýÿL‹=c�I‰ÅM…ÿtfA‹G…ÀuSI‹è7ýÿI�|è�ýÿI‹WH‹KH�5=4I‰ÆH‰Ç1Àè¡ýÿH‹<$D‰âL‰öL‰t$8è]óÿÿ…À…�ýÿÿL‰÷èMýÿM‹?M…ÿu�Aƒü…L‹cL‹k1ÿºH�5½0è� ýÿL‰âL‰îH‰Ç1ÀèÎþÿéSýÿÿHƒ= ›…1þÿÿH�=¸2è‘ ýÿH…À„þÿÿ€8„þÿÿH‹t$D‰âH‰ÇèÏõÿÿ…À„ûýÿÿé ýÿÿf�H‹É™H…Û„²ûÿÿE1öE1íE1äA¿L� º€L�‚3L�‹3ëf.„H‹›ðH…Û„½H‹ƒö@HuãH‹ƒ�H…ÀtwE1Àë/f�H‰Ö¹ L‰ßó¦—€ڄÒu Hƒx8 ECÇH‹@H…À„¶H‹L9Hhtê¹H‰ÖL‰×ó¦—Á€Ù„Éu³A¸E…ö„”E9ð…M…䄎f�Aƒþ…Vÿÿÿ¶‚˜H‹›ðƒà?ƒÈ€ˆo˜H…Û…CÿÿÿM…ä„:I‹D$H�5§2L‰çH‹€h‹P0ƒÊèY ýÿH…À„Ç@pH‰…(éoúÿÿE…ÀtˆéfÿÿÿE‰ÆM…ä…tÿÿÿAƒøt öú—À„aÿÿÿH‹CA½ƒxLDãéJÿÿÿA¼éâûÿÿ1ÿºH�5(2è| ýÿL‰âL‰îH‰Ç1ÀèLËþÿé ûÿÿH‹=ˆ˜1ÒH�5 21ÀHÇD$@HÇD$PHÇD$Hè… ýÿH‹|$H‰ÆI‰Åè%ßÿÿ…ÀtlL‰ïè©ýÿH‹|$@L‹-­‹H…ÿtè#ÞÿÿH‹|$@I‰ÅH‰”‹èýÿÇ�‹é~üÿÿE…í„iùÿÿ1ÿºH�5y-èÄ ýÿH‰Ç1Àè:ËþÿéGùÿÿL‰ïè=ýÿH‹=Η1Ò1ÀH�5h1èæ ýÿH‹|$H‰ÆI‰Åè†Þÿÿé`ÿÿÿH‹Ú—1ÿºH�5,èg ýÿH‰ÇH‰Þ1ÀèÚÊþÿéT÷ÿÿºH�5Y,épøÿÿAƒøºH�5”,IEÜ1ÿè) ýÿH‰ÇH‰Þ1ÀèœÊþÿéôýÿÿ€‹ÒŠ…ÀuH‹G H…Àtö@EuÃfDAUATUSH‰ûH‰ÇHƒìè« ýÿI‰ÄH…À„�H‹˜ŠH…ÛtqL�-M/ëf.„H‹H…ÛtVH‹sL‰çèüýÿ…ÀtèH‹k¾/H‰ïè' ýÿH…ÀuÒL‰îH‰ïè·ýÿH…ÀtÂH�PH‰îL‰çH)êèÀ ýÿ…Àu¬ÇŠHƒÄ[]A\A]ÀH‹C H‹8èD ýÿI‰Äé]ÿÿÿf.„f�ǶS•ƒâ€ú„Ÿ‹5ñ–H�Â.…ö„†‹ ¬–H�ÍQ…É„qH‹5•H¹ @H¸ @H!ñH9Á„†H¿@H¸@H!÷H9Ç„NI¸@H�ÝI¹@I!ðM9È„D‹ ¨”H�aÿA�á A�ù „áH�^$€ú„ÑH¸ @H9Á„H¸@H9Ç„—H¹@H�.¬I9È„‘H�¾ÌA�ù „}H�:˜€útqH¸ @H‰òH!ÂH9„ÎH¸@H!ÆH9Æ„ÒH�ÿàöä“@u2öÚ“ H��ïH�É»HDÂÃ@H�)‹öj”„UÿÿÿË=.•H�;H�…ÿHDÂÃDH�i¹ö2”„žþÿÿÃö!”H�ºsH�ËHEÂÃfDö”H�ÊFH�£hHEÂÃöç“H�0ZH�y6HDÂÃH�õ}öÆ“„ÿÿÿÀATUH‰ýS¾_H‰ØÁë‰Âƒâ¨@u'ƒËL‹g „ÒtAöD$EuLAöD$Eu,[1À]A\ÃD„Òt L‹g AöD$Eu(…ÛtàL‹e AöD$EtÔ‰ÞL‰çèö ýÿ[1À]A\À1ÿH�5�!ºè5ýÿL‰æH‰Ç1Àè¨Æþÿ…Ût˜ë¶f�SºH‰ûH�5˜!1ÿè ýÿH‰ßH‰Æ1ÀèÌ ýÿºH�5È!1ÿèéýÿH‰ßH‰Æ1Àè¬ ýÿH�5…"1ÿºèÉýÿH‰ß[H‰Æ1Àé‹ ýÿff.„AWAVAUATUH‰õSHƒìL‹7H‰|$H‰÷M…ö„«è¶ýÿD¾%†“M‰÷H‰ÃE‰åë HƒÀI‰Çt0H‰ÚL‰þH‰ïèyýÿ…ÀuA¶„ÀtXD8ètSD‰æL‰ÿèÜýÿH…ÀuÇL‰÷è_ýÿH�|èÅýÿL‹t$I‰è¾ “H‰ÃH�5ÆÚ1ÀI‹H‰ßè¿ ýÿI‹>è‡ýÿI‰HƒÄ[]A\A]A^A_ÃDèëýÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@USHƒì�ÿ’„žŽ˜�ÿ–„¬ŽÆ�ÿ˜„ Œ”�ÿ™…HH‹ÑuH�5šÞH‰ßè2ýÿ…À„úH�5È'H‰ßèýÿ…À„CH�5¶'H‰ßèýÿ…À…§Çn�¸HƒÄ[]ÃfD�ÿ-„„~b�ÿ�„Ö�è�ÿ.…´€ "�¸ë¹fD�ÿ”„\�n¶ú�ƒà?ƒÈ@ˆî�¸ë‡@ƒÿP„gƒÿzubH‹ët¹H�=>ßH‰Þó¦—À„À„%¹H�=ø&H‰Þó¦—À„À…Ÿ¶Š�ƒàŸƒÈ ˆ~�¸éÿÿÿf�HƒÄ1À[]À€%^�þ¸éòþÿÿ€€ F�¸éÚþÿÿ€H‹=y„H…ÿtèo ýÿHÇd„H‹-tH…Ò„¬¹H�=èÜH‰Ö¸ó¦—Á€Ù„É„ƒþÿÿH‰×è¨ýÿH‰!„¸éjþÿÿ€€%¾Žý¸éRþÿÿ€€%¤Ž?¸é:þÿÿ€H‹=©sè$òýÿ¸éþÿÿf.„H‹5‰sH�=ºƒèmüÿÿ¸éöýÿÿHƒ �¸f� <ŽàéØýÿÿD¶-ŽH‹Bs¹H�=c%ƒàóH‰ÞˆŽó¦—€ڄÒ„йH�=-%H‰Þó¦—€ڄÒ…³ƒÈˆÖ�¸ékýÿÿ„H‹5ÙrH�=ƒè½ûÿÿ¸éFýÿÿÇ¢�¸é/ýÿÿ@€ ƒ�`¸éýÿÿ€ƒÈˆk�¸éýÿÿDH�¹"H‰jréeþÿÿDÇB�¸éÏüÿÿ@¹H�=n$H‰Þó¦—€ڄÒ…ƒÈ ˆ�¸é™üÿÿfD¹H�=B$H‰Þó¦—À„ÀuR€ ÔŒ¸éhüÿÿH�5$H‰ßèFþüÿºH�5Š…À„bÿÿÿ1ÿè[ýÿH‰ÞH‰Ç1ÀèÎÀþÿ¸é'üÿÿ¹H�=Þ#H‰Þó¦—À„À„‰¹H�=Ï#H‰Þó¦—À„À„ɹ H�=Ã#H‰Þó¦—À„À„0¹ H�=³#H‰Þó¦—À„À…Ô‹ Œ%ÿþÿ€Ì€‰ü‹¸é‘ûÿÿºH�5úé;ÿÿÿ1ÒH�t$H�{èmýÿH‹T$H‰¹�€:u H�PÿH…„’ûÿÿH‹ÈpºH�5ÔH�X1ÿèQÿüÿH‰ÞH‰Ç1ÀèÄ¿þÿébûÿÿ1ÒH�t$H�{èýÿH‹T$H‰c�€:u H�PÿH…„4ûÿÿH‹jpºH�5žH�Xë ¹ H�=¿"H‰Þó¦—À„À…‘‹‹%ÿþÿ ‰‹¸é�úÿÿ1ÒH�t$H�{ èŠýÿH‹T$H‰îŠ€:u#H…ÀxHƒ=ÜŠ…©úÿÿHÇËŠÿÿÿÿé™úÿÿH‹Ïo1ÿºH�5)H�X èXþüÿH‰ÞH‰Ç1Àè˾þÿëµH�5!"H‰ßèÚýÿ…ÀuH� +‹¸éúÿÿH�5=üH‰ßè²ýÿ…ÀuHƒ ‹¸éßùÿÿH�5à!H‰ßè�ýÿ…ÀuHƒ አ¸éºùÿÿH�5Å!H‰ßèhýÿ…ÀuH� ¹Š¸é’ùÿÿH�5§!H‰ßè@ýÿ…ÀuHƒ ”ЏémùÿÿH�5‹!H‰ßèýÿ…ÀuH� lЏéEùÿÿH�5p!H‰ßèóýÿ…ÀuHƒ GЏé ùÿÿH�5T!H‰ßèÎýÿ…ÀuHƒ "Š@¸éûøÿÿH�58!H‰ßè©ýÿ…ÀuH� ú‰¸éÓøÿÿH�5óùH‰ßè�ýÿ…ÀuHƒ ͉¸Hƒ ȉ馸ÿÿH�5ê H‰ßèTýÿ…ÀuHƒ% ‰÷¸Hƒ%›‰þéyøÿÿH�5 H‰ßè'ýÿ…ÀuHƒ s‰¸H� k‰€éIøÿÿH�5› H‰ßè÷ÿüÿ…Àu€ �ˆ@¸é%øÿÿH�5u H‰ßèÓÿüÿ…Àu€%lˆ¿¸éøÿÿH�5] H‰ßè¯ÿüÿ…Àu€ Dˆ¸éÝ÷ÿÿH�5G H‰ßè‹ÿüÿ…Àu€ #ˆ¸é¹÷ÿÿH�5! H‰ßègÿüÿ…Àu€%ÿ‡ï¸é•÷ÿÿH�5 H‰ßèCÿüÿ…Àu€ Û‡ ¸éq÷ÿÿH�5áH‰ßèÿüÿ…Àu€%·‡߸éM÷ÿÿH�59ØH‰ßèûþüÿ…Àu¶’‡ƒàùƒÈˆ†‡¸é÷ÿÿH�5�H‰ßèËþüÿ…Àu¶b‡ƒàùƒÈˆV‡¸éíöÿÿH�5’ÏH‰ßè›þüÿ…Àu€ 4‡¸éÉöÿÿH�5RH‰ßèwþüÿ…Àu€%‡ý¸é¥öÿÿH�55H‰ßèSþüÿ…ÀtÜH�5*H‰ßè@þüÿ…ÀuÇr‡¸éköÿÿH�5H‰ßèþüÿ…ÀuÇO‡¸éDöÿÿH�5ôH‰ßèòýüÿ…ÀuÇ(‡¸éöÿÿº H�5òH‰ßèFøüÿ…Àu6H�k H�5åH‰ïè¯ýüÿ…Àu0·K†f%ï€Ìgf‰=†¸éÏõÿÿºH�5íéyùÿÿH�5®H‰ïèlýüÿ…Àu ·†f%ïf �f‰ù…¸é‹õÿÿºH�5�H‰ïè´÷üÿ…À„…ºH�5mH‰ïè˜÷üÿ…Àu\1ÒH�t$H�{èDýÿˆ¦…H‹D$€8t+H‹­jH�5f1ÿºH�Xè6ùüÿH‰ÞH‰Ç1À詹þÿ€ i…¸éûôÿÿºH�5d饸ÿÿ1ÒH�t$H�{è×ýÿˆ9…H‹D$€8t+H‹@jH�5Á1ÿºH�XèÉøüÿH‰ÞH‰Ç1Àè<¹þÿ€%ü„ï¸éŽôÿÿff.„AUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èuùüÿ‹’H‰ÞI‰E‰(¶’ˆT(I‹<$èQùüÿH�5* I‰$H�Œ@þÿÿH‹ H�yH‰H‹Á!HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ã�AW1ÀAVAUATUSHƒìD¶zHAöÇ„ÔL‹jI‰þH‹~H‰ÓH‰õèû÷üÿL‰ïI‰Äèð÷üÿIÄAƒç…»L‰÷èÛ÷üÿI�|èAýÿH‹UM‰ðL‰éH‰ÇI‰ÄH�5³1ÀèCýÿH‰ÞL‰çèx¿þÿ…À„°L‰cH‹{ ¾èNýÿ‰Â¸…ÒtFH‹S öBEt<¶CH‰Âƒâ€út¾õH�=–�èj¸þÿ¶CH¨„~H‹{ L‰îè2ÿüÿ¸HƒÄ[]A\A]A^A_ÃfDI�|$èŽýÿH‹UH�52L‰éH‰ÇI‰Ä1Àè“ÿüÿH‰ÞL‰çèȾþÿ…À…PÿÿÿL‰ç‰D$ èDýÿ‹D$ HƒÄ[]A\A]A^A_Ã�H‹{è§ùüÿI‰Åéqÿÿÿff.„@AWAVAUE1íATL�%®‚USHƒìhH‹É‚ƒx@„÷H‹-àƒH…í„'€}„5H‹Ö‚H…Û„�L�5¾wë@H‹›ðH…Û„€H‹CƒxuæH‹ƒøH‹¸H…ÿtÓ€?tÎèù÷üÿI‰Çë@ÆA€?…sHƒÀI‰Çtª¾5˃L‰ÿè[öüÿH…ÀuÖA€?t�L‰þL‰÷èõïÿÿH‹›ðH…Ûu‰f„HƒìL‹ wL‹wH‰êH�D$ H‹ ƒH‹5ð‚PH‹=ð�ATÿ5ƒèãúüÿHƒÄ …À„—H‹=À‚H…ÿtH‹\$H…ÛtH‰»°èUõüÿHƒÀH‰C8L‹=fnM…ÿ„ L�%dëj@H‹Y�Æ+E1É1ÒI‹O E1ÀH‰ÞH�=�ÿP(H‰ßèdÿüÿI‹FhH…ÀtH‹P@I‹N8H9ÊrH)ÊH‰P@A�N € IÇF8M‹0M…ÿ„šAöGHuìI‹ L‰æè×öüÿI‰ÆH…ÀtØH‹h8H�}èÿüÿI‹ 1ÉI‰èH‰ÂL‰öH‰Ãè{ôüÿ…À…SÿÿÿI‹G 1ÿºH�5ñH‰$è8ôüÿH‹4$H‰Ç1À誴þÿé%ÿÿÿDH�=kèDñüÿH‰ÅH…À…Áýÿÿ1íéÄýÿÿ�èÛ þÿH‹=„€H�5-€èèûüÿ…Àt\M…ít¶D$foD$@AˆEH‹D$PAE I‰E0HƒÄh[]A\A]A^A_Ã1ÿºH�5"è�óüÿH‰Ç1Àè´þÿéGþÿÿfD1ÿºH�5úèuóüÿH‰Ç1Àèë³þÿë…f„H‹=éL‰æèñòüÿ¶Šƒà<uE1íH�=ùèä¼ýÿéØüÿÿ€H‹=‰A¸1É1ÒH�5UèëõüÿI‰ÅH…ÀtÀ¶@<v<u´H‹€ºL‰îH�=!H‹@H‹€hÿ�¸A¶Ea‰Âƒâ€út ƒàüƒÈAˆEaI‹E0óAoUIÇE0óAo] óAoMH‰D$PA¶E)L$ ˆD$H�/f)T$0)\$@AÆEI‰E(é'ÿÿÿ€L‰þL‰÷H‰$è¡ìÿÿH‹$éuüÿÿ„AUATL�%,UH�-µ‹SH‰ûHƒìƒ{w6‹CHcD…Hèÿàf�E1ÉH‹S¹L‰çH‰Öó¦—À„ÀucH‹[ ƒ{vÊHƒÄ[]A\A]ÃfDH‹[ë­f�H‹{è‡ÿÿÿH‹{ è~ÿÿÿH‹[(ë“„H‹{ègÿÿÿë²DA¹ë‹„D‹C(H‹=~D‰ÉH�5»}è¦ïüÿ…À…{ÿÿÿL‹k1ÿºH�5LèWñüÿH‰ÇL‰î1ÀèʱþÿéRÿÿÿDƒt Ãf„H‹éçþÿÿ€AWAVAUATUSHƒìH‹‡øH‹WH‹€˜ L‹²hL‹`0H‹H(I‹D$hH‰L$H� �dH9È„ÿL‹¸àH‰ýM‹l$8I‹_HH…Û„«I\$`H‰Þ¿Iƒíÿ’�H‹EL‰ïH�sÿ��H‹EH�s¿ÿ��E‰èH�KH‰ïÇC GNUI‹†H‹t$H‹P èJíþÿI‹t$`1ÒIwH‰ïM‹l$8èÂúüÿ1Ò…ÀtHƒÄ‰Ð[]A\A]A^A_ÃH‰êL‰îH‰ßèJôüÿ1ÒL9è”ÂëÔI‹œ$°H…Û…IÿÿÿL‰ïè—úüÿM‹l$8H‹UH‰ÃI‰„$°é(ÿÿÿfDºH�5ì1ÿèÅïüÿH‰Ç1Àè;°þÿºéuÿÿÿ�AWAVAUATUH‰ýS1ÛHƒìH‹=¾|èÁïüÿD¾%‘}H‰ïI‰Åë�H�x€?/J�+D‰æHDØè ðüÿH…ÀuäH‰ïèŒïüÿH�|èòùüÿD¾5R}I‰ÇI‰Äë-f�D‰öH‰ïèÕïüÿH…ÀtCH)èH‰îL‰çH�XH‰ÚIÜHÝèíüÿ€}/uÏH‹50|L‰çMìèMíüÿD‰öH‰ïè’ïüÿH…Àu½H‰îL‰çè2íüÿHƒÄL‰ø[]A\A]A^A_ÃAWAVAUATUSH�ì˜H‰|$H‰÷H‰t$(H�5‚ÈèæõüÿI‰Ç1ÀM…ÿ„濽I½:èùüÿI‰Ä@M‰æë6H‰ÇL�uÿè”îüÿL‰òH)ÚH9Ðu?A€|,þ t7HíL‰çH‰îèCïüÿI‰ÄIÆL‰ó‰îL‰úL‰÷L)ã)ÞèÈðüÿH…Àu³M9ô„S¾ L‰çè­îüÿH…Àtƾ#L‰çè˜îüÿH…ÀtÆA¶$L‰ã< †O¹H‰ÞH�=<ó¦—À„Àu¶C< „:< „2¶H‰Ú<=wH¹: H£Ás ëQfDH‰Â¶JH�B€ù=wðH¿: H£ÏsàH9Ø„c€:/téÝD€xÿ/…ÎHƒèH9ØuíE1ö1ÀH‹L$H‹9H…ÿ„ÆH‹L$H‹AH‹IH�PJ�42H9΃ÐH‹L$H‰Q¶ {ˆH‹yH9L‰òH‰Þè,ñüÿH‹D$LpL‰pH‹BÆ0L‰ÿè¿ðüÿ…À„OþÿÿL‰çèO÷üÿL‰ÿè‡ìüÿ¸H�Ę[]A\A]A^A_ÃHƒÃ¶< ‡±þÿÿI£Årë„Àt°é¢þÿÿf�H�D$@L�KH‰D$ f�A¶€ú „s€ú „j„Ò„{ÿÿÿL‰ËëDH‰ÃD¶sH�CA€þ „RA€þ „HE„öuÛH�CH‰D$„Ò„;ÿÿÿ€ú/„IH‹|$(¾/L‰L$0èíüÿL‹L$0H‰D$L‰ÏL‰L$8èìüÿH‹L$H+L$(H�|H‰ÃH‰L$èböüÿH‹L$H‹t$(H‰ÇH‰D$HƒÁH‰ÊH‰L$0èßïüÿH‹L$0H‹D$H�SL‹L$8H�<L‰ÎèÀïüÿH‹L$ 1Ò1öH‹|$èôüÿ…ÀuTHƒ|$@„J1ÛH‰l$0H‰ÝH‹\$fDH‹D$HH‰ßH‹4èHƒÅècüÿÿH;l$@räH‹|$ H‹l$0è}èüÿHƒ|$t H‹|$è›õüÿL‹L$E„ö„&þÿÿA¶€ú …�þÿÿIƒÁéwþÿÿ€ÆA¶H�KH‰L$„ÒtÁéµþÿÿ€H‹L$ 1Ò1öL‰Ïè_óüÿ…Àu HÇD$Hƒ|$@…9ÿÿÿH‹|$ èìçüÿé|ÿÿÿ€H‹L$H)ØI‰ÆH‹9H…ÿ…:ýÿÿH�¸H‰yèùôüÿH‰ÇH‹D$H‰8HÇ@éJýÿÿH‹D$J�´1H‰pè+ëüÿH‰ÇH‹D$H‰8H‹@H�PéýÿÿH‹|$ èiçüÿéïþÿÿ1ÀE1öéºüÿÿf.„Hƒ= ktÃDH‹G H…ÀtñATUSH‰ûH‰ÇH�ì�è±êüÿ¨t H�Ä�[]A\Ã�H‹{ H‰æèéüÿ…À…ìH‹UkH9$„«H‹Ôk¾/H‹hH‰ïèêüÿH…Àu±H�5øH‰ïèŸóüÿH…Àt�H‹{ H�hèêüÿI‰ÄH…À„ºH‹ŠkH‰êL‰çH‹pH)òèˆêüÿ…À…cÿÿÿH‹ik1ÿºH�5s H‹hH‹XèþèüÿL‰áH‰ÇH‰êH‰Þ1Àèk©þÿé)ÿÿÿfDH‹D$H9œj…CÿÿÿH…À„:ÿÿÿH‰vjéüþÿÿf„H‹[ 1ÿºH�5è™èüÿH‰ÇH‰Þ1Àè ©þÿéÊþÿÿH‹{èŽëüÿI‰Äé5ÿÿÿfD¶©tƒà<u H� WuH¸HºH#|tH9Ðté"”þÿf�‹u…ÀÇué”þÿ€HƒìºH�5 1ÿèùçüÿH‰Ç1Àèo¨þÿÇÉtHƒÄéÌ“þÿff.„�Hƒì¾ H�=B�è˸þÿ€ ts H¸0 ÇhuÇšuH ÏsÆÐsgHƒÄÃAWAVA‰ÖAUATUSH‰ûHƒì(H‹‡ðH‰4$H‹@ÇD$ ‹hH‹ÛsH‹@ƒý”D$D‹huH‹‡à‹@‰D$ ¶dsƒà<„Aƒý”ÀöOs@…åÇD$€|$„æ„À„Þ‹S ö„ÒH‹»àöG „ÁL‹=¦rM…ÿtZH�5jZf.„I‹G8H9ðt7H…Àt2H‹ˆàöA t%D‹P A1ÒD‰Ð©u‹G,9A,„è„M‹ M…ÿu·H� H‰$÷ÂtHH�ï H‰$öÂt8ƒâH� H�ì HDÂH‰$ëf„‹S öÂ…´ÇD$E…ö„“‹=‰g…ÿu\L�-²EM�¥°I‹}H…ÿt/1Ò1öè†ÂýÿI‰EH…Àt‹°ˆ…öuA‹U‰�ˆf„IƒÅ0M9åu¿Ç)g¶Öq¨u2H‹3¹ H�=n ó¦—€ڄÒuL‹=@EM…ÿ…×€ƒàD‹c <„‘H‹»ðI‰Ý€L‰îè˜êüÿI‰ÅH…ÀtpIƒ}hI‹½ðuâA‹E ‰Â%€D1âƒâ ÂuÍöGEuÇH‹‡H…Àt»ö@HuµH‹“ðH‰ÙL‰îè“ïüÿ…ÀtA‹E AƒôƒðA ÄAƒôI‹½ðë„@A÷Ä uOL�-ðEI‹EH…À„£HƒìD‰òE1ÉM‰èjH‹t$H‰ÁH‰ßè´ýýÿI‰ÇXZHƒÄ(L‰ø[]A\A]A^A_ÃDAöÄ„îD‰àƒàtFƒ|$ u€|$L�-#Eu‘ƒýt,H‹4$¹H�=% L�-Eó¦—€ڄÒ„eÿÿÿDL�-‰DA÷Ä„LÿÿÿI�Å�A÷Ä@…8ÿÿÿI�íðA÷Ä…$ÿÿÿIƒÅ0AöÄ„ÿÿÿƒý„%H‹4$¹H�=“ ó¦—€ڄÒuL�-JD…À…âþÿÿL�-{CAöÄI�EÐLEèéÊþÿÿf.„H‹<$1Ò1öèÀýÿI‰ÇH…À„TýÿÿE1ä饀‹F …À„­3C ¨uvƒý…�Aƒý…“H‹ƒàH‹–à‹H,9J,uM¶ Foƒá€ùuH‹RH3PH‰Ð©€u,H‹“ðH‹=noH‰Ùè†íüÿ…ÀuBIƒ8MDçf„L‰ÿ1öè¶ÃýÿI‰ÇH…À„I‹w8H…ö…UÿÿÿM‰üëØ„I�L‰ù1ÒH‰ÞèŸÌýÿéûýÿÿf.„E1í1ÀéÃýÿÿfDƒý„ßH‹4$¹H�=-ÇD$ó¦—À„À…$üÿÿH‹4$ÇD$€~a„ðH�ðH‰$éþûÿÿf.„M‹]M…Û„Ù1Ò1öL‰ßè—¾ýÿI‰EH…À…7ýÿÿH‹ ³.I�UD‰æH‰ßè4ÃýÿH…À…ýÿÿH‹”mé ýÿÿ€A¾~M…ä„–ûÿÿI�|$L‰á1ÒH‰Þè§ËýÿM‰çéýÿÿ€‹L$ ƒùt-‰È1Ƀø H�>HE$”Á‰L$H‰$Aƒý„iúÿÿé6ûÿÿH� ÇD$H‰ $é-úÿÿH�öH‰$éûÿÿH‹H‹ðl€xa”D$ ¶L$ H…Ò„ÿÿÿ1öD‰d$ E1É1íL‰l$L‰ØD‹l$I‰ôH‰\$L�=·‰Ëé¨f.„L‹B0¹L‰ÿL‰Æó¦—Á€Ù„É…�A€xaA”ÂE…í…àA¶ÊH�5ƒI�|¹ó¦—Á€Ù„É„»D8Ó@”ÆM…Ûtn@„öuiH‹J8H…ÀtH@„öuCH…Ét‹I öÁt ƒáI‰ÔHEêH‹J I‰ÑH…Ét:H‰Ê‹Š„…ɉTÿÿÿH‹J8ëÆfDH…ÉtÒ‹I öÁtÊH‰Ðë»fDI‰Óë’L‰áL‹l$D‹d$ H‹\$H…Àt I‰EéèýÿÿL‰ØM…ÛuïH‰èH…íuçH‰ÈH…ÉHDÂëÛL‰áL‹l$D‹d$ L‰ÊH‹\$ë¿‹L$ ƒù„êûÿÿƒù …ðûÿÿéÜûÿÿff.„f�ATH‹=÷kH�5 kUSèéáüÿºH�5…Àˆñ‰Ç» L�%wkëCDH‹¹kH‹€øH‹�˜ H‹B8H9ńڃû H9Ńȿƒë„’èÍïýÿH‹=vkH‹Gƒx…¤A¶$ƒà<„”H‹‡øHƒ=‰jH‹€˜ H‹h8tãüÿHƒÄ‰è[]A\A]A^À‹-úi…ítÀºH�5¤ö1ÿ1íè‰ÛüÿL‰æH‰Ç1Àè\›þÿHƒÄ‰è[]A\A]A^ÃD1ÿºH�5„èUÛüÿL‰âH‰îH‰Ç1Àè%›þÿé8ÿÿÿ1ÿºH�5Šüè-ÛüÿH‰ÞH‰Ç1Àè ›þÿéúþÿÿH‰ßH‰îè-ãüÿI‹}H…ÿtèïÛüÿ¾¨u¾H‰ßè‰ßüÿH‹CH�5gH‰ßÿ�À…À…êþÿÿ1ÿºH�5×ÒèºÚüÿH‰ÞH‰Ç1Àè-›þÿéÅþÿÿ„H‰ßèâüÿHƒÄ‰è[]A\A]A^Ãf„1ÿºH�5’ûèmÚüÿH‰ÞH‰Ç1Àèàšþÿé­ýÿÿH‰ß1íèÎáüÿékþÿÿf„AWAVAUATUSH‰ûH‰÷HƒìHH‹F‰T$€8/H‰D$„ÎH…Û„]€;„TH‹H‰D$0H‹D$H‰ÇH‰D$8èÚüÿHƒÀH‰D$ H�D$0H‰D$(€¾5ÑgH‰ßèaÚüÿH‰$H…À„DL‹4$H‹D$ M‰õI)ÝI�|è;äüÿH‰ÅH‰ÇL9ótL‰êH‰ÞèÅÝüÿBÆD-/J�|-H‹t$1Ûè¾×üÿé(f„¹H‰ÖH�=Ûó¦—À„Àt¹H�=zÿH‰Öó¦—À„À…SH‹D$0H…À„jL‹0M…ö„9A€>/„lè¿ÙüÿL‰÷H‰D$è"ÙüÿH‹|$H‰ÃèÙüÿH�|è{ãüÿH‹T$L‰ñH�5ÿH‰ÃH‰Ç1Àèáüÿ¾/H‰ßèÂÙüÿH…À„)ÆH‰ßI‰ÞèËØüÿE‰íI)ìI�|è+ãüÿI‰ÅM…ÿ„ŸI‰ØM�OH‰éD‰âH�5¶þL‰ï1Àè!áüÿH‰ßè‰ØüÿA�\H‰ïL‰íèÙâüÿL‰÷èÑâüÿ‰ß¾$HïèÒØüÿI‰ÄH…À„þ¾/L‰çI�\$è´ØüÿH‰ïI‰Çè9ØüÿI‰ÅM…ÿtAÆA¶D$H‰Þ<{u A¶D$I�t$H�VH‹=Ç`H�5p`è‹ÖüÿH‰ÅH‰ÃH…À„0H�D$0H‰$H�D$ H‰D$H�D$@H‰D$€H‹{H…ÿt+èÚÔüÿ¨…êH‹{H…ÿt·`f%€f=€„4I‰ìH9Ýt6@I‹|$H…ÿt è™Ôüÿ¨uH‹sI‹|$è7×üÿ…À„ïM‹$$I9ÜuÎH�=_õÿÿH‰ÈUHÇ%UèèÍýÿH‹UH…Àt H‹x èCÔüÿ¨tWL‹cL‹k‹ ™aL‰d$ L‰l$(L‰d$0…É…ËH‹ÛTH…À„šH‹pH‹<$ºH‰t$8èÃõÿÿ…Àt€H‹H…Û…ôþÿÿ¶(_ƒàÀ<€…þÿÿ1ÿH�5_è<Øüÿ…À…þÿÿ1ÿºH�5¶õè±ÒüÿH‰Ç1Àè'“þÿéãýÿÿf�L9ãu£éÿÿÿfDè{Óüÿ¨u�é¾þÿÿf�E1äL‹t$H‹= `D‰âL‰öè&øÿÿ…À…fÿÿÿH‹=ç_H…ÿ„è™âÿÿD‰âL‰öH‰ÇI‰Åèø÷ÿÿL‰ïA‰Çè½ÜüÿE…ÿ…,ÿÿÿHƒ=´_uHƒ=¢_„ÏH�=¾øè0ÏüÿH…ÀtH‹t$D‰âH‰Çè«÷ÿÿ…À…ëþÿÿH‹=l^H�5^è ÐüÿI‰ÇH…ÀuëfDL‰ÇèHÜüÿM‹?M…ÿt`E„öt[I‹E1íA¾èéáÿÿI‰ÀH‹CI9GuÌH‹t$L‰ÇD‰âL‰D$E1íè4÷ÿÿL‹D$…ÀL‰ÇA•ÅA”ÆèíÛüÿM‹?M…ÿu¥DE…í…Oþÿÿ‹ÉRL‹-ºR…Ò„ûH‹{M…ít*H‹CH‹t$H‰|$HD‰âL‰ïH‰D$@èËöÿÿ…À… þÿÿH‹{è*ÑüÿL‹=3`I‰ÅM…ÿtfA‹G…ÀuSI‹èÑüÿI�|èmÛüÿI‹WH‹KH�5 ÷I‰ÆH‰Ç1ÀèqÙüÿH‹<$D‰âL‰öL‰t$8è]óÿÿ…À…�ýÿÿL‰÷èÛüÿM‹?M…ÿu�Aƒü…L‹cL‹k1ÿºH�5�óè`ÐüÿL‰âL‰îH‰Ç1ÀèÐ�þÿéSýÿÿHƒ=Û]…1þÿÿH�=ˆõèaÍüÿH…À„þÿÿ€8„þÿÿH‹t$D‰âH‰ÇèÏõÿÿ…À„ûýÿÿé ýÿÿf�H‹™\H…Û„²ûÿÿE1öE1íE1äA¿L� ŠCL�RöL�[öëf.„H‹›ðH…Û„½H‹ƒö@HuãH‹ƒ�H…ÀtwE1Àë/f�H‰Ö¹ L‰ßó¦—€ڄÒu Hƒx8 ECÇH‹@H…À„¶H‹L9Hhtê¹H‰ÖL‰×ó¦—Á€Ù„Éu³A¸E…ö„”E9ð…M…䄎f�Aƒþ…Vÿÿÿ¶R[H‹›ðƒà?ƒÈ€ˆ?[H…Û…CÿÿÿM…ä„:I‹D$H�5wõL‰çH‹€h‹P0ƒÊè)ÍüÿH…À„Ç@pH‰…(éoúÿÿE…ÀtˆéfÿÿÿE‰ÆM…ä…tÿÿÿAƒøt öÊZÀ„aÿÿÿH‹CA½ƒxLDãéJÿÿÿA¼éâûÿÿ1ÿºH�5øôèLÎüÿL‰âL‰îH‰Ç1ÀèŽþÿé ûÿÿH‹=X[1ÒH�5ðô1ÀHÇD$@HÇD$PHÇD$HèUÏüÿH‹|$H‰ÆI‰Åè%ßÿÿ…ÀtlL‰ïèyØüÿH‹|$@L‹-]OH…ÿtè#ÞÿÿH‹|$@I‰ÅH‰DOèOØüÿÇ=Oé~üÿÿE…í„iùÿÿ1ÿºH�5Iðè”ÍüÿH‰Ç1Àè ŽþÿéGùÿÿL‰ïè ØüÿH‹=žZ1Ò1ÀH�58ôè¶ÎüÿH‹|$H‰ÆI‰Åè†Þÿÿé`ÿÿÿH‹ªZ1ÿºH�5ìîè7ÍüÿH‰ÇH‰Þ1Àèª�þÿéT÷ÿÿºH�5)ïépøÿÿAƒøºH�5dïIEÜ1ÿèùÌüÿH‰ÇH‰Þ1Àèl�þÿéôýÿÿ€‹‚N…ÀuH‹G H…Àtö@EuÃfDAUATUSH‰ûH‰ÇHƒìè{ÍüÿI‰ÄH…À„�H‹HNH…ÛtqL�-òëf.„H‹H…ÛtVH‹sL‰çèÌËüÿ…ÀtèH‹k¾/H‰ïè÷ÌüÿH…ÀuÒL‰îH‰ïè‡ÖüÿH…ÀtÂH�PH‰îL‰çH)êè�Íüÿ…Àu¬ÇÊMHƒÄ[]A\A]ÀH‹C H‹8èÏüÿI‰Äé]ÿÿÿf.„f�Ƕ#Xƒâ€ú„Ÿ‹5ÁYH�×…ö„†‹ |YH� ú…É„qH‹5æWH¹ @H¸ @H!ñH9Á„†H¿@H¸@H!÷H9Ç„NI¸@H�E…I¹@I!ðM9È„D‹ xWH�¡§A�á A�ù „áH�žÌ€ú„ÑH¸ @H9Á„H¸@H9Ç„—H¹@H�nTI9È„‘H�þtA�ù „}H�z@€útqH¸ @H‰òH!ÂH9„ÎH¸@H!ÆH9Æ„ÒH�?‰ö´V@u2öªV H�ЗH� dHDÂÃ@H�i3ö:W„UÿÿÿË=þWH�{ÀH�\«…ÿHDÂÃDH�©aöW„žþÿÿÃöñVH�úH� »HEÂÃfDöÑVH� ïH�ãHEÂÃö·VH�pH�¹ÞHDÂÃH�5&ö–V„ÿÿÿÀATUH‰ýS¾_H‰ØÁë‰Âƒâ¨@u'ƒËL‹g „ÒtAöD$EuLAöD$Eu,[1À]A\ÃD„Òt L‹g AöD$Eu(…ÛtàL‹e AöD$EtÔ‰ÞL‰çèÆÍüÿ[1À]A\À1ÿH�5_äºèÉüÿL‰æH‰Ç1Àèx‰þÿ…Ût˜ë¶f�SºH‰ûH�5hä1ÿèÙÈüÿH‰ßH‰Æ1ÀèœÌüÿºH�5˜ä1ÿè¹ÈüÿH‰ßH‰Æ1Àè|ÌüÿH�5Uå1ÿºè™ÈüÿH‰ß[H‰Æ1Àé[Ìüÿff.„AWAVAUATUH‰õSHƒìL‹7H‰|$H‰÷M…ö„«è†ÈüÿD¾%VVM‰÷H‰ÃE‰åë HƒÀI‰Çt0H‰ÚL‰þH‰ïèIÆüÿ…ÀuA¶„ÀtXD8ètSD‰æL‰ÿè¬ÈüÿH…ÀuÇL‰÷è/ÈüÿH�|è•ÒüÿL‹t$I‰è¾ îUH‰ÃH�5–�1ÀI‹H‰ßè�ÐüÿI‹>èWÒüÿI‰HƒÄ[]A\A]A^A_ÃDè»ÉüÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@USHƒì�ÿ’„žŽ˜�ÿ–„¬ŽÆ�ÿ˜„ Œ”�ÿ™…HH‹¡8H�5j¡H‰ßèÅüÿ…À„úH�5˜êH‰ßèëÄüÿ…À„CH�5†êH‰ßèÔÄüÿ…À…§Ç>S¸HƒÄ[]ÃfD�ÿ-„„~b�ÿ�„Ö�è�ÿ.…´€ òR¸ë¹fD�ÿ”„\�n¶ÊRƒà?ƒÈ@ˆ¾R¸ë‡@ƒÿP„gƒÿzubH‹»7¹H�=¢H‰Þó¦—À„À„%¹H�=ÈéH‰Þó¦—À„À…Ÿ¶ZRƒàŸƒÈ ˆNR¸éÿÿÿf�HƒÄ1À[]À€%.Rþ¸éòþÿÿ€€ R¸éÚþÿÿ€H‹=)HH…ÿtè?ÐüÿHÇHH‹ý6H…Ò„¬¹H�=¸ŸH‰Ö¸ó¦—Á€Ù„É„ƒþÿÿH‰×èxÇüÿH‰ÑG¸éjþÿÿ€€%ŽQý¸éRþÿÿ€€%tQ?¸é:þÿÿ€H‹=y6èô´ýÿ¸éþÿÿf.„H‹5Y6H�=jGèmüÿÿ¸éöýÿÿHƒ ØQ¸f� QàéØýÿÿD¶ýPH‹6¹H�=3èƒàóH‰ÞˆÞPó¦—€ڄÒ„йH�=ýçH‰Þó¦—€ڄÒ…³ƒÈˆ¦P¸ékýÿÿ„H‹5©5H�=ÂFè½ûÿÿ¸éFýÿÿÇrP¸é/ýÿÿ@€ SP`¸éýÿÿ€ƒÈˆ;P¸éýÿÿDH�‰åH‰:5éeþÿÿDÇP¸éÏüÿÿ@¹H�=>çH‰Þó¦—€ڄÒ…ƒÈ ˆÔO¸é™üÿÿfD¹H�=çH‰Þó¦—À„ÀuR€ ¤O¸éhüÿÿH�5ÑæH‰ßèÁüÿºH�5Zá…À„bÿÿÿ1ÿè+ÃüÿH‰ÞH‰Ç1À螃þÿ¸é'üÿÿ¹H�=®æH‰Þó¦—À„À„‰¹H�=ŸæH‰Þó¦—À„À„ɹ H�=“æH‰Þó¦—À„À„0¹ H�=ƒæH‰Þó¦—À„À…Ô‹ÚN%ÿþÿ€Ì€‰ÌN¸é‘ûÿÿºH�5Êàé;ÿÿÿ1ÒH�t$H�{è=ÊüÿH‹T$H‰‰P€:u H�PÿH…„’ûÿÿH‹˜3ºH�5¤àH�X1ÿè!ÂüÿH‰ÞH‰Ç1À蔂þÿébûÿÿ1ÒH�t$H�{èßÉüÿH‹T$H‰3P€:u H�PÿH…„4ûÿÿH‹:3ºH�5nàH�Xë ¹ H�=�åH‰Þó¦—À„À…‘‹èM%ÿþÿ ‰ØM¸é�úÿÿ1ÒH�t$H�{ èZÉüÿH‹T$H‰¾M€:u#H…ÀxHƒ=¬M…©úÿÿHÇ›Mÿÿÿÿé™úÿÿH‹Ÿ21ÿºH�5ùßH�X è(ÁüÿH‰ÞH‰Ç1Àè›�þÿëµH�5ñäH‰ßèªÄüÿ…ÀuH� ûM¸éúÿÿH�5 ¿H‰ßè‚Äüÿ…ÀuHƒ ÖM¸éßùÿÿH�5°äH‰ßè]Äüÿ…ÀuHƒ ±M ¸éºùÿÿH�5•äH‰ßè8Äüÿ…ÀuH� ‰M¸é’ùÿÿH�5wäH‰ßèÄüÿ…ÀuHƒ dM¸émùÿÿH�5[äH‰ßèëÃüÿ…ÀuH� Îó¦—€ڄÒuL‹=° M…ÿ…×€ƒàD‹c <„‘H‹»ðI‰Ý€L‰îèh­üÿI‰ÅH…ÀtpIƒ}hI‹½ðuâA‹E ‰Â%€D1âƒâ ÂuÍöGEuÇH‹‡H…Àt»ö@HuµH‹“ðH‰ÙL‰îèc²üÿ…ÀtA‹E AƒôƒðA ÄAƒôI‹½ðë„@A÷Ä uOL�-` I‹EH…À„£HƒìD‰òE1ÉM‰èjH‹t$H‰ÁH‰ßè„ÀýÿI‰ÇXZHƒÄ(L‰ø[]A\A]A^A_ÃDAöÄ„îD‰àƒàtFƒ|$ u€|$L�-“ u‘ƒýt,H‹4$¹H�=õÌL�-u ó¦—€ڄÒ„eÿÿÿDL�-ù A÷Ä„LÿÿÿI�Å�A÷Ä@…8ÿÿÿI�íðA÷Ä…$ÿÿÿIƒÅ0AöÄ„ÿÿÿƒý„%H‹4$¹H�=cÌó¦—€ڄÒuL�-º …À…âþÿÿL�-ëAöÄI�EÐLEèéÊþÿÿf.„H‹<$1Ò1öèã‚ýÿI‰ÇH…À„TýÿÿE1ä饀‹F …À„­3C ¨uvƒý…�Aƒý…“H‹ƒàH‹–à‹H,9J,uM¶ 2ƒá€ùuH‹RH3PH‰Ð©€u,H‹“ðH‹=>2H‰ÙèV°üÿ…ÀuBIƒ8MDçf„L‰ÿ1ö膆ýÿI‰ÇH…À„I‹w8H…ö…UÿÿÿM‰üëØ„I�L‰ù1ÒH‰Þèo�ýÿéûýÿÿf.„E1í1ÀéÃýÿÿfDƒý„ßH‹4$¹H�=ýÊÇD$ó¦—À„À…$üÿÿH‹4$ÇD$€~a„ðH�ÀÊH‰$éþûÿÿf.„M‹]M…Û„Ù1Ò1öL‰ßèg�ýÿI‰EH…À…7ýÿÿH‹ ƒñI�UD‰æH‰ßè†ýÿH…À…ýÿÿH‹d0é ýÿÿ€A¾~M…ä„–ûÿÿI�|$L‰á1ÒH‰ÞèwŽýÿM‰çéýÿÿ€‹L$ ƒùt-‰È1Ƀø H�ÊHE$”Á‰L$H‰$Aƒý„iúÿÿé6ûÿÿH� ÞÉÇD$H‰ $é-úÿÿH�ÆÉH‰$éûÿÿH‹H‹À/€xa”D$ ¶L$ H…Ò„ÿÿÿ1öD‰d$ E1É1íL‰l$L‰ØD‹l$I‰ôH‰\$L�=‡É‰Ëé¨f.„L‹B0¹L‰ÿL‰Æó¦—Á€Ù„É…�A€xaA”ÂE…í…àA¶ÊH�5SÉI�|¹ó¦—Á€Ù„É„»D8Ó@”ÆM…Ûtn@„öuiH‹J8H…ÀtH@„öuCH…Ét‹I öÁt ƒáI‰ÔHEêH‹J I‰ÑH…Ét:H‰Ê‹Š„…ɉTÿÿÿH‹J8ëÆfDH…ÉtÒ‹I öÁtÊH‰Ðë»fDI‰Óë’L‰áL‹l$D‹d$ H‹\$H…Àt I‰EéèýÿÿL‰ØM…ÛuïH‰èH…íuçH‰ÈH…ÉHDÂëÛL‰áL‹l$D‹d$ L‰ÊH‹\$ë¿‹L$ ƒù„êûÿÿƒù …ðûÿÿéÜûÿÿff.„f�ATH‹=Ç.H�5p.US蹤üÿºH�5íÂ…Àˆñ‰Ç» L�%G.ëCDH‹‰.H‹€øH‹�˜ H‹B8H9ńڃû H9Ńȿƒë„’è�²ýÿH‹=F.H‹Gƒx…¤A¶$ƒà<„”H‹‡øHƒ=Y-H‹€˜ H‹h8t/„lè�œüÿL‰÷H‰D$èò›üÿH‹|$H‰Ãèå›üÿH�|èK¦üÿH‹T$L‰ñH�5ëÁH‰ÃH‰Ç1ÀèO¤üÿ¾/H‰ßè’œüÿH…À„)ÆH‰ßI‰Þè››üÿE‰íI)ìI�|èû¥üÿI‰ÅM…ÿ„ŸI‰ØM�OH‰éD‰âH�5†ÁL‰ï1Àèñ£üÿH‰ßèY›üÿA�\H‰ïL‰íè©¥üÿL‰÷è¡¥üÿ‰ß¾$Hï袛üÿI‰ÄH…À„þ¾/L‰çI�\$è„›üÿH‰ïI‰Çè ›üÿI‰ÅM…ÿtAÆA¶D$H‰Þ<{u A¶D$I�t$H�VH‹=—#H�5@#è[™üÿH‰ÅH‰ÃH…À„0H�D$0H‰$H�D$ H‰D$H�D$@H‰D$€H‹{H…ÿt+誗üÿ¨…êH‹{H…ÿt·ä"f%€f=€„4I‰ìH9Ýt6@I‹|$H…ÿt èi—üÿ¨uH‹sI‹|$èšüÿ…À„ïM‹$$I9ÜuÎH�=_õÿÿH‰xHÇÕè¸�ýÿH‹ÉH…Àt H‹x è—üÿ¨tWL‹cL‹k‹ i$L‰d$ L‰l$(L‰d$0…É…ËH‹‹H…À„šH‹pH‹<$ºH‰t$8èÃõÿÿ…Àt€H‹H…Û…ôþÿÿ¶ø!ƒàÀ<€…þÿÿ1ÿH�5á!è ›üÿ…À…þÿÿ1ÿºH�5†¸è�•üÿH‰Ç1Àè÷Uþÿéãýÿÿf�L9ãu£éÿÿÿfDèK–üÿ¨u�é¾þÿÿf�E1äL‹t$H‹=Ù"D‰âL‰öè&øÿÿ…À…fÿÿÿH‹=·"H…ÿ„è™âÿÿD‰âL‰öH‰ÇI‰Åèø÷ÿÿL‰ïA‰Çè�ŸüÿE…ÿ…,ÿÿÿHƒ=„"uHƒ=r"„ÏH�=Ž»è’üÿH…ÀtH‹t$D‰âH‰Çè«÷ÿÿ…À…ëþÿÿH‹=è ŽüÿH‰ßH‰Æ1ÀèÌ‘üÿº1ÿH�5nèé�üÿH‰ßH‰Æ1À謑üÿº1ÿH�5žèÉ�üÿH‰ßH‰Æ1À茑üÿº1ÿH�5Æè©�üÿH‰ßH‰Æ1Àèl‘üÿ1ÿºH�5öè‰�üÿH‰ßH‰Æ1ÀèL‘üÿº1ÿH�5&èi�üÿH‰ßH‰Æ1Àè,‘üÿº1ÿH�5NèI�üÿ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�5.詌üÿH‰ßH‰Æ1Àèl�üÿ1ÿºH�5f艌üÿH‰ßH‰Æ1ÀèL�üÿº1ÿH�5žèiŒüÿH‰ßH‰Æ1Àè,�üÿº1ÿH�5ÎèIŒüÿH‰ßH‰Æ1Àè �üÿº1ÿH�5þè)ŒüÿH‰ßH‰Æ1Àèì�üÿº1ÿH�5&è ŒüÿH‰ßH‰Æ1ÀèÌ�üÿº1ÿH�5Vèé‹üÿH‰ßH‰Æ1Àè¬�üÿº1ÿH�5†èÉ‹üÿH‰ßH‰Æ1ÀèŒ�üÿº1ÿH�5¶è©‹üÿH‰ßH‰Æ1Àèl�üÿ1ÿºH�5æ艋üÿH‰ßH‰Æ1ÀèL�üÿº1ÿH�5öèi‹üÿH‰ßH‰Æ1Àè,�üÿº1ÿH�5.èI‹üÿ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�5詊üÿH‰ßH‰Æ1ÀèlŽüÿ1ÿºH�5†艊üÿH‰ßH‰Æ1ÀèLŽüÿº1ÿH�5öèiŠüÿH‰ßH‰Æ1Àè,Žüÿº1ÿH�5&èIŠüÿH‰ßH‰Æ1Àè Žüÿº1ÿH�5öè)ŠüÿH‰ßH‰Æ1Àèì�üÿº1ÿH�5fè ŠüÿH‰ßH‰Æ1ÀèÌ�üÿº1ÿH�5–èé‰üÿH‰ßH‰Æ1Àè¬�üÿº1ÿH�5FèɉüÿH‰ßH‰Æ1ÀèŒ�üÿº1ÿH�5¶詉üÿH‰ßH‰Æ1Àèl�üÿ1ÿºH�56艉üÿH‰ßH‰Æ1ÀèL�üÿº1ÿH�5žèi‰üÿH‰ßH‰Æ1Àè,�üÿº1ÿH�5èI‰üÿH‰ßH‰Æ1Àè �üÿº1ÿH�5~è)‰üÿH‰ßH‰Æ1ÀèìŒüÿº1ÿH�5è ‰üÿH‰ßH‰Æ1ÀèÌŒüÿº1ÿH�5.èéˆüÿH‰ßH‰Æ1À謌üÿº1ÿH�5fèɈüÿH‰ßH‰Æ1À茌üÿº1ÿH�5ž詈üÿH‰ßH‰Æ1ÀèlŒüÿ1ÿºH�5 艈üÿH‰ßH‰Æ1ÀèLŒüÿºH�5 1ÿèiˆüÿH‰ßH‰Æ1Àè,ŒüÿºH�58 1ÿèIˆüÿH‰ßH‰Æ1Àè ŒüÿH�5] 1ÿºè)ˆüÿH‰ß[H‰Æ1Àéë‹üÿff.„H‹>¹H�5ó¦—À„ÀuÇÃff.„@€¸tÃ@AUATUH‰ýSH‰óHƒìL‹gH‰÷èä‡üÿA€<$@Lcèt:L‰êH‰ÞL‰çè¼…üÿ‰Â¸…Òu C€<,@¸t5HƒÄ[]A\A]Ãf.„€;_uÁƒèH�sI�|$HcÐèw…üÿ…ÀtÂë§�H‰-™ 1ÀëÀDUH‰ÍSHcÚHƒÃ9HÁãHƒìH‹9H‰Þè!ˆüÿH�5š³H‰EH�ŒàøÿÿH‹‡³H�yH‰H‹‘ºHƒçøH‰�H)ùH)Î�Á ÁéóH¥HƒÄ[]ÃDAWA‰×AVAUATI‰üUSH‰óHƒì(¶òƒà<„G¾$H‰ßI‰Ýè7‡üÿH‰ÅH…Àt&I‰ÆI)ÞI�~è ‘üÿL‰òH‰ÞI‰ÅH‰Ç诊üÿCÆD5L�t$L‰÷èPýÿE…ÿ„‹=• …ÿu[H� bëH‹9H…ÿt21Ò1öH‰ $èÝbýÿH‹ $H‰AH…Àt‹°ˆ…öu‹Q‰�ˆDHƒÁ0H� ìH9Áu¶Ç6 A‹D$ ‰$¶ƒà<txI‹¼$ðL‰àDH‰Æè ‹üÿH…Àt[HƒxhH‹¸ðuåD‹$‹H D‰Ò‰Î1Ê�怃â òuÊöGEuÄH‹—H…Òt¸öBHu²D‰Òƒñƒò уñ‰ $럀‹$¨…‡E1À1ÉH�5r¿L‰D$H‰ $èÖ&þÿ¿H‰ÆèI&þÿHƒìD‰úL‰îAVL‹D$I‰ÁL‰çH‹L$è8žýÿZYI‰Ç¶<ƒà<uA‹D$pI‹W8A‰‡€‰Bpf�M‹gM�wM…ätEAƒ|$u.I‹D$¾$L‹(L‰ïèS…üÿH…ÀtH…ítL‰îH‰ßè>ˆüÿ…Àx M‰æM‹$$M…äu¾Hƒ|$tH‹D$L‰ H‹D$I‰HƒÄ(L‰ø[]A\A]A^A_Ã@I‰õ1íéíýÿÿfD1Ò1öL‰ïèô`ýÿH…À„èýÿÿE1ÿë.fD‹R …Ò„A3T$ ƒâ„÷1öH‰Çè eýÿH…ÀtH‹P8H…ÒuÏ1öH‰ÇI‰ÇèòdýÿH…ÀuåM…ÿ„äI�L‰ù1ÒL‰æèómýÿéXÿÿÿL�§é©t7Iƒè0¨t/I�è�¨u$¹H�=ÂL‰îó¦—À„ÀI�@`M�@0LEÀI‹HH…É…,þÿÿI‹81Ò1öL‰D$è`ýÿL‹D$H‰ÁI‰@H…À…þÿÿ‹4$I�PL‰çè·dýÿL‹D$H…ÀH‰Á…æýÿÿH‹ éÚýÿÿf.„H‰Á1ÒL‰æL‰÷H‰$è,mýÿH‹$I‰Çé þÿÿA¿~é¢üÿÿDHƒìH‹w1ÀH�=芃üÿ¸HƒÄÃAWAVI‰ÎAUI‰ÕATUH‰õSH‰ûHƒì(D‹‹ L‹gE…Ò…šH‹CL�L$HÇD$L‹½ð‹@ ƒø„�v[ƒø „šƒø@…ÅL‰ÊA¸L‰áH‰îL‰ÿL‰L$èm‚üÿL‹L$…À„‘H‹…ðL‰ÏH‹@ÿP I‰Ä鬀ƒøuwA¸L‰áL‰ÊH‰îL‰ÿè$‚üÿ…ÀtQH‹SD¶d$D‹JE…ÉtrE�d$€E¶äAƒÄ€Mcäë`L‰ÊA¸L‰áH‰îL‰ÿL‰L$èÜ�üÿL‹L$…À…L‹cL‹½ðºH�5ð1ÿè‘�üÿL‰áH‰êL‰þH‰Ç1ÀE1äèûAþÿ‹ Q …Éu)M‰ðL‰éL‰âH‰îH‰ßèͬHƒÄ([]A\A]A^A_ÃfDH‹SH‹KL‰æ1ÀH�=Ìèß�üÿH‹C‹P…Ò…¸‹p H�=|1Àè¿�üÿëœDH‹H‹OL‰âH�=;H‹H‹p1Àè™�üÿL‹cé>þÿÿL‰ÊA¸L‰áH‰îL‰ÿL‰L$èä€üÿL‹L$…À„ÿÿÿH‹SH‹…ðL‰ÏD‹BH‹@E…Àt\ÿPXI‰Äéÿÿÿ�H‹SH‹…ðL‰Ï‹rH‹@…öt'ÿP@I‰Äéñþÿÿ@H�=Àÿ1Àè �üÿH‹Cé1ÿÿÿ�ÿP8I‰ÄéÊþÿÿDÿPPI‰ÄéºþÿÿDAWAVAUATUSH�ìˆL‹¿�L‹§øM…ÿ„mI‰ýDI‹ŸH…ÛuéG€H‹H…Û„4ƒ{uîI‹¬$°H9k uàH‹E8L‹µ°H‰D$M…ö„ÙI‹¼$¨è²{þÿH‰ÇH‰Åè7ŠüÿI‹´$¨A‰èL‰ïH‰ÁH�OH‰$èf|þÿH‹ÿ H‹SL‰ïH�t$@ÇD$PHÇD$@H‹€øHÇD$HHÇD$XL‹ ¸HÇD$`L)àIG(HÐH‰D$hI‹‡�H�DL‰òH‰D$pèì„üÿH‹s1ÒL‰ïI·�èg‰üÿL‹$…ÀuH‹t$L‰êL‰÷L‰$èû‚üÿH;D$L‹$tI1ÀH�Ĉ[]A\A]A^A_Ã@M‹M…ÿ…›þÿÿºH�5O1ÿèˆ~üÿH‰Ç1Àèþ>þÿ¸ë¹Hƒý¸L�t$HÇD$RSDSHGèfïÀI�VHÇD$0D$ƒýƒ•@öÅ…â…í…¶L‰×賈üÿH‹t$pL‰òL‰ïèã„üÿ…À„KÿÿÿH‹” H‹�øH‹CIG(HÇ‚èL)àH‰‚à¸éÿÿÿH‹|$èlˆüÿH‰…°I‹„$°L‹°°H‹@8H‰D$éùýÿÿ‰èƒíI‹LøH‰Løƒý‚eÿÿÿƒåø1À‰ÁƒÀI‹4 H‰4 9èrïéJÿÿÿA¶AˆF@öÅ„8ÿÿÿ‰íA·D*þf‰D*þé&ÿÿÿA‹‰íA‰FA‹D*ü‰D*üéÿÿÿf.„AVI‰öAUI‰ÕATUH‰ýS1ÛHƒìL�d$ë(f�H‰ê¾L‰çèp†üÿ…À~ßH‹ýé[úÿÿH�=VðH�5ðÇ1Àè qüÿH‹=ºüH‹_(H…Ût'H�-7ðf�H‹sH‰ï1ÀèâpüÿH‹[ H…ÛuéH‹=Šü1ÒH�5)íÿÿèoüÿH‹­üH…Û„µH�-÷ïDH‹3H‰ï1Àè›püÿH‹›ðH…ÛuçéÂøÿÿ‹°÷…Ò…OH‹-üH‹X(H…Û„ÜùÿÿL�%Ñçÿÿë€H‹[ H…Û„¿ùÿÿ€{uíH‹k€}@„¾@H‰ïèpüÿH…À…äH‹=ÒûH‰êL‰æHÇ©òètuüÿH‹�òH…Àt H‹P0ƒ=5ÔÿÆCH‰S0H‹P(H‰S(uƒL‹hH‹kº1ÿH�5ÃèoüÿL‰êH‰îH‰Ç1Àè€/þÿ‹:ò…À…Jÿÿÿº1ÿH�5 ÃÇòèÕnüÿH‰Ç1ÀèK/þÿ1ÿºH�5Ãè¸nüÿH‰Ç1Àè./þÿéÿÿÿf„è{òÿÿH�=|îH�5½ëÿÿ…ÀH�kîHEøèË�éŒøÿÿH‰ïè~püÿÆ_H‰Å¾@H‰ïèûnüÿH…ÀtÆH‹=´ú1É1ÒH‰îA¸èqüÿH…À„‰þÿÿ€x…þÿÿH‹P0H‹@(ÆCƒ= ÓÿH‰S0H‰C(…^þÿÿL‹kºH�5öÁ1ÿèïmüÿH‰êL‰îéÚþÿÿ@H‹[ ºH�5(p1ÿèÉmüÿH‰ÇH‰Þ1Àè<.þÿHƒÄ([]A\A]A^A_Ã1íE…À@žÅƒÅbé:üÿÿÇVÜéz÷ÿÿH‰ïè•oüÿH‰ÅéÿÿÿH�=æÄèñküÿé ýÿÿºH�5ØÀé´ùÿÿH‹äùé<÷ÿÿH‹=¸ðH…ÿ…°ùÿÿé»ùÿÿ½céÎûÿÿUSHƒì¶cù¨…£H�{�¨uP‹’ð…ÀuF‹Òƒú„¯H�P˜H�íf„HƒÀ9tH‹XH…ÛuïH� Ä„è›ðÿÿ…Àt&H‰ßèßlüÿH�xèFwüÿH‰ÞÆ_H‰ÅH�xH‰ëèájüÿH‰ßèÉ‚ýÿHƒÄ[]énþÿfDºH�5,Á1ÿèelüÿH‰Ç1ÀèÛ,þÿ¶”øé4ÿÿÿ€H�oìé|ÿÿÿff.„�Hƒìèðÿÿ¾H�=±‘è&=þÿH�Nì€ È÷ H‰¹ÀH¸ÇµùH‰ÎøHƒÄÃ�SH‰ûè·ïÿÿH�=Dëèk‰H‹{ èÒÎ…Àu1À[Ãf.„H‹{[év°fDAWAVAUI‰õATL�%®ÑUH‰ýSHƒìDè[ïÿÿIƒ<$„¹L�5¡Ñ1Ûë&DL‰þH‰ïèõnüÿ…Àt=IƒÆ(ƒÃIƒ~脈A‹F M‹>…ÀtÔèïÿÿH‰ïƒø•À¶ÀIÇL‰þè¸nüÿ…ÀuÃHcÛ¹H‰îH�›H�=œêI�ÄL‰hÇ@ ó¦—À„Àuè¿îÿÿH�-ë…ÀH�ëHDèéFÿÿÿHƒÄ[]A\A]A^A_ÃH�x¾°H�=-êèßþÿff.„@SH‰û1ÒHƒìH‹=ßÛH�t$èÅmüÿH‰ßH‰ÆèÊþÿÿH‹\$H;¾ÛtH‰µÛHƒÄ[ÀºH�5d¿1ÿè5jüÿH‰ÞH‰Ç1Àè¨*þÿH‹\$H‰|ÛHƒÄ[ÃfDUH‰õSHƒìèrÿÿÿH‹[Û¶<,tD„ÀuHƒÄ[]Ãf„H�51¿1ÿºèÍiüÿHƒÄH‰ÞH‰Ç[1À]é:*þÿf.„HƒÃH‰ïH‰ÛHƒÄ[]éÿÿÿ€AWAVAUATUS‰ûHƒìè[íÿÿ�»Óþÿÿƒÿ5‡´H�å¿HcºHÐÿà@H‹=ÁìH…ÿtè×süÿHǬìH‹•ÚH…À„ ¹H�=PCH‰Æó¦—€ڄÒtH‰ÇèküÿH‰rìf�·5qìf„·öH�=+êèAýÿÿ¸HƒÄ[]A\A]A^A_ÃDǪõ·5/ìëÅDdžð·5ìë­DÇrð·5ÿëë•DÇnÍ·5çëézÿÿÿf.„ÇNÍ·5ÇëéZÿÿÿf.„Çð·5§ëé:ÿÿÿf.„H�5ŠèH�=¿çèýýÿÿ·5~ëéÿÿÿ�H�="çèdýÿÿ·5eëéøþÿÿ„H�=èèDýÿÿ·5EëéØþÿÿ„H�=žèè$ýÿÿ·5%ëé¸þÿÿ„H�=«èèýÿÿ·5ëé˜þÿÿ„H�=èèäüÿÿ·5åêéxþÿÿ„H�=)èèÄüÿÿ·5ÅêéXþÿÿ„H�=3èè¤üÿÿ·5¥êé8þÿÿ„H�=·æè„üÿÿ·5…êéþÿÿ„H�=#èèdüÿÿ·5eêéøýÿÿ„¾H�=èè/ûÿÿ·5@êéÓýÿÿH‹Ø¾:H‰ßèLgüÿH…À„lH�l$1ÒH�xA‰ÆH‰îA)ÞèjnüÿH�= çH‰ÆèÛúÿÿH‹T$¶<.„‰„À…_H‹¼×1ÒH‰îH‰ßè/nüÿH‹T$¶€ú:”Á„Ò”ÂÑt H=ÿÿ†L�-Å™L‹=~×McöE1äL‰íH�`æfDL‰òH‰ÞL‰ÿèdüÿ…Àu B€<3„‘HƒÅH‹]AƒÄH…ÛuÒ1ÿºH�5¬»èÇeüÿL‰þH‰Ç1Àè:&þÿéµüÿÿDÇ’í·5ééªüÿÿf.„Çví·5÷èéŠüÿÿf.„H‹=ÉÖ1öè„·5ÓèéfüÿÿfDÇ:í·5·èéJüÿÿf.„H‹=‰Öè4güÿ·5•èH‰nèé!üÿÿ�Çfè·5wèé üÿÿf.„ÇFè·5Wèéêûÿÿf.„ÇŽÓ·57èéÊûÿÿf.„H‹= Ö¾èOƒ·5èé£ûÿÿH‹=éÕè”füÿ·5õçH‰Þçé�ûÿÿ�H�5ÂäH�=)äèMúÿÿ·5Îçéaûÿÿ�Ç.ñ·5·çéJûÿÿf.„Çñ·5—çé*ûÿÿf.„Çâë·5wçé ûÿÿf.„H‹=IÕH�5ñEèküÿH‰–ðH…À…ÍúÿÿH‹&ÕºH�5B¹1ÿè³cüÿH‰ÇH‰Þ1Àè&$þÿ·5çéªúÿÿf.„·5çf�΀f‰5õæéˆúÿÿ„ÇbÈ·5׿éjúÿÿf.„ÇBÈ·5·æéJúÿÿf.„·5¡æf�Î f‰5•æé(úÿÿ„·5�æf�Îf‰5uæéúÿÿ„·5aæf�Îf‰5Uæéèùÿÿ„·5Aæf�Îf‰55æéÈùÿÿ„·5!æf�Îf‰5æé¨ùÿÿ„·5æ@€Î€f‰5öåé‰ùÿÿf„·5áåƒÎ@f‰5×åéjùÿÿf.„·5ÁåƒÎ f‰5·åéJùÿÿf.„Çêз5—åé*ùÿÿf.„ÇÊз5wåé ùÿÿf.„Ǧз5Wåéêøÿÿf.„džз57åéÊøÿÿf.„Ç~é·5åéªøÿÿf.„H‹=éÒ¾è/€·5ðäéƒøÿÿÇRî·5×äéjøÿÿMcäIÁäKct%‰5HÆH�=âèœõÿÿé7øÿÿH‰ßH�l$èZaüÿA‰ÆéÆúÿÿH�¿‚H‰tÒéþ÷ÿÿHcð‰Æë¼1ÿºH�5ž¶èñ`üÿH‰Ç1Àèg!þÿéúÿÿH�zH‰î1Òè´hüÿH�=sáH‰Æè%õÿÿH‹D$¶éMúÿÿ1ÀéÕ÷ÿÿ�AVAUATUSèƒäÿÿ¶Üì‹5ÖÆƒà…öu;<„?Hƒ=ׯu<…?‹ Ï㺅ɅAH‰‹ÆH‰ÔÆ<„ÑH‹õë1íH�\ÆH�xè*ýÿHƒ=KÆu9é”@ƒú„ƒú…fH‹L‰"…íuH‰}ãHƒÃ(ƒÅHƒ;t`L‹cL‰çè¤þýÿL‹kI‰Æ‹C$…Àu&1ÒL‰öL‰ïè©þÿH‰Çè�wýÿ‹Sƒúu™H‹fD‰"ë¨è‹ãÿÿƒø•À¶ÀIÅëÇDH‹D‰"ëˆè›)ýÿH‹dãH9eãw []A\A]A^Ãf�1ÿºH�5jµè]_üÿ[]H‰ÇA\1ÀA]A^éËþÿHÇmÅ1ÒéÛþÿÿHÇ[Å@º@éÆþÿÿH‹Ò³H�z¶…Òt]A¸1öA)ø@‰ÑÁáÊA� 8HƒÇHòH‰ÖHÁîH1Ö¶Wÿ…Òu܉ÊÁâÊHÖH‰òHÁêH1òHÁâ�âüH�Â0aéPþÿÿº0aéFþÿÿH�Q¶¾vH�=ÞèÐþÿ¶JH1Àƒá€ù…~AWAVAUATI‰ÔUH‰õSHƒìD‹-§áL‹zM‰îE…í„ H‹}èz^üÿL‰ÿI‰Æèo^üÿH‹=�áO�l5H‰Ã1ÀH…ÿtèT^üÿLëH�<H�Šè±hüÿH‹UH�5oß1íI‰ÅH‰Ç1Àè·füÿL‰ïè^üÿH�5EßM�t1ÀëF€H‹)áH…ÒtL‰÷1ÀL‰ùèfüÿL‰æL‰ïè´%þÿ…Àu7HƒÃH‹sðƒÅH…ö„¤‹Cø…Àu½L‰÷1ÀL‰úèHfüÿL‰æL‰ïè}%þÿ…ÀtÉHÁåH�N‰Hƒ<(toM‰l$HƒÄ¸[]A\A]A^A_ÃfDH�!‰¸ H�=•Þëè[]üÿL‹kL‰ïE‰õI9Ås ‰ZàA‰ÆA‰ÅHƒÃH…ÿu×é¯þÿÿf�ÀL‰ïè€güÿHƒÄ1À[]A\A]A^A_Ãf.„DH� hÞH�]|é]*þÿff.„f�SºH‰ûH�5¨á1ÿè™\üÿH‰ßH‰Æ1Àè\`üÿº1ÿH�5Öáèy\üÿH‰ßH‰Æ1Àè<`üÿº1ÿH�5âèY\üÿH‰ßH‰Æ1Àè`üÿº1ÿH�5&âè9\üÿH‰ßH‰Æ1Àèü_üÿº1ÿH�5Nâè\üÿ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�56ãèy[üÿH‰ßH‰Æ1Àè<_üÿº1ÿH�5^ãèY[üÿH‰ßH‰Æ1Àè_üÿº1ÿH�5–ãè9[üÿH‰ßH‰Æ1Àèü^üÿº1ÿH�5¶ãè[üÿH‰ßH‰Æ1ÀèÜ^üÿº1ÿH�5ÞãèùZüÿH‰ßH‰Æ1Àè¼^üÿº1ÿH�5äèÙZüÿH‰ßH‰Æ1Àèœ^üÿº1ÿH�5>äè¹ZüÿH‰ßH‰Æ1Àè|^üÿ1ÿºH�5³è™ZüÿH‰ßH‰Æ1Àè\^üÿº1ÿH�56³èyZüÿH‰ßH‰Æ1Àè<^üÿº1ÿH�5ŽäèYZüÿH‰ßH‰Æ1Àè^üÿº1ÿH�5¾äè9ZüÿH‰ßH‰Æ1Àèü]üÿº1ÿH�5îäèZüÿH‰ßH‰Æ1ÀèÜ]üÿº1ÿH�5åèùYüÿH‰ßH‰Æ1Àè¼]üÿº1ÿH�5FåèÙYüÿH‰ßH‰Æ1Àèœ]üÿº1ÿH�5våè¹YüÿH‰ßH‰Æ1Àè|]üÿ1ÿºH�5¦åè™YüÿH‰ßH‰Æ1Àè\]üÿº1ÿH�5ÖåèyYüÿH‰ßH‰Æ1Àè<]üÿº1ÿH�5æåèYYüÿH‰ßH‰Æ1Àè]üÿº1ÿH�5N²è9YüÿH‰ßH‰Æ1Àèü\üÿº1ÿH�5NæèYüÿH‰ßH‰Æ1ÀèÜ\üÿº1ÿH�5~æèùXüÿH‰ßH‰Æ1Àè¼\üÿº1ÿH�5¦æèÙXüÿH‰ßH‰Æ1Àèœ\üÿº1ÿH�5Öæè¹XüÿH‰ßH‰Æ1Àè|\üÿ1ÿºH�5²è™XüÿH‰ßH‰Æ1Àè\\üÿº1ÿH�5~²èyXüÿH‰ßH‰Æ1Àè<\üÿº1ÿH�5N³èYXüÿH‰ßH‰Æ1Àè\üÿº1ÿH�5èè9XüÿH‰ßH‰Æ1Àèü[üÿº1ÿH�5æèèXüÿH‰ßH‰Æ1ÀèÜ[üÿº1ÿH�5VéèùWüÿH‰ßH‰Æ1Àè¼[üÿº1ÿH�5³èÙWüÿH‰ßH‰Æ1Àèœ[üÿº1ÿH�5γè¹WüÿH‰ßH‰Æ1Àè|[üÿ1ÿºH�5>´è™WüÿH‰ßH‰Æ1Àè\[üÿº1ÿH�5¾´èyWüÿH‰ßH‰Æ1Àè<[üÿº1ÿH�5.µèYWüÿH‰ßH‰Æ1Àè[üÿº1ÿH�5æêè9WüÿH‰ßH‰Æ1ÀèüZüÿº1ÿH�5NëèWüÿH‰ßH‰Æ1ÀèÜZüÿº1ÿH�5NìèùVüÿH‰ßH‰Æ1Àè¼Züÿº1ÿH�5ÖìèÙVüÿH‰ßH‰Æ1ÀèœZüÿº1ÿH�5þìè¹VüÿH‰ßH‰Æ1Àè|Züÿ1ÿºH�56íè™VüÿH‰ßH‰Æ1Àè\ZüÿºH�5è´1ÿèyVüÿH‰ßH‰Æ1Àè¹H�5êÔó¦—À„ÀuÇÃff.„@€¸tÃ@AUATUH‰ýSH‰óHƒìL‹gH‰÷è´UüÿA€<$@Lcèt:L‰êH‰ÞL‰çèŒSüÿ‰Â¸…Òu C€<,@¸t5HƒÄ[]A\A]Ãf.„€;_uÁƒèH�sI�|$HcÐèGSüÿ…ÀtÂë§�H‰-‰Ú1ÀëÀDUH‰ÍSHcÚHƒÃÏèªPüÿ¸HƒÄÃAWAVI‰ÎAUI‰ÕATUH‰ýSH‰óHƒì(‹´ØH‹W…ÀuXL�d$H‹»ðH‰ÑH‰ÞA¸L‰âèÈOüÿ…Àt\H‹ƒðL‰çH‹@ÿP8M‰ðL‰éH‰ÞH‰ïH‰ÂèOâHƒÄ([]A\A]A^A_ÃH‹H‹OH�=¦ÎH‹H‹p1ÀèPüÿH‹Uë†fDH‹ML‹»ð1ÿºH�5‡çH‰L$è%OüÿH‹L$H‰ÚL‰þH‰Ç1Àè�þÿégÿÿÿff.„AWAVAUATUSH�ìˆL‹¿�L‹§øM…ÿ„mI‰ýDI‹ŸH…ÛuéG€H‹H…Û„4ƒ{uîI‹¬$°H9k uàH‹E8L‹µ°H‰D$M…ö„ÙI‹¼$¨è‚JþÿH‰ÇH‰ÅèYüÿI‹´$¨A‰èL‰ïH‰ÁH�OH‰$è6KþÿH‹ÏÚH‹SL‰ïH�t$@ÇD$PHÇD$@H‹€øHÇD$HHÇD$XL‹ ¸HÇD$`L)àIG(HÐH‰D$hI‹‡�H�DL‰òH‰D$pèìRüÿH‹s1ÒL‰ïI·�è7XüÿL‹$…ÀuH‹t$L‰êL‰÷L‰$èËQüÿH;D$L‹$tI1ÀH�Ĉ[]A\A]A^A_Ã@M‹M…ÿ…›þÿÿºH�5æ1ÿèXMüÿH‰Ç1ÀèÎ þÿ¸ë¹Hƒý¸L�t$HÇD$RSDSHGèfïÀI�VHÇD$0D$ƒýƒ•@öÅ…â…í…¶L‰×èƒWüÿH‹t$pL‰òL‰ïè£Rüÿ…À„KÿÿÿH‹dÙH‹�øH‹CIG(HÇ‚èL)àH‰‚à¸éÿÿÿH‹|$èüÿ…ÀtI‹G L‹0H‹C L‰öH‹8èÑ>üÿ…À…hþÿÿM‹0M…ÿu¨I‹D$ ¾.H‰ëH‹8è[@üÿH�5öÀH‰ÇA¿è–>üÿ…À…¯ýÿÿM‹L$ I‹‘�H…Ò„³E1ÀfDH‹2¹ H�= ¿ó¦—Á€Ù„ɹDÁD‚ˆH‹RH…ÒuϽa…À„ðI‹9èú>üÿH�xèaIüÿ‰éH�5ξI‰ÇI‹D$ L‰ÿH‹1ÀècGüÿI‹D$ I‹|$L‰8èÁ>üÿH�xè(IüÿI‹T$‰éH�5�¾I‰ÇH‰Ç1Àè-GüÿM‰|$A¿éÞüÿÿö—Ê`…™ùÿÿ¶‰Êƒà<„mH‹-‡·H…í„wùÿÿL�d$H�Bèÿÿë H‹m0H…턃H‹} L‰âH‰ÞÇD$èüÿH‹=(ÊH‹_(H…Ût%H�-¥½H‹sH‰ï1ÀèR>üÿH‹[ H…ÛuéH‹=úÉ1ÒH�5yíÿÿè„<üÿH‹ÊH…Û„ùH�-g½DH‹3H‰ï1Àè >üÿH‹›ðH…Ûuçé�÷ÿÿ‹ (Æ…É…ŠH‹�ÉH‹X(H…Û„¨øÿÿL�%qçÿÿë€H‹[ H…Û„‹øÿÿ€{uíH‹k€}@ts¾@H‰ïèŽ=üÿH…À…#H‹=FÉL‰æH‰êHÇ=ÂèèBüÿH‹51ÂH…öt¤H‰ßèDñÿÿëšè½òÿÿH�=޼H�5¯ìÿÿ…ÀH�}¼HEøè=Ãéú÷ÿÿH�}¾@è=üÿH‰ïI‰Åè>üÿH‰ÅÆ_M…ít¾@H‰ïè÷<üÿÆH‹=µÈ1É1ÒH‰îA¸è?üÿH…À„ÿÿÿ€x…ÿÿÿH‰ÆH‰ßè­ðÿÿéÿÿÿH‹|$èžFüÿºH�5š�1ÿèû;üÿH‰Ç1ÀèqüýÿHƒÄ([]A\A]A^A_Ã1íE…À@žÅƒÅbéÿüÿÿÇëé ÷ÿÿH‰ïèÊ=üÿH‰ÅéNÿÿÿH�=‹Oè&:üÿéeþÿÿºH�5 �éAùÿÿH‹ÈéÍöÿÿH‹] é§ùÿÿH‹=ÁH…ÿ…4ùÿÿé?ùÿÿ½céŠüÿÿff.„�USHƒì¶ƒÇ¨…£H�?“¨uP‹ÖÀ…ÀuF‹(¥ƒú„¯H�0oH�%»f„HƒÀ9tH‹XH…ÛuïH�°N„èëðÿÿ…Àt&H‰ßèÿ:üÿH�xèfEüÿH‰ÞÆ_H‰ÅH�xH‰ëè9üÿH‰ßèéPýÿHƒÄ[]éŽæýÿfDºH�5ÜL1ÿè…:üÿH‰Ç1Àèûúýÿ¶´Æé4ÿÿÿ€H��ºé|ÿÿÿff.„�HƒìèWðÿÿ¾H�= 5 èF þÿH�nº€ èÅ H‰ÙŽH¸ÿÿÿÿÇÕÇH‰îÆHƒÄÃ�AWAVAUI‰õATL�%¥UH‰ýSHƒìDèëïÿÿIƒ<$„¸L�5ù¤1Ûë&DL‰þH‰ïèU=üÿ…Àt…ÀtÔèŸïÿÿH‰ï…À”À¶ÀIÇL‰þè=üÿ…ÀuÄHcÛ¹H‰îHÁãH�=ý¸I�D‰h Ç@ó¦—À„ÀuèPïÿÿH�-~¹…ÀH�v¹HDèéGÿÿÿHƒÄ[]A\A]A^A_ÃH�IM¾ÅH�=‘è@êýÿSH‰û1ÒHƒìH‹=OªH�t$èÅ@üÿH‰ßH‰ÆèÚþÿÿH‹\$H;.ªtH‰%ªHƒÄ[ÀºH�5Ô�1ÿè¥8üÿH‰ÞH‰Ç1ÀèùýÿH‹\$H‰ì©HƒÄ[ÃfDUH‰õSHƒìèrÿÿÿH‹Ë©¶<,tD„ÀuHƒÄ[]Ãf„H�5¡�1ÿºè=8üÿHƒÄH‰ÞH‰Ç[1À]éªøýÿf.„HƒÃH‰ïH‰r©HƒÄ[]éÿÿÿ€�ï-ƒÿ8‡ AWH�ÈJAVAUATUSHƒìHcºHÐÿàH‹=Y½H…ÿtèOBüÿHÇD½H‹ ©H…À„U¹H�=ÈH‰Æó¦—€ڄÒtH‰Çè‘9üÿH‰ ½f.„·½·óH�=¤¸èZýÿÿHƒÄ¸[]A\A]A^A_ÃfDÇ"Ä·ǼëÄD·¹¼€Ï f‰¯¼ë¬D·¡¼€Ïf‰—¼ë”D·‰¼€Ïf‰¼éyÿÿÿf�·q¼€Ïf‰g¼éaÿÿÿf.„·Q¼€Ïf‰G¼éAÿÿÿf.„·1¼€Ë€f‰'¼é!ÿÿÿf.„H�5Ò¶H�=9¶èíýÿÿ·þ»éøþÿÿ�H‹=¹§¾è_¼·à»éÚþÿÿÇ¿·Ç»éÁþÿÿf.„Çþ·§»é¡þÿÿf.„Çâ·‡»é�þÿÿf.„ƒ%�»ß·j»édþÿÿDƒ i» ·R»éLþÿÿDǒ·7»é1þÿÿf.„·!»ƒË@f‰»éþÿÿf.„Çb¥·÷ºéñýÿÿf.„H�=¶èDüÿÿ·ÕºéÏýÿÿ„H�=#¶è$üÿÿ·µºé¯ýÿÿ„H�=§´èüÿÿ·•ºé�ýÿÿ„H�=¶èäûÿÿ·uºéoýÿÿ„¾H�=¶è¿úÿÿ·PºéJýÿÿH‹= ¦H�5±èÝ;üÿH‰VÁH…À…ýÿÿH‹æ¥ºH�5Š1ÿès4üÿH‰ÇH‰Þ1Àèæôýÿ·÷¹éñüÿÿf.„ÇJž·×¹éÑüÿÿf.„·Á¹f�Ë€f‰µ¹é¯üÿÿ„H�=¯´èûÿÿ·•¹é�üÿÿ„H�=δèäúÿÿ·u¹éoüÿÿ„H�=Û´èÄúÿÿ·U¹éOüÿÿ„H�=3´è¤úÿÿ·5¹é/üÿÿ„H�5ú³H�=/³èýúÿÿ·¹éüÿÿ�H�=’²èdúÿÿ·õ¸éïûÿÿ„H‹©¤¾:H‰ßèÜ3üÿH…À„ÏH�l$1ÒH�xA‰ÆH‰îA)Þèú:üÿH�=�³H‰Æè ùÿÿH‹T$¶<.„ë„À…ÁH‹L¤1ÒH‰îH‰ßè¿:üÿH‹T$¶€ú:”Á„Ò”ÂÑt H=ÿÿ†€L�-uoL‹=¤McöE1äL‰íH�ð²fDL‰òH‰ÞL‰ÿèª0üÿ…Àu B€<3„ñHƒÅH‹]AƒÄH…ÛuÒ1ÿºH�5<ˆèW2üÿL‰þH‰Ç1ÀèÊòýÿéÕúÿÿDÇ.¢·Ç·éÁúÿÿf.„Ç¢·§·é¡úÿÿf.„Çî¡·‡·é�úÿÿf.„H‹=9£¾èß··`·éZúÿÿǺ›·G·éAúÿÿf.„Çvº·'·é!úÿÿf.„Ç^¾··éúÿÿf.„ÇV¡·ç¶éáùÿÿf.„H‹=™¢èD3üÿ·ŶH‰ž¶é¸ùÿÿ�Ç–¶·§¶é¡ùÿÿf.„H‹=Y¢·жÇh¶H…ÿ„vùÿÿ€?„mùÿÿH�t$1Òèª8üÿH‰»šéUùÿÿfDÇ–¹·?¶é9ùÿÿf�Ç‚¹·'¶é!ùÿÿf.„Çvš·¶éùÿÿf.„ÇN¹·çµéáøÿÿf.„H‹=™¡1öèB¶·õé½øÿÿfDǹ·§µ顸ÿÿf.„H‹=Y¡è2üÿ·…µH‰nµéxøÿÿ�ÇƸ·gµéaøÿÿf.„Ǫ¸·GµéAøÿÿf.„Ç–™·'µé!øÿÿMcäIÁäC‹T%‰€™HcòH�=0°èiõÿÿéô÷ÿÿH‰ßH�l$è‡/üÿA‰ÆécüÿÿH�ìPH‰¡ é³÷ÿÿ‰Â‰<™ëº1ÿºH�5Ì„è/üÿH‰Ç1Àè•ïýÿéüÿÿH�zH‰î1Òèâ6üÿH�=¡¯H‰ÆèóôÿÿH‹D$¶éëûÿÿ1ÀÃAWAVAUATUSHƒìèÝäÿÿ¶»‹ø™ƒà…Òu9<„Y‹5÷™…öu<…V‹ ´º…É…W‰²™‰ì™<„ÝH‹!º1íH�ˆ™H�xè/øüÿHƒ=w™u5é ƒú„‡ƒú…H‹L‰2…íuH‰ͳHƒÃ ƒÅHƒ;tpLcs L‰÷M‰õèÑÌýÿL‹cI‰Ç‹C…Àu+1ÒL‰þL‰çèÖÏýÿH‰Çè®Eýÿ‹Sƒúu–H‹fD‰*ë¥Dèããÿÿ…À”À¶ÀIÄëÃfDH‹D‰*뀄è»÷üÿH‹¤³H9¥³wHƒÄ[]A\A]A^A_Ã@1ÿºH�5‚ƒèu-üÿHƒÄ[H‰Ç]1ÀA\A]A^A_éÝíýÿDÇz˜éÃþÿÿÇk˜@º@é¯þÿÿH‹æ�H�z¶…Òt`A¸1öA)ø„‰ÑÁáÊA� 8HƒÇHòH‰ÖHÁîH1Ö¶Wÿ…Òu܉ÊÁâÊHÖH‰òHÁêH1òHÁâ�âüÀ–é7þÿÿ1ÒëñH�Ø@¾�H�=­„èçÝýÿ€¶JH1Àƒá€ù…~AWAVAUATI‰ÔUH‰õSHƒìD‹-×±L‹zM‰îE…í„ H‹}èŠ,üÿL‰ÿI‰Æè,üÿH‹=À±O�l5H‰Ã1ÀH…ÿtèd,üÿLëH�<H�Ö`èÁ6üÿH‹UH�5­1íI‰ÅH‰Ç1ÀèÇ4üÿL‰ïè/,üÿH�5U­M�t1ÀëF€H‹Y±H…ÒtL‰÷1ÀL‰ùè�4üÿL‰æL‰ïèÄóýÿ…Àu7HƒÃH‹sðƒÅH…ö„¤‹Cø…Àu½L‰÷1ÀL‰úèX4üÿL‰æL‰ïè�óýÿ…ÀtÉHÁåH�`Hƒ<(toM‰l$HƒÄ¸[]A\A]A^A_ÃfDH�ñ_¸ H�=¥¬ëèk+üÿL‹kL‰ïE‰õI9Ås ‰аA‰ÆA‰ÅHƒÃH…ÿu×é¯þÿÿf�ÀL‰ïè�5üÿHƒÄ1À[]A\A]A^A_Ãf.„DH‰øH ðt(H…ÿtH…ötéi.üÿf„HƒÿÀƒÈÃfD1ÀÃff.„f�Hc²;²S‰ûH‹ ²t�Jˆ‰ ó±HcÉÆ[Ãf��J2ƒÂ3‰ à±HcòH…ÀtH‰ÇèT+üÿHcűH‰Ʊë½@H‰÷èØ4üÿHc©±H‰ª±ë¡„H…ÿtKUSH‰ûHƒìè=*üÿH�xH‰Åè¡4üÿH‹ʱH‰ÞH�HH‰¼±H‰H‰ÏH�Uè.üÿHƒÄ[]ÃfD1ÉH‰ÈÃf.„H‹y±H…Àt4H;e±s[H�P¾H‰]±ƒø tÀDZÃDHƒìH‹=%±èP+üÿƒø t HƒÄÃfDÇæ°ëé@¸ÿÿÿÿÃf.„AVAUATI‰ôU‰ÕS€?uH‹¿°L‰`‰h[]A\A]A^ÀH‰ûè,üÿI‰ÅH9Ãt2…íH�§I‰Ø‹ްH� G=H‹5ˆ°H�= >HDÈ1ÀèNéýÿH‹_°H‹;H…ÿtèJ3üÿ¾.L‰ïèM)üÿH…ÀtL‰ïè°*üÿH‰éjÿÿÿ„…íH� ǨL‰ïL�5/ªLDñè¤(üÿH�xè 3üÿL‰ñL‰êH�5ÏþH‰H‹ì¯H‹81Àè 1üÿéÿÿÿDATI‰üU‰õSH‹ȯHcC0H‹{8�Pƒâü9Ð|-ƒÀƒàüH˜H�4€HÁæH…ÿtyè)üÿH‰C8H‹‘¯H‹x8Hc@0H�@fïÀH�ÇL‰çHÇCèâ)üÿH‰@öÅtÆC@öÅtÆC@öÅtÆCƒåtÆCH‹9¯ƒ@0[]A\ÄH‰÷è(2üÿH‰C8H‹¯H‹x8Hc@0ë‚fïÀAVI‰ÖAUA‰ÍATM‰ÄUL‰ÍSH‰ûGHÇG H…öt H‰÷èI)üÿH‰CL‰sD‰k M…ät(L‰çè0)üÿH‰H…ít H‰ïè )üÿH‰ÅH‰k[]A\A]A^ÃH‹CH‰ëÚ€AUE‰ÅATI‰ÌUH‰ÕSH‰ûH‰÷HƒìH‹3èïûÿÿ…Àu&H‹sH‰ïèßûÿÿ…ÀuH‹sL‰çèÏûÿÿ…ÀuD‰è+CHƒÄ[]A\A]Ãf.„AUE‰ÅATI‰ÔUH‰õSH‰ûHƒìH‹wH‰ÏH…öH�FHEðèƒûÿÿ…Àu/H‹sH‰ïèsûÿÿ…ÀuH‹3L‰çèdûÿÿ…ÀuD;k t �À¶À�DÿHƒÄ[]A\A]ÃDAWA‰÷AVAUATUSHƒìH‹D$PÇ…ö„ßH‰ÓH‰ÍM‰ÄE‰ÈL‰áH‰êH‰ÞI‰þE‰ÍèLÿÿÿ…ÀޤAƒÿ„­IcÇE‰èL‰áH‰êH�€H‰ÞI�|ÆØèÿÿÿ…À�ˆ”ÁAƒÿ”ÂAƒïÑ…‡E…ÿŽÍE1Ûë�E�YE9ߎƒG� E‰èL‰áH‰êAÑùH‰ÞD‰\$ IcÁD‰L$H�€I�<Æè¶þÿÿD‹L$D‹\$ …Àt8y¶E�yÿë´A¿u H‹D$PÇHƒÄD‰ø[]A\A]A^A_Ã…ÀuçëÚf�H‹D$PE‰ÏÇëÓIcÃE‰èL‰áH‰êH�€H‰ÞD‰\$I�<Æè?þÿÿD‹\$…À~E�{ë£E‰ßužë‘A¿ë”�H‹5Y¬éD*üÿ@ATI‰üUH‰õSH‹H…Ûuë,@H‹H…Ût H�{H‰îè(üÿ…ÀuèH‰Ø[]A\ÄH‰ïèˆ$üÿH�xèï.üÿH‰îH‰ÃI‹$HÇCH�{I‰$H‰è}"üÿH‰Ø[]A\ÃDHƒì¿xè².üÿH�xH‰ÁH‰ÂHÇHƒçøHÇ@p1ÀH)ùƒÁxÁéóH«HÇÀÿÿÿÿÇBÿÿÿÿH‰BH‰B H‰B(H‰BhH‰ÐHƒÄÃ�H…ÿ„çATUSH‰ûH‹?H…ÿtè3.üÿH‹{H…ÿtè%.üÿH‹S8H…ÒtQ‹s0…ö~B1íL�dmIÁäJ�"H‹8H…ÿt èö-üÿH‹S8J�"H‹xH…ÿt èà-üÿH‹S8HƒÅ9k0ÃH‰×èË-üÿH‹SHH…Òtz‹K@…É~k1íë7€è«-üÿH‹SHJ�"H‹H…Éu9H‹xH…ÿt è�-üÿH‹SHHƒÅ9k@~0L�d­IÁäJ�"H‹xH‹H…ÿtÇH9Ïu²H‰ÏèZ-üÿH‹SHJ�"ëµH‰×èH-üÿH‹S`H…Òt‹CX…À~p1íë5@è+-üÿH‹S`J�"H‹HH…Éu9H‹xH…ÿt è -üÿH‹S`HƒÅ9kX~7L�d­IÁäJ�"H‹8H‹HH…ÿtÇH9Ïu±H‰ÏèÙ,üÿH‹S`J�"ëµ€H‰×èÀ,üÿH‹{PH…ÿt@€H‹H‰CPè¤,üÿH‹{PH…ÿuëH‹kpH…ít$f�H‹EH‹}H‰Cpè,üÿH‰ïèw,üÿH‹kpH…íuÞH‰ß[]A\éb,üÿf�Ãff.„@AWAVM‰ÆAUI‰ýATI‰ôUH‰ÕSHƒì8‹G@‰L$L‰L$‰D$ H…Ò„-H…ö…$I‰ÔH‹D$I‹]HÇE‹M@E…É„D‹D$L‰ñH‰êL‰æH‰ßD‰L$èZúÿÿD‹L$…ÀŽÅAƒù„IcÁD‹D$L‰ñH‰êL�<€L‰æD‰L$IÁçM�WØJ�<L‰T$èúÿÿD‹L$…À�¶E�YÿL‹T$„‡Aƒù„}E…ÛŽ–1ÀL‰l$(H‰l$A‰ÅD‰ÝD‰L$$L‰d$ëfDE�l$A9í�ÒE�L-D‹D$H‹T$L‰ñAÑùH‹t$IcÁI‰ÄH�€L�<ÃL‰ÿè‚ùÿÿ…À„‚y¸A�l$ÿë¶�M…ä„ÖþÿÿH…íIDìéÊþÿÿE1ÛE1ÿ‹D$ ƒÀƒààA9Á|9AƒÁ D‰\$AƒáàMcÉK�4‰HÁæH…Û„úH‰ßè !üÿE‹M@D‹\$I‰EHH‰ÃLûE9ËtE)ÙH�{(H‰ÞMcÉK�‰HÁâè¸&üÿHÇC fïÀL‰çCèÍ!üÿH‰ïH‰èÂ!üÿH‰CM…öt L‰÷è±!üÿI‰Æ‹D$L‰s‰CAƒE@HƒÄ8H‰Ø[]A\A]A^A_Ã@u~H‹D$ÇëÛf„…À…èH‹D$LÓÇ뺄E‰Ëéöþÿÿ„A»A¿(éÝþÿÿ€H‰÷è°)üÿE‹M@D‹\$H‰ÃI‰EHéÿÿÿE1ÿE1Ûé«þÿÿDH‹D$L‰ûÇéGÿÿÿDIcÅL‹d$H‹l$L‰ñL�<€D‹D$‰D$IÁçH‰êL‰æL‹l$(N�;L‰×L‰T$è£÷ÿÿL‹T$D‹L$$…À~%‹D$IƒÇ(ƒÀA‰Ãé0þÿÿf�M‰×é&þÿÿ„uH‹D$L‰ÓÇé½þÿÿD‹\$éüýÿÿA¿(A»éëýÿÿff.„f�USHƒìH‹_PH…Ût!H‰õë @H‹H…ÛtH�{H‰îè”!üÿ…ÀuèHƒÄH‰Ø[]ÃfDAWI‰ÿAVI‰ÖAUA‰ÍL‰ÁATM‰ÄUH‰õSHƒì ‹GXM…ÀI‰ÐH‹\$XL‰L$HDÎH‰ê‰D$ E‰éÇ‹wXH‹`Sèl÷ÿÿ‹3HcÈXZ…ö…½‹\$A‹WXI‹G`ƒÃƒãð9Ú|2ƒÂ‰L$ƒâðHcÒH�4’HÁæH…À„™H‰ÇèAüÿA‹WX‹L$I‰G`HcñH�4¶H�ð9ÑuFI�PL‰öèzøÿÿL‹L$M‰àD‰éH‰ÂH‰îH‰ßè‘õÿÿAƒGXHƒÄH‰Ø[]A\A]A^A_Ãf.„)ÊH�{(H‰ÞHcÒH�’HÁâè§#üÿëŸDI‹G`H�‰H�Ðë¶f�H‰÷èH'üÿA‹WX‹L$I‰G`ébÿÿÿ€AWH�:žI‰ÿH‰÷AVE‰ÆAUI‰ÍATI‰ôUSH‰ÓHƒì(H…ÒHDØL‰L$ÇD$è€üÿH‰ßH‰ÅèuüÿH�|èÛ&üÿH‰ÙL‰âH�5–0H‰ÅH‰Ç1Àèá$üÿHƒìM‰øD‰ñH�D$$H‹=££H‰êL‰îPL‹L$èþÿÿHƒÄ8H‰ï[]A\A]A^A_ét&üÿ@AW1öAVAUATUS1ÛH�ì8Ç!«H�D$`L�¤$ðÇúªþÿÿÿf‰t$`I‰ÆI‰ÅÇD$HÇ$ÈL‰d$H‰D$H�þ7¾,ƒý®„‘Hcºªƒúþ„q…ÒŽè�úŽ-ƒÅ¸�ý•w]HcíH�4¿j9ÂuKH�D5·hH¿Ø…ÛŽì‹t$H‹aªL‰éÇLªþÿÿÿƒþI‰T$ƒÖÿIƒÄ‰t$éâ@H�¹6¶…À…©‹L$…É„¹ƒ|$u‹ª…À�ä„ÛH�3H� ¸4ëfDM9õ„gIƒíI¿]IƒìH�ó6¾ƒø®tÚƒÀ=•wÐH˜fƒ)ÊH‰ÍHcÒM‹Ôƒû_‡ˆH�±/HcšHÐÿàI‹T$ØM‹$ÇD$\A‹\$ðA‹L$àI‹t$ÐH…ÒuH…öHEÖH‹=M¡L�L$\L‰T$ èæ÷ÿÿ‹T$\L‹T$ …Òu)öÃtÆ@"öÃtÆ@!öÃtÆ@#ƒãt Æ@ DH�íL‰éHíI)ÄH)éH�õ4L‰à¿9M�d$L‰PH�Ÿ1B¶8‰þƒè#H˜¿Bú�ú•wHcÒH�=û1f;4W„aH�j4·BH¿Øf‰AL�iH‹ $H� I�TþI9Õ‚²M‰ìM)ôIÑüIƒÄH�ù'‡BH='º'HFÐH�’H‰ÕH‰$H�|èÖüÿI‰ÇH…À„O�,$L‰öH‰ÇIÁäL‰êèÄüÿH�D-H‹t$L‰âI�,oH‰D$ H‰ïè¦üÿL;t$tL‰÷èç"üÿH‹D$ O�l/þN�d%øI�DþI9Ńb H‰l$M‰þƒûE…¤üÿÿM‰õ1Ûëf�»L;l$tL‰ïèœ"üÿH�Ä8‰Ø[]A\A]A^A_ĉl$ H‰\$(€‹-¢Ÿ…í…"è îÿÿ‰ÃƒøÿtL‹PŸƒû t ƒû …¶…Àu*éf„‹*Ÿƒø t ƒø …Œ…Ò„ìè¿íÿÿƒøÿuÚ‹l$ H‹\$(Ç·¦1Àéüÿÿ¶ÀH�5Ö^·F¨u#¨„ÎH‹ÿžH…À„v HƒèH‰ëžÇq¦@�H�94¶ÅéÉûÿÿfDH‹5©žH�h+ƒS¦H� +‹†žH�=Ó+H…öHDð1ÀèQ×ýÿé&üÿÿ@Ǧþÿÿÿéüÿÿf„H�É0·PH¿Øéšýÿÿ@‰Ã¶ÃH�5 ^ÇžD·þÿÿƒ·�Ç��é(þÿÿ„‰Ã‰Ðƒû;…]ÿÿÿ…À„Uÿÿÿëf„ƒø t èìÿÿƒøÿuñƒø „èýÿÿéIþÿÿM‹$éGüÿÿ‰ÚfD‰|$0H‹\$(A‰ï¾ú‹l$ ‰T$ Ç �èíêÿÿèÈëÿÿHcT$ ‰Áƒú@„þÿÿƒùÿtKH‰\$ ‰Ë@¶ÃH�5Þ\öFŒu‰ÞH�=Ó)èêüÿH…À„F ¾ûè™êÿÿètëÿÿ‰ÃƒøÿuÅH‹\$ H‹¡œfƒ|$0H‰D$ „GH�YRL‰l$(H�=ˆI‰ÅH‰\$0H‰ÓëHƒÃH‹{ðAƒÇH…ÿ„L‰îèsüÿ…ÀußMcÿL‹l$(H‹\$0H�ûQIÁçJcT8ëÇnœA‰ïH‹\$(‹l$ Ic׉á£é+ùÿÿ@H‹5)œ‹œH�â(H� ÚH�=Z)M‰õ»H…öHDð1ÀèÐÔýÿé0üÿÿǹ›‰Ú‹l$ ‰ÐH‹\$(D‰ú뀶ÐH�=ž[·W€æu ƒøx…A ¾øèdéÿÿè?êÿÿƒøÿuÒH‹=s›èÎéÿÿºÇ/£H‰0£é³üÿÿL‹l$(H‹\$0H‹|$ èŸéÿÿºÇ£H‰£é„üÿÿH¸ÿÿÿÿL!ÐHƒÈI‰ÂéúÿÿH¸ÿÿÿÿA‹$L!ÐH ÐI‰ÂéÿùÿÿH¸ÿÿÿÿL!ÐHƒÈI‰ÂéæùÿÿL�ê2éÚùÿÿH¸ÿÿÿÿL!ÐHƒÈI‰ÂéÁùÿÿH¸ÿÿÿÿL!ÐHƒÈI‰Âé¨ùÿÿHºÿÿÿÿA‹D$ðA $L!ÒH ÂI‰Òé‡ùÿÿI‹\$ðH‰ßèüÿI‹ $H‰D$(H‰ÏH‰L$ èüÿH‹T$(H�|èeüÿH‹ŽšH‹L$ H�5'L�@H‰L‰ÇH‰ÚH‰nš1ÀL‰D$ èRüÿL‹D$ M‰ÂéùÿÿE1Òé ùÿÿI‹$H‰ßè¡üÿH�xèüÿH‹1šH�HH‰H‰#šH‰ÏH‰ÚH�5œ1ÀH‰L$ èúüÿH‹L$ I‰Êé½øÿÿ¸ÿÿÿÿI Âé°øÿÿH‹±™A‹4$I‹|$ðH‹Xp‰t$ H‰|$(H…Û„Y1ÀL‰l$8H‰ýI‰ÝL‰d$@H‰ÃA‰ôˆL$0L‰T$Hë€I‹EL‰ëH…À„7I‰ÅI‹}H‰îèQüÿ…Àu A‹ED)à„Ç…À~ÌL‹T$H¿L‹l$8¶l$0L‹d$@L‰T$8èüÿH‹|$(H‰D$0èzüÿH‹T$0H…ÛL‹T$8H‰B‹D$ ‰B… H‹ݘH‹HpH‰ H‰PpéÅ÷ÿÿI‹$¿L‰T$(H‰D$ è½üÿH‹|$ H‰ÃH‹–˜H‰�˜H‰èüÿH‹|$ H‰Cè!üÿL‹T$(‰Cét÷ÿÿI‹\$èH‰ßèüÿI‹L$øH‰D$8H‰ÏH‰L$0èðüÿM‹$H‰D$(L‰ÇL‰D$ èÚüÿH‹t$(H‹T$8H�T2H�<è2üÿL‹D$ H‹V˜H�5k%L�HH‹L$0H‰?˜H‰L‰ÏH‰Ú1ÀL‰L$ èüÿL‹L$ M‰ÊéÝöÿÿI‹<$1Ò1öè�üÿI‰ÂéÈöÿÿH¸ÿÿÿÿI!Âé¶öÿÿIÇÂÿÿÿÿéªöÿÿI‹$H‰ßè>üÿH�xè¥üÿH‰ÁéªýÿÿI‹$I‹|$ø1ö¶„Àt(ƒèR<&wH� '¶ÀHc�HÈÿàƒÎHƒÂ¶„ÀuØL‰T$ èyçÿÿL‹T$ é?öÿÿƒÎë܃Îë׃ÎëÒI‹|$øA‹4$L‰T$ èMçÿÿL‹T$ éöÿÿI‹L$øI‹t$è1Ò1ÿM‹ $A¸ÿÿÿÿL‰T$ èÑòÿÿL‹T$ éçõÿÿI‹L$øM‹ $1ÿL‰T$ I‹T$èI‹t$ØA¸ÿÿÿÿè¢òÿÿL‹T$ é¸õÿÿI‹t$èI‹|$Ø1É1ÒM‹ $E‹D$øL‰T$ èwòÿÿL‹T$ é�õÿÿI‹L$øM‹ $1ÒL‰T$ I‹t$èI‹|$ØA¸ÿÿÿÿèHòÿÿL‹T$ é^õÿÿI‹T$èM‹ $1ÉL‰T$ I‹t$ØI‹|$ÈE‹D$øèòÿÿL‹T$ é0õÿÿI‹L$øI‹T$èA¸ÿÿÿÿL‰T$ I‹t$ØI‹|$ÈM‹ $èèñÿÿL‹T$ éþôÿÿH‹ÿ•A‹$A‹L$ð‰Pl‰HhéãôÿÿH‹ä•A‹$Ç@l‰PhéÉôÿÿA‹4$H�=.L‰T$ èäåÿÿL‹T$ éªôÿÿL�»"éžôÿÿL�£"é’ôÿÿL� æé†ôÿÿL�Û-ézôÿÿL�v"énôÿÿL�±-ébôÿÿL�Y"éVôÿÿL�JéJôÿÿI‹|$øI‹4$ºL‰T$ èbäÿÿL‹T$ é(ôÿÿI‹|$øI‹4$1ÒL‰T$ èCäÿÿL‹T$ é ôÿÿL�-éýóÿÿL�J"éñóÿÿL�4"éåóÿÿL� -éÙóÿÿL�ç,éÍóÿÿL�"éÁóÿÿL�û,éµóÿÿL�é!é©óÿÿL�ö,é�óÿÿL�¶äé‘óÿÿL�½!é…óÿÿL�¨!éyóÿÿL�”!émóÿÿL�ˆ,éaóÿÿA‹4$H�=T!L‰T$ è|äÿÿL‹T$ éBóÿÿH‹C”A‹$A‹L$ø‰P,‰H(é'óÿÿH‹(”A‹$A‹L$ø‰P$‰H é óÿÿH‹ ”I‹$L‰T$0H‹{H‰D$(H‰|$ H‰Çè† üÿH‹|$ L‹T$0�PH…ÿ„7L‰T$8‰T$0èb üÿ‹T$0H‹|$ ÂHcòè üÿH‹t$(H‰CH‹§“H‹xèVüÿL‹T$8éŒòÿÿI‹<$1Ò1öL‰T$ èÊüÿL‹T$ Hºÿÿÿÿ‰ÀL!ÒH ÂI‰Òé[òÿÿM‰õ»é£óÿÿ‹l$ ‰\$ H‹\$(èìáÿÿÇ“ƒøÿt$‹T$ A‰×9ÐuëD9øt¾øèãàÿÿè¾áÿÿƒøÿuéH‹=ò’èMáÿÿºÇ®šH‰¯šé2ôÿÿHcÓ‹l$ H‹\$(éªöÿÿ‹l$ ‰\$ H‹\$(èoáÿÿHcT$ ƒø=t|H‹ Þ’H…É„áÇ[š=HƒéH‰ À’éÛóÿÿH‹´’‰ÙH‹\$ H…ÀtSHƒèH‰�’é°õÿÿM‰ý»é·òÿÿ‰ÂH‹‚’H…À„¤HƒèH‰n’é¯öÿÿÇéuóÿÿ‰ÏèÞåÿÿéaõÿÿL‹T$H¿L‹l$8¶l$0L‹d$@L‰T$8èüÿH‹|$(H‰D$0èg üÿH‹T$0L‹T$8H‰B‹D$ ‰BH‹H‰H‰éÄðÿÿ‰Ç‰T$ èyåÿÿHcT$ Çj™=éõòÿÿ‰×è^åÿÿéöÿÿHcúL‰T$ èœüÿH‹t$(H‰CH‹„‘H‹xè3üÿL‹T$ éiðÿÿ¶l$0L‹l$8L‹d$@L‹T$HéPðÿÿ‰Ï‰T$ èåÿÿHcT$ Çö˜@é�òÿÿ¿L‰T$8è2üÿH‹|$(H‰D$0è“ üÿH‹T$0L‹T$8H‰B‹D$ ‰Béøÿÿf„AWI‰ÊL‰ÉAVLcöAUATUH‰ýSHƒì@‹wXH‹`H�D$4ÇD$4D�nPAƒåðM…ÉE‰ÁM‰ÐHDÊL‰T$èòâÿÿZY‹t$,…ö…4H‹U`A‰Ä‹]XH…Ò„á9Ø„‰H˜L�<€IÁçJ� :H‹yH…ÿt-L‹T$HƒÇH‰L$H‰T$L‰ÖèW üÿH‹T$H‹L$…À„ÕA�A9Å}`ƒÀH‰×ƒàðH˜H�4€HÁæè„ üÿ‹]XH‰E`H‰ÂA9Üu5HƒÄ8‰Ø[]A\A]A^A_Ã@A�A9Å}âIcÌL�<‰IÁçë®f.„J� :D)ãK�¶H‰ÎHcÛH�<ÁH�›D‰ãHÁâèûüÿë¤f„IcÌA�L�<‰IÁçA9Å�~ÿÿÿƒÀƒàðH˜H�<€HÁçèƒüÿ‹]XH‰ÂH‰E`éZÿÿÿ@»ÿÿÿÿéQÿÿÿfDAVHcÆH‰ÎM‰ÎAUE‰ÅATI‰ÔH�€USH‹G`H‰ûH�PH�,ÐèñâÿÿL‹L$0M‰ðD‰éH‰ÂL‰æH‰ïèàÿÿH‰èƒCX[]A\A]A^ÄAWI‰÷AVAUATL�%ÎNUSHcÚHóHƒì(H‹ÓŽH‰=ÌŽH‰D$H9ÞƒÞfDA¶H‰ÐAöT@u„Ò”Â< ”ÀÂt IƒÇL9ûwÛI9ß„ªM�wL9óv0A¶ë„Àt#IƒÆL9ó„O¶ÐA¶AöT@t<-t< uÙH�uH�- uE1íH‹0L‰ðL)øH‰D$H…öt^DH‰÷H‰t$è³üÿH‹t$LcÈL;L$,L‰ÊL‰ÿL‰L$è„üÿ…ÀuL‹L$C¶<:tr< tnfDHƒÅH‹uAƒÅH…öu§L9ó†¾A¶.Aƺ1ÿH�5€èüÿL‰þH‰Ç1Àè†ÆýÿAˆ.HǸ�„M‰÷éÈþÿÿ„K�DL‰5Œ�H‰��‹EÇP�‰‚�èÕéÿÿ…À…eÿÿÿMcíH�tIÁåJƒ<(„]ÿÿÿHÇI�L9ów”ë:f�I‰Þé¿þÿÿ„ºH�5ô1ÿè]üÿH‰Ç1ÀèÓÅýÿHÇ�H‹D$H‹= �H‰ÍŒH…ÿtH‹H‰öŒè±üÿH‰ßH…ÛuéHƒÄ([]A\A]A^A_Ãf.„UH‰õH�5ÌÞSH‰ûHƒìè( üÿH‰‰ŒH‰ŠŒÇpŒH…À„H…í„®H‰-OŒÇ=ŒèÈèÿÿ…À…¨H‹=IŒèdüÿH‹ŒH…Ût>„‹SH‹sH‹= Œè ýÿÿH‹+H‹{H‰-ç‹èêüÿH‰ßH‰ëèßüÿH…íuÊH‹=ŒH…ÿtfDH‹H‰þ‹è¹üÿH‰ßH…ÛuéH‹²‹HƒÄ[]ÃèëßÿÿH‰œ‹éHÿÿÿ€H‹=‰‹è,àÿÿH‹=•‹è°üÿH‹=©‹H…ÿt@H‹H‰–‹èQüÿH‰ßH…ÛuéHƒÄ1À[]ÃH‰ßH‰D$è3 üÿH‹D$ë‚f.„f�¸H‹H9wÀÃH‹6H‹?éüÿDH‹GH‹VH…ÀHDH…ÒHDH‰ÇH‰Öéïüÿff.„@H‹Y‹SH‰ûH‰Gx‹C‹‰‡ˆ�xHcÿHÁçè¶ üÿLc'‹H‰ƒ€E…À~.H‹SxA�xÿH‰ÁHÁçH×ë €H‰òH‰H�r HƒÁH9úuíJÇÀƒK [HÇÝŠÇÇŠÇÁŠÃ„AVA‰ÖH‹´ŠAUI‰õATI‰ü‹=˜ŠUHcéSHc�Š�Wÿ9Ú+ƒÇ Hc÷‰=yŠHÁæH…ÀttH‰ÇèTüÿHceŠH‰fŠHÁãD‰öL‰çHÃL‰kHÇCè¨üÿH‹ aŠH‰CHc.ŠH� éH‰ÂHÁàH$ŠƒÂH‰[‰Š]A\A]A^ÀH‰÷è€ üÿHcñ‰H‰ò‰ëŠSHcöH‰û1ÒHƒìè> üÿH‰ÚH�|$¾è üÿ¶D$¶T$HƒÄ[ÁàÐÀSHcöH‰û1ÒHƒìèþ üÿH‰ÚH�|$ ¾èÜ üÿ¶T$ ¶L$ ¶D$ÁâÁàÑ�¶D$HƒÄ[ÁàÐÃf�AU1Ò¾ATA‰üH�=iUSHƒìè`ËüÿH‹5©�H�=PH‰ÃèºüÿH‰Ó‰H‰C H…À„H‹@H‹={�H‹¨�èßüÿH‹=h�I‰Åè üÿL‰êH‹=–‰‰ÆÿÕ…À„ÊH‹=ƒ‰E…ät_H�5 èâþûÿH‰c‰H…ÀtH‹=_‰ºA H‰ÆèB üÿ…ÀuºH�5ò#ë]H‹=9‰H‹ ‰H‹5#‰è¦üÿH‹=‰H�5µèƒþûÿH‰üˆH…ÀtH‹=‰ºA H‰Æèã üÿ…Àu?ºH�5Ã#1ÿè üÿHƒÄ[H‰Ç]1ÀA\A]éxÀýÿ„ºH�5,ëÏf�H‹=©ˆH‹5’ˆ1ÒèüÿHƒÄH‰ß[]A\A]é™úüÿf„AWAVAUATUSHƒìHH‹N`H‰|$8H‰t$0H…É„h1Òf„H‹��H…Àt@�ˆH‹@H…ÀuñH‹‰ðH…ÉuÕHcúHÁçèé üÿH‰D$H‹D$0L‹p`M…ö„ÇD$$L�%ÓrM‹¾�M…ÿ„&M‰ýL‰t$ëAf„‹h H‹º1ÿH�5Ì"èçþûÿD‰ù‰êH‰ÞH‰Ç1ÀèU¿ýÿM‹mM…í„ÖI‹EhD‹x AöÇtåL9àtàH‹h(H…ít¬I‹E`H‹|$H‰D$èIýûÿL‹t$…À„§L‰îL‰÷I‹ž°èªüÿHcøè üÿH‰ÙL‰îL‰÷H‰ÂI‰Çèžüÿ…ÀŽOƒèL‰|$(‹\$$M�tÇéÑH‹P‹J…É…¹H‹ º†‹y9:„§H‹H‹ �y€„<H‹I L9ah„H‹|$HcóHÁæHt$H�L=HHH‰‹J iÁè B=Â]„B†Œ=}„Y=ú„>=’e„SH�5´!1ÿº‰L$$èŒýûÿ‹L$$H‰Ç1À‰Îèü½ýÿ@IƒÇM9þt_‹5E…I‹…ö„ÿÿÿH‹H�=ÈH‹H‹p1ÀèöýûÿI‹éþþÿÿfD=€>„í=�>uƒ1ÀIƒÇÆFƒÃf‰F M9þu¡‰\$$L‹|$(L‰ÿè�üÿM‹mM…í…*þÿÿL‹t$M‹¶ðM…ö…ºýÿÿHct$$L‹l$ºH� 7ùÿÿH‰óL‰ïèœûûÿ…Û„°�SÿH‹J…HÇÆÿÿÿÿHÁâI�lL‰êëDHƒÂHƒÀH‰ÎH9Õt.H‹ HÁé H9ñt HƒÀHƒàüHƒÀ€zuÒHƒÂHƒÀH‰ÎH9ÕuÒHƒÀIÇÄÿÿÿÿHƒàüH‰ÇH‰Ù„èÔüÿ1ÿL‰âL‹t$8H‰ÆH‰ЄHǵ„ëzHþA¾}I‹FA�çÿÁç HcÿLÿÿP`H‹Š„A€}H�xH‰=z„u(H‹5�„I‹FHþI¿} ÿP`H‹[„H�xH‰=P„IƒÅL9í„ìH‹5L„H‰ÚM‹}L+=f„L‰ûH�ãðÿÿH9Ó„kÿÿÿ@öÇt&HƒÇë €H‰ÇÆD>ÿH�G@öÇuîH‰=ïƒI‹FH‹@HIƒüÿtJ�t&L)çÿÐI‹FH‹5܃H‹@HH5ÁƒH‰ßÿÐL‹%µƒH‹5¾ƒI�|$H‰=¢ƒéíþÿÿDI‹u¹ H�=w!ó¦—Á€Ù„É…Úüÿÿé[ýÿÿH‹QH‹t$0E1ÉE1ÀH‹|$81ÉèUùûÿH…À„4ýÿÿ¶P€úts€ú…"ýÿÿI‹H‹Pé�üÿÿfD‹…À„ýÿÿƒø…ÒüÿÿéøüÿÿÆF ƒÃéìüÿÿ@ÆFƒÃéÜüÿÿ@ÆFƒÃéÌüÿÿ@ÆFƒÃé¼üÿÿ@f�xBi…¬üÿÿH‹PHH‹@PH‹ŠøH‹H‹�ˆH‹ÐH…À„†üÿÿ€x„|üÿÿL9`(…PÿÿÿémüÿÿH�56ü1ÿºèÒùûÿHƒÄHL‰ö[H‰Ç]1ÀA\A]A^A_é7ºýÿ@öÇt*H‹Z‚HƒÇë@H‰ÇÆD:ÿH�G@öÇuîH‰='‚IƒüÿtH‹*‚L)çJ�t H‹D$8H‹@ÿPHH‹ÿ�H‹‚H9B8v H‹ û�HƒÀÆDÿH;B8rñH‰Ò�HƒÄH[]A\A]A^A_Ã1ÿéÎùÿÿH‹|$H� €õÿÿº1öèä÷ûÿH‹��H�xHƒçüH‰=Ž�è‰üÿHÇ~�H‰‡�1Àéqÿÿÿ€uƒÓ€¸Ãff.„f�AWAVAUATUSHƒì8H‰|$ H‰T$L‰D$H…ÿ„hI‰ôH‰Í@H‹|$ è&÷ûÿ…À„[H‹D$ H‹�°H‹˜�H‰T$(H…Û„DöC"tH�ëkH9Ch„èL‹|$ H‰ÞH‰j€L‰ÿèJüÿHcøè²üÿH‹L$(H‰ÞL‰ÿH‰ÂH‰D$è:üÿ…ÀŽŸH‹L$ƒèH‰$H�DÁI‰ÎI‰ÅëEf„1É1ÒH‰ïèüûÿH…Àt"H‹sL‰çèöûÿH‹L$L‰âI‹>H‹4$H‹D$ÿÐIƒÆM9õt=M‹>I‹H‹H‹sH…íu²L‰çèûûÿ…ÀuÙIƒÆH‹L$L‰âH‹4$L‰ÿH‹D$ÿÐM9õuÃH‹$H‹|$èÙüÿH‹[H…Û…ôþÿÿH‹D$ H‹€ðH‰D$ H…À…¢þÿÿHƒÄ8[]A\A]A^A_ÃH�5dù1ÿºè÷ûÿH‹t$ HƒÄ8[H‰Ç]1ÀA\A]A^A_éc·ýÿUH‰õSH‰ûHƒì¶„ÀteH‰ùL�C>H¿!ë7€¶ðAöp@u<;@”Æ<,”À@Æt fDºHƒÁ¶„Àt�pÞ@€þ:wÇH£÷ráë¿€H‰î…ÒtY¿"èúûÿ¶„Àu2HƒÄH‰î¿"[]éíùûÿD<\t¾;H‰îHƒÃèÕùûÿ¶„ÀtÎ<"uâH‰î¿\è½ùûÿë×HƒÄH‰ß[]é:÷ûÿf.„ATI‰Ô1ÒUH‰õ¾SH‰ûH‰ïèÀüÿH‰X H‰Çè¨ðüÿH‹CL‰æH‰ßÿ�À…Àt []A\ÀH�51ÿºè•õûÿ[H‰î]H‰ÇA\1Àé¶ýÿ@€t ¸Ã@ATUHc-v}SH‰ûH‹HÁåH-[}è^÷ûÿ¾@H‰EHc-N}1ÀI‰ìHÁåH-6}H‹}€?@”ÀHÇè¼õûÿH…ÀtÆ@H‹CAƒÄD‰%}H‰E¸[]A\ÃfDAWAVAUE1íATI‰ôUH‰ÍSH‰ÓHƒìH‰|$H…ÿtL‹¯ÐM…ít I‹}èÇ÷ûÿI‰ÅMc4$E1ÿL‹#ë„„¥L�{M9÷s.K�7H‰ïHÑëH�›I�ÄH‹pH…öHD0èøûÿ…ÀyËI‰ÞL9ûwÒ‹%c…À„Å‹+|…Ò…]M…턺H�5ÉL�%‹4H�¤;@L‰ïèxõûÿ…À…�IcT$Lê¶<-„�<.…uHƒÄ1À[]A\A]A^A_ÃH‰ïL�=º2èôûÿ¹H�5qLcàL‰ãë�IcO9Ë|L‰ç�QH)ÏHcÒHïèÄñûÿ…Àt«IƒÇI‹7H…öuÔ@H‹Ù{L�%:ãH…Ûu&ë`H‹3ƒøtpH‰ïè÷ûÿ…À„kÿÿÿH‹[H…Ût<‹Cƒøu×M…ítêH‹3L‰ïèŸòûÿ…À„BÿÿÿH‹3L‰çèüðûÿ…À„/ÿÿÿH‹[H…ÛuÄHƒÄ¸[]A\A]A^A_ÀH‹D$H‹8èSòûÿ…Àu�éõþÿÿH‹T$1ÀH‰îH�=H‹ŠÐè}óûÿM…í…†þÿÿH‹D$H�X2H‹8èÀõûÿH�5üI‰Äë@HƒÃH‹3H…öthL‰çè,öûÿ…ÀuèéŽþÿÿIƒÄI‹4$H…öt;IcT$éIþÿÿf„H�B¶RöSuëЄÒtÌHƒÀ¶€ú.uðéFþÿÿHƒ|$…hÿÿÿH‹µzH‹X H‹3H…öuë$€HƒÃH‹3H…ötH‰ïèœõûÿ…ÀuèéþýÿÿºH�5‡H�1ëfDHƒÃH‹3H…ö„äýÿÿHcSH‰ïèÜïûÿ…Àuàé¾ýÿÿAWE‰ÏAVI‰öAUI‰ÕATI‰ÌUH‰ýH‰÷SHƒìL‰D$è¶ñûÿL‰ïH‰$èªñûÿL‰çH‰ÃèŸñûÿH‹$H�|HÇèþûûÿL‰öH‰ÇH‰Ãè@ñûÿL‰îH‰Çè5ñûÿL‰æH‰ÇèŠïûÿH‹EH‰ïÿ�HcbyL‹D$H‰X�JL‰@ ‰ LyH‹ IyD‰xHÇ@H‰ÑHƒÄ[]A\A]A^A_Ãf.„ATA‰ÔUH‰ýSèïûÿD‰âH‰ï�Ê H‰ÆH‰ÃèzúûÿH‹EH‰[hH‰ïÇCpÿ�Hc×x�J‰ ÎxH‹ ËxH‰ÑH‹H‰X H‰PÇ@HÇ@H‰Ø[]A\ÃDAWAVAUI‰õATUH‰ýSHƒìX‰T$ …Òt$H‹Íxƒx‡é‹@H�©Hc‚HÐÿàÇD$4E1ä¿è«úûÿ‹=xH�5¿H‰ÃH‰Ç1Àè±øûÿH‰ßL‰îƒxè�òûÿH‰ÃH‹exH‰ÞH‹xèYøûÿH‰ßèÑíûÿ¾H‰ßè´óûÿH‹=x1ÒH‰ß‹pH‹Cÿ��¿`ÇÈwè'úûÿºH�5HH‰ßH‰±wèŒþÿÿºH�5)H‰ßH‰D$èsþÿÿºH�5H‰ßH‰D$(èZþÿÿºH�5 H‰ßI‰ÇèCþÿÿºH�5û H‰ßH‰D$è*þÿÿH‰D$ H‹E€8@H‹‡w„D‹PH�5ÍnH‰ßH�ÄnH‹ývA¹L�`aH� \E…ÒHDðèýÿÿD‹\$ E…Ût7H‹4wH� 8H‹UH‰ßH�5èîL‹D$D‹HE…ÉA¹HDñèÄüÿÿH‹ývL�5H‹MH‰ßL�-±îL‰òA¹D‹@H�58 E…ÀM‰øIEÕè…üÿÿ€}#t1H‹¸vL‰òH‹MA¹L‹D$ H�5ü ‹x…ÿH‰ßIEÕèNüÿÿ‹5Øu…ö…‹‹L$ …É„äLcl$4H‹t$H‰ßL‰êM‰îèóûÿL‰ïèdøûÿH‹L$H‰D$@H‰�°AƒýƒÙAƒæ…�‹T$4…Ò…£H‹vƒx‡P‹@H�Hc‚HÐÿà€¹º¾H‰ßè±êÿÿH‹|$èêÿÿL‹t$(ºH‰ßL‰öè‚òûÿ¿èÈ÷ûÿ¹1öH‰ßI‰†°º>ÇH‰D$8èbêÿÿL‰÷èºéÿÿºL‰þH‰ßè:òûÿ¿è€÷ûÿI‰‡°€}"I‰ÅHÇ„�·EAÆE€fA‰EL‹t$ºH‰ßL‰öèòñûÿ¿è8÷ûÿI‰ÄM‰¦°€}"IÇ$„¼·EAÆD$€fA‰$H‹t$ 1ÒH‰ßE1öè«ñûÿÇD$0‹‰tH‹5†tH‰ßèÎïûÿ‹D$ …À…BH‹T$8H‹t$(1ÉH‰ßA¸èˆíûÿ1ÉA¸L‰êL‰þH‰ßèríûÿH‹t$1ÉL‰âA¸H‰ßèZíûÿ€}"„ÐH‰ßèHêûÿHƒÄXH‰Ø[]A\A]A^A_ÃfD1ö¹º>H‰ßè éÿÿH‹|$èbèÿÿ€}"…+ÿÿÿH‹}H…ÿ„è¶ëûÿH‹t$ H‰ßƒÀ‰D$0‹L$0‰ÈƒàƒøƒÙÿHcÁ‰L$0I‰ÆH‰Âè¦ðûÿL‰÷L‰t$HèéõûÿH‹T$H1öI‰ÆH‹D$ L‰÷L‰°°èËìûÿ‹E…Ày‹EH‹ufA‰I�~H…ö„¬èWéûÿé¯þÿÿf�H‹t$1ÒH‰ßèAðûÿHÇD$@éœýÿÿD‹hH�5¼jH‰ßH�³jH‹ìrA¹L�O]H� K E…íHDðèôøÿÿD‹t$ E…ö…&H‹UA¹M‰øH‰ßH�5s H�  èÃøÿÿ‹5Mr…ö„uüÿÿH‹UA¹M‰øH‰ßH� é H�5: è’øÿÿéMüÿÿDH‰ß¹º>1öè„çÿÿL‰ÿèÜæÿÿé`ýÿÿ€LcD$0H‹t$ 1ÉL‰òH‰ßèiëûÿéþÿÿ@D‹D$4H‹T$@1ÉH‰ßH‹t$èGëûÿé ýÿÿf�I‹$H‹L$@H‰‹D$4H�qHƒæøI‹TøH‰ÇH‰TøH)ñH‰ÈI)Ìøƒàøƒø‚üÿÿƒàø1҉уÂI‹< H‰<9Ârïéæûÿÿf„H‹}éÜýÿÿ€H‹uéKþÿÿ€ÇD$4L�%‘é'ùÿÿ@ÇD$4 L�%Aéùÿÿ@ÇD$4 L�%Qé÷øÿÿ@ÇD$4L�%)éßøÿÿ@A¶$H‹L$@ˆéLûÿÿ€1öH‰ß¹ºÅè$æÿÿ1É1öH‰ßºÆèæÿÿ¹ºÆH‰ß¾èüåÿÿéFûÿÿ€¹º ¾H‰ßèÙåÿÿé#ûÿÿ@H� H‹UL‹D$H‰ßA¹H‰ÎèŸöÿÿé´ýÿÿH� ¾éH�=æèr™ýÿH�ó¾? H�=ÎèZ™ýÿf.„A‹$H‹L$@‰‹D$4A‹Tü‰Tüé`úÿÿAWAVAUATUH‰ý¿SHƒìèuòûÿ‹pH�5‰H‰ÃH‰Ç1Àè{ðûÿH‰îH‰ßƒæoèYêûÿH‰ÃH‹/pH‰ÞH‹xè#ðûÿH‰ßè›åûÿ¾H‰ßè~ëûÿH‹p1ÒH‰ß‹pH‹Cÿ��¿0Ç’oèññûÿºH�5MgH‰ßH‰{oèVöÿÿºH�5üH‰ßH‰Åè?öÿÿºH�5îH‰ßI‰Æè(öÿÿH‹)oI‰èA¹H‰D$H‹|oH� €H‰ß‹pH�Àf…öH�5¶fHDðèõÿÿH‹OoH�5çH‹ÙnL�BYA¹H� E‹xH�.…ÿH‰ßHDðèÕôÿÿºH‰îH‰ßèÅëûÿ¿è ñûÿD‹1öH‰ßèŒãÿÿ¹º>H‰ß¾ èuãÿÿ¹º>H‰ß¾è^ãÿÿH‰ïè¶âÿÿ‹ Èm…É„ºL‰öH‰ßè(ëûÿ¿ènðûÿ‹ mI‰†°I‰ÇHÇ…Ò„çH‹t$ºH‰ßèíêûÿ¿è3ðûÿ‹ÉmH‹5ÆmH‰ßI‰ÅH‹D$L‰¨°IÇEè÷èûÿA¸1ÉL‰âH‰îH‰ßèÁæûÿ‹#m…ÀtOA¸1ÉL‰úL‰öH‰ßè¡æûÿA¸H‹t$L‰êH‰ß1Éè‰æûÿH‰ßè�ãûÿHƒÄH‰Ø[]A\A]A^A_ÀE1À1ÉL‰úL‰öH‰ßèUæûÿE1Àëµ1ÒL‰öH‰ßè#êûÿéöþÿÿfDH‹t$1ÒH‰ßè êûÿéÿÿÿ@AWAVAUATUH‰ý¿SHƒìè5ïûÿ‹ÇlH�5IH‰ÃH‰Ç1Àè;íûÿH‰îH‰ßƒ¦lèçûÿH‰ÃH‹ïlH‰ÞH‹xèãìûÿH‰ßè[âûÿH‰ß¾è>èûÿH‹Çl1ÒH‰ß‹pH‹Cÿ��¿(ÇRlè±îûÿH‰ßºH�5ÝH‰;lèóÿÿH‰ßºH�5¹I‰ÇèÿòÿÿH‰ßºH�5™I‰ÆèèòÿÿH�5äH‰ßH‹ßkI‰ÄH‹=lA¹H� HM‰à‹@…ÀH�,HDð1íèÖñÿÿL‰þºH‰ßèÆèûÿ¿è îûÿL‰öºH‰ßI‰‡°HÇH‰D$è™èûÿ¿èßíûÿH‹=hkI‰†°HÇH‰$èQãûÿL‰æH‰ß¨@”Å�lHcíH‰êèVèûÿH‰ïèžíûÿH‹5'kI‰„$°H‰ÇI‰Åè4áûÿ‹kH‰ßH‹5kAÆD-ÿèYæûÿL‹T$L‰þH‰ßA¸1ÉL‰ÒèäûÿL‹ $L‰öH‰ßA¸1ÉL‰ÊèäûÿI‰èL‰êL‰æH‰ß1ÉèñãûÿH‰ßèéàûÿHƒÄH‰Ø[]A\A]A^A_ÀAUATI‰üUSHƒìH‹=,QH…ÿ„»L�-Q1íL‰ëë(DH‹{L‰æèÄåûÿ…ÀtHƒÃ(H‹;ƒÅH…ÿ„…L‰æè¥åûÿ…ÀuÑ‹»P‰D$ ƒøÿt2…ÀHcí•ÀH�T­I�TÕ¶À‰BH‰cj‰�PHƒÄ[]A\A]Ãf�H�L$ E1À1Ò1öL‰çè<ëûÿ‹D$ ƒøÿu±H�œ ¾­H�=?èË’ýÿºH�5ô1ÿèuáûÿL‰æH‰Ç1Àèè¡ýÿ¿è.êûÿff.„AVAUATA‰ôUSèPãûÿH�5ÊÐH‰ÇI‰ÆèÎèûÿH…ÀteH‰ÅL�-°Ð€¿è®ëûÿH‰ïH‰Ãè3áûÿH�xèšëûÿH‰îH‰ÇH‰è<ßûÿL‰î1ÿD‰cH‹,iH‰%iH‰CèlèûÿH‰ÅH…Àu¬[L‰÷]A\A]A^éDëûÿ@AWAVAUATUSHƒì8H‹mL‹`(M…ä„þH‰t$1ÛH‰<$A€|$uI‹|$èžàûÿH9ÃHBØM‹d$ M…äuÝH…Û„ÄH‹<$HƒÃ!èwàûÿƒ=,mH‰D$„µH‰ßèÍêûÿI‰ÅH�h H‹‡lL‹x(M…ÿ„@I�]ë@M‹ M…ÿ„ûA€uì‹=ÊgI‹w…ÿ…*H‰ïè*Þûÿ¹p_1ÒH‰Þf‰KH‹=-lA¸1ÉÇ__imè’âûÿI‰ÆH…Àt¢€xuœM…ä„sI‹w1ɺL‰çèØãûÿI‹F0ƒ=elÿAÆGI‰G0I‹F(I‰G(…^ÿÿÿºH�5ú1ÿèSßûÿH‰ÚH‰îH‰Ç1Àè#Ÿýÿ‹Ag…À…-ÿÿÿºH�51ÿè"ßûÿH‰Ç1À蘟ýÿÇgéÿÿÿf„M…ät)L‹D$L‰á1ÒH‰îH‹=‡kè2æÿÿL‰çèúßûÿL‰çèbéûÿHƒÄ8L‰ï[]A\A]A^A_éLéûÿ@H‰òH�=©ý1ÀH�5…èPßûÿI‹wéµþÿÿ€HƒÄ8[]A\A]A^A_Ã�¿(èéûÿH‹5+ºH‰ÇI‰Äèoçûÿ…À„H‰ßèïèûÿI‰ÅH�h H‹©jL‹x(M…ÿ…"þÿÿé4ÿÿÿ€H‹@(L‹€ðL‰ÇL‰D$èÀÜûÿL‹D$…À„àA‹€¸I‹ˆ°…ÀŽåýÿÿƒèH�DÁH‰D$(ëfDHƒÁH;L$(„ÁýÿÿH‹H‹T$H‰L$H‹4$H‹@H‰ÇH‰D$ èÇÛûÿH‹L$…ÀuÆ‹te…Òu+H‹T$ HT$„|ýÿÿL‹D$H‹=j1ÉH‰îè¾äÿÿéáýÿÿH‹t$ H�=_üèÞûÿH‹L$H‹H‹@H‰D$ ë±1ÿºH�5ÿåè2ÝûÿH‰Ç1Àè¨�ýÿéÌþÿÿH�5tß1ÿºL‰$è ÝûÿL‹$HƒÄ8[H‰Ç]1ÀA\L‰ÆA]A^A_ém�ýÿff.„f�AWH�5æ¾AVAUATI‰üUSHƒìèäûÿH‰ÃH…À„ŸH‹¨dH…À„ÇHƒ8tmD‹HH‰ÙE…É…¹º¾H�=‘ûè[åûÿH‹ldºH‰ÞH‹8è„åÿÿH‹íhH‹€øHƒ¸…èH‰Þ¿ èkÞûÿH‹,dHƒxtEH‰Ùº ¾H�=9ûèôäûÿH‹dºH‰ÞH‹xèåÿÿH‰Þ¿ èÞûÿH‹àc‹Hl‹Phƒùÿ…áƒúÿtH�5 ûH‰ß1Àè“ßûÿH‹´cƒx ÿu ‹P(ƒúÿ„òH‰Þ¿ èÍÝûÿH‹Žc‹p$‹P ƒþÿ…σúÿtH�5ØúH‰ß1ÀèAßûÿH‹bc‹H,‹p(ƒùÿ„̉òH‰ßH�5¼ú1ÀèßûÿH‹9cD‹@0E…À�Õ‹p@…ö�ñ‹PX…Ò�žH‰ßèæÚûÿƒøÿ„uHƒÄ[]A\A]A^A_ÃfDH�5úH‰ß1Àè·ÞûÿH‹Øbéÿÿÿº¾H�=Ïùè¢ãûÿéBþÿÿD‰ñH‰ßH�5ôù1ÀèuÞûÿH‹–b‹H,‹p(ƒùÿ…4ÿÿÿƒþÿ„Eÿÿÿ‰òH‰ßH�5ûù1ÀèCÞûÿH‹dbD‹@0E…ÀŽ+ÿÿÿH�=èùH‰Ùº ¾è&ãûÿH‹7b‹x0…ÿŽÿÿÿ1íL�--ÈëHf„€x… €x…4€x…[H‰Þ¿ HƒÅè!ÜûÿH‹âa9h0Ž­þÿÿH‰Ùº¾L‰ïè¬âûÿH‹½aH�DmH‰ÞL�4ÅH‹R8H‹<Â1ÒèÆâÿÿH‹—aH‹H8LñHƒyH‰ÈtDH‰Ùº¾H�=ùèUâûÿH‹fa1ÒH‰ÞH‹@8J‹|0è{âÿÿH‹LaH‹H8LñH‰È€x„ ÿÿÿH‰Ùº¾H�=ÐøèâûÿH‹aH‹H8LñH‰È€x„öþÿÿH‰Ùº¾H�=¢øèÓáûÿH‹ä`H‹H8LñH‰È€x„ÌþÿÿH‰Ùº¾H�=uøèŸáûÿH‹°`Lp8L‰ð€x„¥þÿÿH‰Ùº¾H�=Møènáûÿé‡þÿÿf„º H‰Ù¾H�=]øèGáûÿH‹X`‹BX…ÀŽ7ýÿÿE1íL�5MÆëcf„1ÒH‰ÞèVáÿÿHƒ}t'º¾H�=øH‰ÙèöàûÿH‹}1ÒH‰Þè(áÿÿH‰Þ¿ IƒÅè'ÚûÿH‹è_D9jXŽÈüÿÿH‹R`K�D­H‰ÙL‰÷¾H�,ºè¤àûÿL‹}M…ÿt;H‹uH…öt L‰ÿèJÛûÿ…Àt&1ÒH‰ÞL‰ÿè¹àÿÿH‰Ùº¾H�=RÕè`àûÿH‹E1ÒH‰ÞH�xèŽàÿÿ¿.H‰Þè‘ÙûÿH‹}H…ÿ…ÿÿÿ‹U H�5YÔH‰ß1ÀèÛûÿéÿÿÿH‰Ùº¾H�=æöèÿßûÿH‹_‹H@…ÉŽäûÿÿE1íL�5ÅëA�€}!…Æ€}"…߀}#…øH‰Þ¿ IƒÅèÙûÿH‹Â^D9h@Ž—ûÿÿH‹HHK�T­¾L‰÷H�,ÑH‰Ùºè~ßûÿH‹}1ÒH‰Þè°ßÿÿH‹}H…ÿtH‹uèÚûÿ…À…®‹UƒúÿtH�52öH‰ß1Àè-Úûÿ€} „SÿÿÿH‰Ùº¾H�=öèßûÿ€}!„:ÿÿÿH‰Ùº ¾H�=õõè÷Þûÿ€}"„!ÿÿÿH‰Ùº¾H�=ÜõèÔÞûÿ€}#„ÿÿÿH‰Ùº¾H�=Áõè±Þûÿéêþÿÿ@H‰Ùº¾H�=�Óè�ÞûÿH‹}1ÒH‰ÞèÁÞÿÿé&ÿÿÿ@H�5ã1ÿºè…ÕûÿHƒÄL‰æ[H‰Ç]1ÀA\A]A^A_éê•ýÿf.„H‰Ùº¾H�=côè'ÞûÿH‹ÐaH�5ÓÃH‰ßH‹€øH‹�1ÀèñØûÿéÔøÿÿ@ºH�5¼ú1ÿèÕûÿL‰æH‰Ç1Àèx•ýÿH‹é\H…À…Aøÿÿ„1ÿºH�5ÓôèÍÔûÿH‰ßH‰Æ1Àè�Øûÿé�ùÿÿ‹p$ƒþÿ…ôùÿÿ‹H,ƒùÿ„_ùÿÿé@ùÿÿff.„AWM‰ÇAVAUI‰ÕATI‰üUH‰ÍSHƒìXH‹‹m\L�t$0H‰t$H�5‘ôH‹L‰÷H‹�B‰J\1ÀèÝûÿL‰ð‹HƒÀ�‘ÿþþþ÷Ñ!Ê� €€tè‰ÑÁé÷€€DÑH�HHDÁ‰Ö@ÖH‰êHƒØL)ðH)‰ÁƒøƒÕ¨…u …É…H‹CH�L$(M‹L$H‰ÞHÇD$(L‹ \H�=ý_H‹€hQ¹jjjÿ�8H‹D$HH‹@H‰D$(HƒÄ ƒ=w`„ë¿k_1É1ÒA¸H¸__nm_thnf‰}þH�uöH‰EöH‹=Á_è4ÖûÿH…Àt €x„¦¿H‹É_èÔÝûÿ‹f[H�5dóI‰ÆH‰Ç1ÀèÚÛûÿH‰ÞL‰÷ƒE[è¸ÕûÿH‰ÃH‹Ž[H‰ÞH‹xè‚ÛûÿH‰ßèúÐûÿ¾H‰ßèÝÖûÿH‹f[1ÒH‰ß‹pH‹Cÿ��¿ÇñZèPÝûÿºH�5ñH‰ßH‰ÚZèµáÿÿA¹H‰êH� òI‰ÀH�5ÃòH‰ßI‰ÆèÀàÿÿA¹H‰êH‰ßL�õDH� ññH�5<ñèšàÿÿºL‰öH‰ßèŠ×ûÿ¿èÐÜûÿfïÀ¹1öI‰†°º>H‰ßH‰D$èiÏÿÿL‰÷èÁÎÿÿ‹7ZH‹54ZH‰ßè|ÕûÿL‹L$1ÉL‰öA¸H‰ßL‰ÊèAÓûÿH‰ßè9ÐûÿH‹3H�ÿ]H‰ßèÇÛÿÿH‹@^Ç–_�`DÿïÿÿM…í„æ‹|^ƒø„׃ø„äI‹$L‹|$º1ÿI‹l$H�5r÷H‹I‹ŸðL‹hèOÑûÿH‰éL‰úH‰ÞM‰èH‰Ç1À蹑ýÿHƒÄX[]A\A]A^A_Ãf.„H‹L$0H‰ ‰ÁI‹tøH‰t øH�rH‰ÑHƒæøH)ñI)ÎÁƒáøƒù‚ýÿÿƒáø1À‰ÇƒÀM‹>L‰>9Èrïéíüÿÿf�A¶ˆöÁ„ÜüÿÿA·Dþf‰D þéÌüÿÿ�¿H‹4]è?Ûûÿ‹ÑXH�5åðI‰ÆH‰Ç1ÀèEÙûÿH‰ÞL‰÷ƒ°Xè#ÓûÿH‰ÃH‹ùXH‰ÞH‹xèíØûÿH‰ßèeÎûÿ¾H‰ßèHÔûÿH‹ÑX1ÒH‰ß‹pH‹Cÿ��¿0Ç\Xè»ÚûÿºH�5PH‰ßH‰EXè ßÿÿA¹H‰êH‰ßL�…BH� �ïI‰ÆH�5$ðè'ÞÿÿH‹`XH‰ßH�aïA¹L�QBH� Zî‹rL‰ú…öH�5üÏHDðèêÝÿÿH�.ïH‰ßH‹T$A¹L�BH‰ÁH‰ÆèÃÝÿÿºL‰öH‰ßè³Ôûÿ¿èùÙûÿfïÀ1ö¹I‰†°º>H‰ßI‰ÇÇ@è�Ìÿÿ¹º>H‰ß¾ èvÌÿÿ¹º>H‰ß¾è_ÌÿÿL‰÷è·Ëÿÿ‹-WH‹5*WH‰ßèrÒûÿ1ÉL‰úL‰öA¸H‰ßè<ÐûÿH‰ßè4ÍûÿH‹3H�úZH‰ßèÂØÿÿM…í„‹�[ƒø…ýÿÿ‹ pV…É…ôI‹D$¿H‹ [D‹p èÙûÿ‹¤VH�5ÞîH‰ÇI‰Ä1Àè×ûÿH‰ÞL‰çƒƒVèöÐûÿH‰ÃH‹ÌVH‰ÞH‹xèÀÖûÿH‰ßè8Ìûÿ¾H‰ßèÒûÿH‹¤V1ÒH‰ß‹pH‹Cÿ��ƒ=çZ¿uƒ=…VHÿƒçHƒÇÇVètØûÿºH�5$îH‰ßH‰þUèÙÜÿÿH� MíH‰ßH‹T$A¹L�5@H‰ÎI‰ÄèâÛÿÿƒ=wZ… ‹V…Ò…?A¹L�@H‰êH‰ßH� øìH�5JìÇäUA½è‘ÛÿÿºL‰æH‰ßè�Òûÿ¿èÇ×ûÿfïÀ¹H‰ßI‰„$°º>¾H‰ÅHÇ@èVÊÿÿ¹º>H‰ß¾ è?ÊÿÿH‹CH�uL‰÷ÿPHH‹CH�u¿ÿPHL‰çèyÉÿÿ‹ïTH‹5ìTH‰ßè4ÐûÿM‰èé—@ƒ=}Y„ñýÿÿHƒÄX[]A\A]A^A_Ã@ºL‰æH‰ßè¸Ñûÿ¿èþÖûÿL‰ïI‰„$°H‰ÅHÇH‹CH‰îÿPH¹º>H‰ß¾èˆÉÿÿL‰çèàÈÿÿ‹VTH‹5STH‰ßè›ÏûÿA¸1ÉH‰êL‰æH‰ßèeÍûÿH‰ßè]ÊûÿH‹3H�#XH‰ßèëÕÿÿ‹qT�P‰hT…À…9ÿÿÿ¿H‹-HXèSÖûÿ‹åSH�5ìH‰ÃH‰Ç1ÀèYÔûÿH‰îH‰ßƒÄSè7ÎûÿH‰ÃH‹ TH‰ÞH‹xèÔûÿH‰ßèyÉûÿH‰ß¾è\ÏûÿH‹åS1ÒH‰ß‹pH‹Cÿ��¿ÇpSèÏÕûÿH‰ßºH�5×LH‰YSè4ÚÿÿH�'ëH� ¡êH‰ßH‰ÅH‹‰SL�Š=H‰Î‹@…ÀH�þêHDÐE1Éè'ÙÿÿºH‰îH‰ßèÐûÿ¾¿è¸Ôûÿ¹1öH‰ßH‰…°º>I‰ÄèúÇÿÿH‰ïèRÇÿÿ‹ÈRH‹5ÅRH‰ßè ÎûÿL‰âH‰î1ÉA¸H‰ßè×ËûÿH‰ßèÏÈûÿH‹3H‰ßH�’Vè]ÔÿÿHƒÄX[]A\A]A^A_ÃfDA¹L�Ã<H‰êH‰ßH� ¹éH�5 éA½ è\Øÿÿº L‰æH‰ßèLÏûÿ¿ è’Ôûÿ¹º>H‰ßI‰„$°¾H‰ÅHÇÇ@è"Çÿÿ¹1öH‰ßº>èÇÿÿH‹CH�uL‰÷ÿPHéÚüÿÿH‹t$D‰êH�=aï1Àè2ÊûÿéñúÿÿDA‹‰A‹Dü‰D üé€õÿÿDAWAVAUI‰ýATUSHƒì8H‹?H‰T$H…ÿHD=¤QH‰t$H‰=`Qè;ËûÿH� ¤¶H‰BQ„ÒtfDöQŒuÆ_HƒÀ¶„ÒuìH‹\$H‰ßèoÎûÿ1öH‰ßèuÏûÿI‰ÆH…À„²‹ +W…É… ¾L‰÷E1äè»ÌûÿA€NG€L‰÷è¾àÿÿH‰D$ H‹D$H‹X`H…Û„•€H‹-ÙPH…ítr@1Òƒ}¸uH‹3H‹}èÇÇûÿ…À”•ÀH‹mH…ít„ÀuÒ„ÒtÿÿÿL‹L$I‰ÀL‰éL‰òH�5*â1ÀIƒÇIƒÄ(H�=Ñßè¹ûÿL9<$…ÿÿÿL‹|$0L‰ÿèíÂûÿH‹t$P1ÒH‰ßH‰Åè»ÂûÿH‰ïH‰ÚL‰þè�ÁûÿH‹=@H‰èH+D$HH‰$H…ÿ„á¶E!¶U ¶u ¶MÁâD¶}¶]ˆD$`¶E"Ö¶UÁáD¶eD¶uˆD$k¶E#ÁâòD¶m ˆD$l¶EˆD$H¶EˆD$P¶EˆD$j¶EˆD$\� H$H‰ÆH‰D$0èp™ÿÿH…À„‹=]?…ÿ…)½é¨üÿÿ€1ÿºH�5’ÞèU·ûÿL‰æH‰Ç1ÀèÈwýÿé|üÿÿ¹L‰öH�=åÜó¦—À„À…ÑýÿÿD‹÷>J�D-L‰l$8H‰D$@E…À„²ýÿÿéoþÿÿfDºH�5È×1ÿ1íèã¶ûÿL‰æH‰Ç1ÀèVwýÿé üÿÿ�H‹L$H‹D$M‰÷M‰åH‹|$0L‹d$L)øH‰ÊL‹t$I‰ÇHúL‰èH)ÈI9ÕHCÇH‰D$0I�H‰D$PéÒüÿÿfDÁãAÁä¶l$`‹T$lAßAÁæH‹ $HƒìC�'ÁåÁâE1ÉDðAíH‰ËE1ÀH‰D$I‰Æ¶D$sD‰öÁàDè�<¶D$X¶T$PHûH‰|$hH‹=>Áà¶D$rÁàЋT$dÁâ�,¶C¶Áà¶CÁàжSjÁâÂHÊH‹L$@èp¬ÿÿY^…À‰®H�D$tE1íH‰D$HE…ö…¢é2þÿÿA¿L9t$†HƒìE1ÉE1ÀD‰éÿt$PH‹=w=L‰æH‹T$@è’—ÿÿAZA[‹T$t…ÒuD‰x$D‹ 7=E…Ét5E…ÿH�!ÖM‰ðL‰áL� ÚÔH‹T$0H�5ãÞLEÈH�=¸Ü1ÀèѵûÿIƒÅHƒÃL9l$„•ýÿÿ¶C¶¹H�=èÓÁà¶CÁàжSÁâD�$L$$L‰æó¦—À„Àt¯H‰ÙH+L$`ÇD$t¶D)¶)Áà¶D)ÁàжT)ÁâD�4L9t$†éþÿÿL;t$ rA¿L;t$(‚âþÿÿL;t$8“ÀE1ÛL;t$@A’ÃA!ÃE‰ßéÃþÿÿf.„H‹t$0H�=3Õ1Àèí´ûÿé¿üÿÿ„è �ÿÿH‰ÇH‰<é üÿÿ@E…ö„–üÿÿL‹l$0H,$E1ä‰D$0ëTDL9|$†ªHƒìE1ÉL‰éL‰òjè¬ÿÿD‹®;Ç@$^_E…À…IƒÄHƒÃHƒÅL9d$„0üÿÿ¶E¶UE‰àH‹=�;Áà¶EÁàжUÁâD�<‹D$0¶B�4 ¶CÁà¶CÁàжSÁâD�H‹$N�4L9|$†KÿÿÿL;|$ r L;|$(‚DÿÿÿL;|$8r L;|$@‚2ÿÿÿHƒìL‰éL‰òE1ÉjèK«ÿÿ‹ á:Ç@$XZ…É„4ÿÿÿL� ˆÒM‰øL‰ñL‰ê1ÀH�5‹ÜH�=dÚè³ûÿé ÿÿÿf.„L� ŽÓëÊHÇD$@HÇD$(HÇD$HÇD$PHÇD$8HÇD$ HÇD$éúÿÿ‹5.!…öxFHƒìH‹GH‹€hÿPx…ÀtHƒÄÃ1ÿºH�5òÙè5²ûÿHƒÄH‰Ç1Àé§rýÿ€Ãff.„@AWI‰ÿAVAUI‰õATUSHƒì8H‹GH‹8è�ÏÿÿL‰ÿèxÿÿÿHƒ=Ø9„R I‹]`L�5ÔÒH…Ûtgf.„L‰öH‰ßè´ûÿH…ÀtAL‹`8H‰$L‰çè@¼ûÿH‹4$M‰à1ÉH‰ÂH‰ßH‰Å話ûÿH‹=z9D‰âH‰îèªÿÿH‰ïèÿ»ûÿH‹›ðH…Ûu£H‹T9H‹XpH…Ûu ëA�H‹H…Ût8H‹sI‹}(E1À1É1Òè´ûÿH…Àt߀xuÙH‹@(‹S9sÎH‹‰H…ÛuÌ@A¶E‹ ù8¨…íH‹-î8‹u@I‰î…ö……É„5‹Ê8…Ò…'I‹]`H…Û„oL‰|$H‰ßèh¯ûÿ…À„@ ‹ƒ¸L‹“°…ÀŽ0ƒèM‰×M�tÂH�D$,H‰$€I‹H� #H9H „ô‹PöÂu…Ò…äH‹=u=H…ÿtH‹pèµûÿ…À…ÇI‹H‹h¹H�= ÏH‰îó¦—À„À„¢H‰ïèB°ûÿH�x詺ûÿH‰éH�óÎH�5i†I‰ÄH‰Ç1À諸ûÿI‹}(E1À1É1ÒL‰æè¸²ûÿL‰çH‰D$è[ºûÿH‹D$H…Àt€xtCH‹D8D‹`E…ät 1À€}_”ÀHÅH‹5�7H‰éH‰ßH�VHHƒÆ@蕺ÿÿ…À…EDIƒÇM9þ…ëþÿÿH‹›ðH…Û…›þÿÿL‹|$H‹-G7‹E@I‰î…À„‘D‹&7E…Ò„i1ÛÇ$…ÀŽXL‰l$I‹FHL�$›J‹,àD¶mA€ý?tV¾@H‰ï蔯ûÿH…ÀtD1ÿA€ý@@”ÇHïèí°ûÿ¾@H‰ÇH‰ÅèݯûÿH…À„” ÆL‹5²6Ç$I‹FHJ‰,àIcv@HƒÃ9Þ‡D‹ $L‹l$E…É…Ý D‹n6E…À„-…öŽÅ H�D$,E1äH‰$ë0€‹|$,L‹5M6…ÿ…ÚDA‹v@IƒÄD9æŽçI‹VHK�¤¹H�=ÍH�,ÅH‹ÂH‰Þó¦—À„ÀtÁ¾@H‰ß蜮ûÿH…Àt¯ÇD$,1ÿ€;@@”ÇHßèî¯ûÿ¾@H‰ÇH‰Ãèn®ûÿH‹5¿51ÿH‰ÙÆH�VHHƒÆ@è¸ÿÿ…À„JÿÿÿL‹ $E1À¹ÿÿÿÿH‰ÞH‹=Œ5H‹GHH‹T(èÆ‹ÿÿ‹|$,L‹5s5…ÿ„+ÿÿÿH‰ßIƒÄè÷·ûÿL‹5X5A‹v@D9æ�ÿÿÿI‹FH…öŽ” L‰<$I‰Ä1Û1íL‰l$M‰÷I‰ÅéËf„M‹uI‹uØL‰÷è°°ûÿ…À…²HcÃH�€M�|ÄØ‹Ú4E‹WAƒúÿ„¨A‹Mƒùÿ„›A9Ê„’…À…ÒA‰OA¶E AG A¶E!AG!A¶E"AG"A¶E#AG#M…ötL‰÷è%·ûÿI‹}H…ÿtè·ûÿI‹}L‹=t4H…ÿt è·ûÿL‹=c4ƒÅIƒÅ(A;o@}B…í…6ÿÿÿ9ët&HcÃóAoEH�€I�ÄóAoMHI‹M H‰H ƒÃƒÅIƒÅ(A;o@|¾M‰þHcûL‹l$L‹<$HÁçA‰^@è ¶ûÿH‰�4H‹ê3Hcx@HÁçè…¶ûÿH‹-Ö31öH‰ÇH‰R4HcU@HÁâèe­ûÿ‹E@Ç4Ç4Ç4Ç4Ç4…ÀŽÔE1öL‰<$é‚@H‹-i3ƒâ3H]H€{"uƒÍ3H‹P(H‹Î3J�ðA€ÿtH‹RH‰‹Cƒøÿt#;�3~‰‡3;…3}‰}3ƒ‚3L‰çIƒÆè–µûÿ‹E@D9ðŽBH‹EHK�¶HÁãH‹lH‰ï葼üÿH‰ïè «ûÿH�xèpµûÿI‰ÄH‹V3‹p…ö„ã€}@„ÙAÆ$_I�|$H‰îèï¨ûÿL‰ç觬ûÿH‰Çè?¼üÿI‹}(1É1ÒA¸L‰æèY­ûÿH…À„PD¶xA�Wý�âý„ãþÿÿ¾.H‰ïèîªûÿH…À„…H‹-62ƒ¯2H]H€{"uƒš2‹CÆC$ƒøÿ…áþÿÿéÿþÿÿ�…ÉuL‹5ý1A‹F@…À…¸úÿÿD‹5â1E…ö…“úÿÿéùÿÿ@…ÉuãD‹Á1A‹F@E…Ò…—úÿÿA‹v@é2ûÿÿ€L‹<$…Àu A¶E¨„YH‹EH…À„NH‰÷1‹ ù1‹=û1…Ét‹Ù19ú�™ÇË1¸‰=¼1)ǃlj=Í1HcÿHÁçèå³ûÿ‹»1H‰�1…Ò~ƒêH�T�@ÇÿÿÿÿHƒÀH9ÂuñL‹5 1‹p11íA‹V@‰$‰Ã…ÒŽ)M‹nHE1ä1íM‰ïéÖ„D‹FAƒøÿ„‚E‰ÅD+,$H‹ 1D‰D$McíIÁåLéHcƒøÿtZL‹6H�€º1ÿH�5¸ÑD‰L$M‹<Ç芨ûÿD‹D$L‰òL‰ùH‰Ç1ÀD‰Æèòhýÿ‹Ð0D‹L$H‹ ¸0L‹5Q0‰$LéD‰ M‹~HƒÅLûH‹{H…ÿteèh¨ûÿÅ€{$t H‹{èW¨ûÿ�lA‹F@IƒÄD9àŽ*H‹‹0K�¤E‰áHÁãJƒ<àI�4…ÿÿÿ€~$…ÿÿÿM‹~HLûë¨fDH‹;ë–‹$D‹%)0A�üÿÿ�ûÿÿ~&1ÿH�5ÿк襧ûÿA9܉ÞAMôH‰Ç1ÀèhýÿH‹=ó/‹ù/è°§ûÿ‹ö/¿�T �S�TUHcÒH�DH‰0è¦ÿÿH‹=0èÚôÿÿHƒÄ8[]A\A]A^A_ÃL‹ $H‹=%/E1À1Ò¹ÿÿÿÿH‰îÇD$,èS…ÿÿD‹\$,E…Û…�÷ÿÿI‹‹RÁêƒòƒâˆP#év÷ÿÿfD…ÀŽ ÿÿÿHc4$A¸I�O1ÀL‹I/L‹ /I‰ó‰óI)ð넃9ÿt+HƒÀHƒÁ(A9F@ŽÉþÿÿIƒ<‰Çuà€y t߃9ÿuÚD‰ÚD)ÚHcÒI�4‘ƒ>ÿtHcÓLÂI�‘DH‰ÖHƒÂƒÃƒzüÿuð‰>‰ëŸf.„…À…ÀA‹Mƒùÿ…aùÿÿé`ùÿÿfD¾.H‰ï賦ûÿH…À…ÅûÿÿºH�5îÎ1ÿè÷¥ûÿH‰îH‰Ç1ÀèjfýÿH‹-Û-éÌúÿÿfDH‰îL‰çè¤ûÿé9ûÿÿ„ºH�5<ÎA€ÿt°H�5_Î1ÿè ¥ûÿH‰îA¶×¹H‰Ç1Àè fýÿH‹-{-élúÿÿfDM‹7ºH�5ÉÍ1ÿèb¥ûÿH‰ÇL‰ö1ÀèÕeýÿM‹uéÿÿÿ@I‹¶H‰£-„É„¤ûÿÿH‰Ç1öA¸I¹ fDƒé/HƒÀ€ù-wL‰ÊHÓêH÷ÒƒâHDøADð¶„ÉuÙ@„ö„YûÿÿH‰=I-éMûÿÿ@‰Ñ‹4-)ù‰×ƒÁ9Á�eûÿÿ‰ -‰ÈéXûÿÿ@I‹~HH� 5¡ÿÿº(è{£ûÿL‹5Œ,éÇúÿÿ€èc€ÿÿH‰t,é�òÿÿ€ºH�5¼¦1ÿL‹|$èX¤ûÿH‰ÞH‰Ç1ÀèËdýÿH‹-<,‹E@…À…–úÿÿé„úÿÿ@H‹!,1ÿºH�5 ÌH‹@HN‹4àè¤ûÿH‰ÇL‰ö1Àè�dýÿé;õÿÿ@º1ÿM‹7D‰T$H�5̉L$èÙ£ûÿD‹T$‹L$L‰öH‰Ç1ÀD‰Òè@dýÿM‹uéýÿÿ€1ÿ1Ûéž÷ÿÿ€SH‹GH‰ûH‹8è0ÁÿÿH‰ßèñÿÿ1ÿèA¢ÿÿH‹=J,[éñÿÿ@AWI‰÷AVAUATUSH‰ûHƒì8H‹GH‰t$H‹8èëÀÿÿH‰ßèÓðÿÿH‹ƒøL‰þH‰ßH‹€H‰,ès£ÿÿH‹¼+H…Ò…3H‹=´+è§­ûÿ‹ }+H‹¢+1öI‰ÆH‰¦+H�@(D‹-W+�,�L‰÷H‰$HcíF�$­EíHÅMcäMcíH‰l$IìèQ¤ûÿH‹ƒøMå‹°Œ…ö…‘H‹Š*HcxhH‹Cƒÿÿt/I�vÿP`H‹/+H�p H‹d*HcxlH‹CÿP`H‹CL‹5+H‹+I�v H‹RhH‹z(L‰êH+=+L)òH×ÿPHH‹5‘*L‰ïE1íè¢ûÿHc={*L�pH‹Ä*H�pH‹CÿPHH‹²*Hc=o*H�pH‹CÿPHH‹™*Hc=N*H�pH‹CÿPHH‹�*H‹y*H‹ $H‹RhH�pH)ÁH‹CH‹z(H+={*HÏÿPHH‹^*H‹G*H‹L$H‹RhH�p H)ÁH‹CH‹z(H+=H*HÏÿPHH‹+*H‹*L‰áH‹RhH)ÁH�p$H‹CH‹z(H+=*HÏÿPHH‹*)‹J@…ÉuéæfDAÆ_H‹@HI�H‹t(èZŸûÿH‹D$1É1ÒA¸L‰þH‹x(èÏ£ûÿH…Àt€xuH‹P0H‹a)J‰èL‰ÿIƒÅèY«ûÿH‹º(‹B@D9èŽÖK�L­H‹BHH�,ÍH‹|(èË ûÿH�xè2«ûÿI‰ÇH‹)‹@…ÀH‹t(t"H‹PHH‹t*€>@…HÿÿÿL‰ÿè°žûÿéQÿÿÿH‹@HL‰ÿH‹t(è—žûÿé8ÿÿÿf�H‹D$¶ƒà<uH‹ƒøÇ€€H‹á(H‹Ê(H‰�°H‹Ä(H‹­(H‰�°HƒÄ8[]A\A]A^A_À…À~œ1íÇD$é7D€x$„VH‹(D‰î+5(ÁæH‹@hHcöH4$H‹x(L‰ðH+=j(H+C(HÇH‹CÿPHH‹r'L‰÷H‹BHH‰T$ J‹t8è´�ûÿH‹T$ L‰þHrHH‰T$(H‹~H‰t$ èuŸûÿH‹t$ H‹T$(M�t€~"…‰H‹FH…ÀHDH‹t$H‰D$ H‹Ø'H‹@hH‹x(L‰ðH+=Ö'H+¯'HÇH‹CÿPHH‹t$ L‰÷HƒD$èÊžûÿD+-7'L‰æIƒÄL�pH‹CIcýÿP`H‹¯&‹L$H‹BHB‰L8�A‰D$HƒÅ9j@ŽVþÿÿL�|­H‹BHIÁçLøD‹hAƒýÿ…°þÿÿH‹i&ëÌ€H‹á&H‹èH…ÀtàH‹Ù&D‰î+5¬&ÁæH‹<êH+='HcöHx`H‹@hH4$Hx(H‹CÿPHH‹&H‹rHLþé×þÿÿDH‹C1ÿL‹¸�膢ûÿI�vH‰ÇAÿ×L‹5�&éGûÿÿH‹5™&H‹=¢&è£ûÿèØªüÿ1ÿ¾蜬üÿè÷Gýÿ¿èÝ”üÿé•úÿÿ„UH‰õSH‰ûHƒìH‹GH‹8è(»ÿÿH‰ßèëÿÿH‹ƒøH‰îH‰ßH‹€H‰=&è°�ÿÿH‹ù%H…Òu$H‹ &H‹ö%H‰�°HƒÄ[]ÄH‹5é%H‹=ò%èm¢ûÿè(ªüÿ1ÿ¾èì«üÿèGGýÿ¿è-”üÿë§ff.„¶WD1Àƒâ€útÃ�H‹—ø‹‚€…Àtí‹’€1À…Ò•ÀÃ�¸H‹H9wÀÃH‹6H‹?éE ûÿDH‹GH‹VH…ÀHDH…ÒHDH‰ÇH‰Öé ûÿff.„@H‹‘%SH‰ûH‰Gx‹{%‰‡ˆ�xHcÿHÁçèæ¦ûÿLc_%H‰ƒ€E…À~.H‹SxA�xÿH‰ÁHÁçH×ë €H‰òH‰H�r HƒÁH9úuíJÇÀƒK [HÇ%Çÿ$Çù$ÄAWE‰ÏAVI‰öAUI‰ÕATI‰ÌUH‰ýH‰÷SHƒìL‰D$èÖ›ûÿL‰ïH‰$èÊ›ûÿL‰çH‰Ãè¿›ûÿH‹$H�|HÇè¦ûÿL‰öH‰ÇH‰Ãè`›ûÿL‰îH‰ÇèU›ûÿL‰æH‰Ç誙ûÿH‹EH‰ïÿ�HcT$PL‹D$H‰XH‰PHcx$L‰@ �JD‰x‰ g$H‹ d$H‰ÑHƒÄ[]A\A]A^A_Ãf„AVA‰ÖH‹$AUI‰õATI‰ü‹=$UHcéSHcø#�Wÿ9Ú+ƒÇ Hc÷‰=á#HÁæH…ÀttH‰Çè´›ûÿHcÍ#H‰Î#HÁãD‰öL‰çHÃL‰kHÇCè›ûÿH‹ É#H‰CHc–#H� éH‰ÂHÁàHŒ#ƒÂH‰[‰w#]A\A]A^ÀH‰÷èà¤ûÿHcY#H‰Z#ëŠSHcöH‰û1ÒHƒì螤ûÿH‰ÚH�|$¾è|£ûÿ¶D$¶T$HƒÄ[ÁàÐÀSHcöH‰û1ÒHƒìè^¤ûÿH‰ÚH�|$ ¾è<£ûÿ¶T$ ¶L$ ¶D$ÁâÁàÑ�¶D$HƒÄ[ÁàÐÃf�AU1Ò¾ATA‰üH�=É·USHƒìèÀcüÿH‹5 &H�=°·H‰ÃèœûÿH‰;#H‰C H…À„H‹@H‹=Û%H‹¨�è?ŸûÿH‹=È%I‰ÅèžûÿL‰êH‹=þ"‰ÆÿÕ…À„ÊH‹=ë"E…ät_H�5m·èB—ûÿH‰Ë"H…ÀtH‹=Ç"ºA H‰Æè¢¢ûÿ…ÀuºH�5R¼ë]H‹=¡"H‹r"H‹5‹"èžûÿH‹=‡"H�5·èã–ûÿH‰d"H…ÀtH‹=h"ºA H‰ÆèC¢ûÿ…Àu?ºH�5#¼1ÿèl˜ûÿHƒÄ[H‰Ç]1ÀA\A]éØXýÿ„ºH�5Œ¶ëÏf�H‹="H‹5ú!1Òè{�ûÿHƒÄH‰ß[]A\A]éù’üÿf„AWAVAUATUSHƒìHH‹N`H‰|$8H‰t$0H…É„`1Òf„H‹��H…Àt@�ˆH‹@H…ÀuñH‹‰ðH…ÉuÕHcúHÁçèI¢ûÿH‰D$H‹D$0L‹p`M…ö„ÇD$$L�%3 M‹¾�M…ÿ„L‰t$ë<@‹h H‹º1ÿH�54»èO—ûÿD‰é‰êH‰ÞH‰Ç1Àè½WýÿM‹M…ÿ„¾I‹GhD‹h AöÅtåL9àtàH‹h(H…ít¬I‹G`H‹|$H‰D$豕ûÿL‹t$…À„§L‰þL‰÷I‹ž°è ûÿHcøèz¡ûÿH‰ÙL‰þL‰÷H‰ÂI‰ÅèŸûÿ…ÀŽ7ƒèL‰l$(‹\$$M�tÅ鱄H‹P‹J…É…‘H‹ " ‹y9:„H‹H‹ �y€„H‹I L9ah„æH‹|$HcóHÁæHt$H�L=HHH‰‹J iÁè B=Â]„*wh=€>„u=�>…*1ÀÆFƒÃf‰F DIƒÅM9îtg‹5ÕI‹E…ö„EÿÿÿH‹H�=O´H‹H‹p1Àè}–ûÿI‹Eé$ÿÿÿ@=’e„ý=}…ÂIƒÅÆFƒÃM9îu£f.„‰\$$L‹l$(L‰ïè ûÿM‹M…ÿ…BþÿÿL‹t$M‹¶ðM…ö…ÚýÿÿHct$$L‹l$ºH� ‡øÿÿH‰óL‰ïè”ûÿ…Û„È�SÿH‹ÒHÇÆÿÿÿÿHÁâI�lL‰êëDHƒÂHƒÀH‰ÎH9Õt.H‹ HÁé H9ñt HƒÀHƒàüHƒÀ€zuÒHƒÂHƒÀH‰ÎH9ÕuÒHƒÀIÇÄÿÿÿÿHƒàüH‰ÇH‰aèTŸûÿ1ÿL‰âL‹t$8H‰ÆH‰XHÇ=ëzHþA¾}I‹FA�çÿÁç HcÿLÿÿP`H‹A€}H�xH‰=u(H‹5 I‹FHþI¿} ÿP`H‹ãH�xH‰=ØIƒÅL9í„H‹5ÔH‰ÚM‹}L+=îL‰ûH�ãðÿÿH9Ó„kÿÿÿ@öÇt&HƒÇë €H‰ÇÆD>ÿH�G@öÇuîH‰=wI‹FH‹@HIƒüÿtJ�t&L)çÿÐI‹FH‹5dH‹@HH5IH‰ßÿÐL‹%=H‹5FI�|$H‰=*éíþÿÿDI‹7¹ H�=ø¹ó¦—Á€Ù„É…ûüÿÿéTýÿÿ@H‹QH‹t$0E1ÉE1ÀH‹|$81ÉèÕ‘ûÿH…À„,ýÿÿ¶P€ú„‡€ú…ýÿÿI‹EH‹Pé«üÿÿf„‹…À„öüÿÿƒø„íüÿÿD1ÿºH�5ò¶‰L$$èÑ’ûÿ‹L$$H‰Ç1À‰ÎèASýÿé¼üÿÿ@ÆFƒÃé¬üÿÿ@ÆFƒÃéœüÿÿ@f�xBi…ŒüÿÿH‹PHH‹@PH‹ŠøH‹H‹�ˆH‹ÐH…À„füÿÿ€x„\üÿÿL9`(…<ÿÿÿéMüÿÿH�5ž”1ÿºè:’ûÿHƒÄHL‰ö[H‰Ç]1ÀA\A]A^A_éŸRýÿ@öÇt*H‹ÊHƒÇë@H‰ÇÆD:ÿH�G@öÇuîH‰=—IƒüÿtH‹šL)çJ�t H‹D$8H‹@ÿPHH‹oH‹ˆH9B8v H‹ kHƒÀÆDÿH;B8rñH‰BHƒÄH[]A\A]A^A_Ã1ÿéÖùÿÿH‹|$H� ¸ôÿÿº1öèL�ûÿH‹ H�xHƒçüH‰=þèñ›ûÿHÇîH‰÷1Àéqÿÿÿ„€uƒ;¸Ãff.„f�AWAVAUATUSHƒì8H‰|$ H‰T$L‰D$H…ÿ„hI‰ôH‰Í@H‹|$ è†�ûÿ…À„[H‹D$ H‹�°H‹˜�H‰T$(H…Û„DöC"tH�KH9Ch„èL‹|$ H‰ÞH‰ÒL‰ÿ誙ûÿHcøè›ûÿH‹L$(H‰ÞL‰ÿH‰ÂH‰D$蚘ûÿ…ÀŽŸH‹L$ƒèH‰$H�DÁI‰ÎI‰ÅëEf„1É1ÒH‰ïèt”ûÿH…Àt"H‹sL‰çècŽûÿH‹L$L‰âI‹>H‹4$H‹D$ÿÐIƒÆM9õt=M‹>I‹H‹H‹sH…íu²L‰çèz“ûÿ…ÀuÙIƒÆH‹L$L‰âH‹4$L‰ÿH‹D$ÿÐM9õuÃH‹$H‹|$è9šûÿH‹[H…Û…ôþÿÿH‹D$ H‹€ðH‰D$ H…À…¢þÿÿHƒÄ8[]A\A]A^A_ÃH�5Ä‘1ÿºè`�ûÿH‹t$ HƒÄ8[H‰Ç]1ÀA\A]A^A_éÃOýÿUH‰õSH‰ûHƒì¶„ÀteH‰ùL�£ÖH¿!ë7€¶ðAöp@u<;@”Æ<,”À@Æt fDºHƒÁ¶„Àt�pÞ@€þ:wÇH£÷ráë¿€H‰î…ÒtY¿"èg’ûÿ¶„Àu2HƒÄH‰î¿"[]éM’ûÿD<\t¾;H‰îHƒÃè5’ûÿ¶„ÀtÎ<"uâH‰î¿\è’ûÿë×HƒÄH‰ß[]éš�ûÿf.„ATI‰Ô1ÒUH‰õ¾SH‰ûH‰ïètXüÿH‰X H‰Çè‰üÿH‹CL‰æH‰ßÿ�À…Àt []A\ÀH�5~¬1ÿºèõ�ûÿ[H‰î]H‰ÇA\1ÀédNýÿ@€t ¸Ã@ATUHc-ÞSH‰ûH‹HÁåH-Ãè¾�ûÿ¾@H‰EHc-¶1ÀI‰ìHÁåH-žH‹}€?@”ÀHÇèŽûÿH…ÀtÆ@H‹CAƒÄD‰%|H‰E¸[]A\ÃfDAWAVAUE1íATI‰ôUH‰ÍSH‰ÓHƒìH‰|$H…ÿtL‹¯ÐM…ít I‹}è'�ûÿI‰ÅMc4$E1ÿL‹#ë„„¥L�{M9÷s.K�7H‰ïHÑëH�›I�ÄH‹pH…öHD0èo�ûÿ…ÀyËI‰ÞL9ûwÒ‹½ü…À„Å‹“…Ò…]M…턺H�5)«L�%+ÑH�Ô@L‰ïèØ�ûÿ…À…�IcT$Lê¶<-„�<.…uHƒÄ1À[]A\A]A^A_ÃH‰ïL�=ZÏèeŒûÿ¹H�5ѪLcàL‰ãë�IcO9Ë|L‰ç�QH)ÏHcÒHïè$Šûÿ…Àt«IƒÇI‹7H…öuÔ@H‹AL�%š{H…Ûu&ë`H‹3ƒøtpH‰ïèh�ûÿ…À„kÿÿÿH‹[H…Ût<‹Cƒøu×M…ítêH‹3L‰ïèÿŠûÿ…À„BÿÿÿH‹3L‰çè\‰ûÿ…À„/ÿÿÿH‹[H…ÛuÄHƒÄ¸[]A\A]A^A_ÀH‹D$H‹8賊ûÿ…Àu�éõþÿÿH‹T$1ÀH‰îH�=y¯H‹ŠÐèÝ‹ûÿM…í…†þÿÿH‹D$H�øÎH‹8è ŽûÿH�5\¬I‰Äë@HƒÃH‹3H…öthL‰ç茎ûÿ…ÀuèéŽþÿÿIƒÄI‹4$H…öt;IcT$éIþÿÿf„H�B¶RöSuëЄÒtÌHƒÀ¶€ú.uðéFþÿÿHƒ|$…hÿÿÿH‹H‹X H‹3H…öuë$€HƒÃH‹3H…ötH‰ïèü�ûÿ…ÀuèéþýÿÿºH�5ç¨H� ÍëfDHƒÃH‹3H…ö„äýÿÿHcSH‰ïè<ˆûÿ…Àuàé¾ýÿÿATA‰ÔUH‰ýSèAˆûÿD‰âH‰ï�Ê H‰ÆH‰Ã誓ûÿH‹EH‰[hH‰ïÇCpÿ�Hc�J‰ H‹ H‰ÑH‹H‰X H‰PÇ@HÇ@H‰Ø[]A\ÃDAWAVAUI‰õATUH‰ýSHƒìX‰T$ …Òt$H‹ƒx‡q‹@H�9´Hc‚HÐÿàÇD$4E1ä¿èÛ“ûÿ‹uH�5ï§H‰ÃH‰Ç1Àèá‘ûÿH‰ßL‰îƒTè¿‹ûÿH‰ÃH‹�H‰ÞH‹x艑ûÿH‰ßè‡ûÿ¾H‰ßèäŒûÿH‹u1ÒH‰ß‹pH‹Cÿ��¿`ÇèW“ûÿºH�5x®H‰ßH‰éèŒþÿÿºH�5Y§H‰ßH‰D$èsþÿÿºH�5I§H‰ßH‰D$(èZþÿÿºH�59§H‰ßI‰ÇèCþÿÿºH�5+§H‰ßH‰D$è*þÿÿH‰D$ H‹E€8@H‹¿„AD‹HH�5ýH�÷H‹8L�™úH� •§H‰ßE…ÉA¹HDðHƒìjèìÿÿAZA[D‹l$ E…ít>H‹bH‹UH‰ßA¹H� Q§‹p…öH�5ˆHDñHƒìjL‹D$ èÆëÿÿ_AXH‹MA¹M‰øH‰ßH‹L�5§L�-LJL‰òH�5X¦‹@…ÀIEÕHƒìjè€ëÿÿ€}#XZt=L‰òH‹MA¹H‰ßH‹ÉH�5¦D‹XE…ÛIEÕHƒìjL‹D$0è?ëÿÿA]A^D‹ìE…Ò…§‹|$ …ÿ„ïLcl$4H‹t$H‰ßL‰êM‰îè'ŒûÿL‰ïèo‘ûÿH‹L$H‰D$@H‰�°AƒýƒAƒæ…ê‹t$4…ö…ÎH‹/ƒx‡³‹@H�{±Hc‚HÐÿàf.„¹º¾H‰ßèYëÿÿH‹|$èßéÿÿL‹t$(ºH‰ßL‰ö芋ûÿ¿èÐ�ûÿ¹1öH‰ßI‰†°º>ÇH‰D$8è ëÿÿL‰÷è’éÿÿºL‰þH‰ßèB‹ûÿ¿èˆ�ûÿI‰‡°€}"I‰ÅÇ„®·EAÆE€fA‰EL‹t$ºH‰ßL‰öèûŠûÿ¿èA�ûÿI‰ÄM‰¦°€}"AÇ$„½·EAÆD$€fA‰$H‹t$ 1ÒH‰ßE1öè´ŠûÿÇD$0‹šH‹5—H‰ßè׈ûÿ‹D$ …À…cH‹T$8H‹t$(1ÉH‰ßA¸葆ûÿ1ÉA¸L‰êL‰þH‰ßè{†ûÿH‹t$1ÉL‰âA¸H‰ßèc†ûÿ€}"„ñH‰ßèQƒûÿHƒÄXH‰Ø[]A\A]A^A_À1ö¹º>H‰ßè´éÿÿH‹|$è:èÿÿ€}"…*ÿÿÿH‹}H…ÿ„C辄ûÿH‹t$ H‰ßƒÀ‰D$0‹L$0‰ÈƒàƒøƒÙÿHcÁ‰L$0I‰ÆH‰Â讉ûÿL‰÷L‰t$HèñŽûÿH‹T$H1öI‰ÆH‹D$ L‰÷L‰°°èÓ…ûÿ‹E…Ày‹EH‹ufA‰I�~H…ö„Ôè_‚ûÿé®þÿÿf.„H‹t$1ÒH‰ßèA‰ûÿHÇD$@é”ýÿÿ‹HH�5½H�·H‹ø L�YöH‰ßA¹…ÉH� J£HDðHƒìjèÐçÿÿ^_D‹D$ E…À…pHƒìH‹UM‰øH‰ßjA¹H� £H�5`¢è—çÿÿD‹H A^XE…Ò„YüÿÿHƒìH‹UM‰øH‰ßjA¹H� Ò¢H�5#¢è[çÿÿAXAYé'üÿÿf�H‰ß¹º>1öè èÿÿL‰ÿè”æÿÿé?ýÿÿ€LcD$0H‹t$ 1ÉL‰òH‰ßèQ„ûÿéóýÿÿ@D‹D$4H‹T$@1ÉH‰ßH‹t$è/„ûÿéýÿÿf.„I‹$H‹L$@H‰‹D$4H�qHƒæøI‹TøH‰ÇH‰TøH)ñH‰ÈI)Ìøƒàøƒø‚Öûÿÿƒàø1҉уÂI‹< H‰<9Ârïé»ûÿÿf„H‹}é´ýÿÿ€H‹ué#þÿÿ€ÇD$4L�%Ñ­é×øÿÿ@ÇD$4 L�%�­é¿øÿÿ@ÇD$4 L�%‘­é§øÿÿ@ÇD$4L�%i­é�øÿÿ@A¶$H‹L$@ˆé!ûÿÿ€1öH‰ß¹ºÅè¤æÿÿ1É1öH‰ßºÆè“æÿÿ¹ºÆH‰ß¾è|æÿÿéûÿÿ€HƒìA¹H� ú H‰ßjH‰ÎL�õH�¡«ètåÿÿ¹ºH‰ß¾è-æÿÿZYéÍúÿÿfDHƒìH‹UH� ¬ H‰ßjL‹D$ A¹H‰Îè)åÿÿXZébýÿÿH�¬¾éH�=ŽŸè2ýÿH�û«¾? H�=vŸè2ýÿf�A‹$H‹L$@‰‹D$4A‹Tü‰TüéúÿÿAWAVAUATUH‰ý¿SHƒìè%‹ûÿ‹¿ H�59ŸH‰ÃH‰Ç1Àè+‰ûÿH‰îH‰ßƒž è ƒûÿH‰ÃH‹ç H‰ÞH‹xèÓˆûÿH‰ßèK~ûÿ¾H‰ßè.„ûÿH‹¿ 1ÒH‰ß‹pH‹Cÿ��¿0ÇJ 衊ûÿºH�5ýÿH‰ßH‰3 èÖõÿÿºH�5¬žH‰ßH‰Åè¿õÿÿºH�5žžH‰ßI‰Æè¨õÿÿH‹áI‰èA¹H‰D$H‹4 H� 0ŸH‰ß‹pH�pÿ…öH�5fÿHDðHƒìjè ãÿÿH‹ H�5»H‹‹A¹L�æñH� ï�‹xH�ØžÇ$…ÿH‰ßHDðèXãÿÿºH‰îH‰ßèh„ûÿ¿讉ûÿD‹çfïÀH‰…°I‰ÄÇ@AXAYE…ÒtÆ@ƹº>1öH‰ßèËãÿÿ¹º>H‰ß¾ è´ãÿÿ¹º>H‰ß¾è�ãÿÿH‰ïè%âÿÿ‹ o…É„ºL‰öH‰ßèǃûÿ¿è ‰ûÿ‹GI‰†°I‰ÇÇ…Ò„çH‹t$ºH‰ßè�ƒûÿ¿èÓˆûÿ‹qH‹5nH‰ßI‰ÅH‹D$L‰¨°AÇEè—�ûÿA¸1ÉL‰âH‰îH‰ßèaûÿ‹Ë…ÀtOA¸1ÉL‰úL‰öH‰ßèAûÿA¸H‹t$L‰êH‰ß1Éè)ûÿH‰ßè!|ûÿHƒÄH‰Ø[]A\A]A^A_ÀE1À1ÉL‰úL‰öH‰ßèõ~ûÿE1Àëµ1ÒL‰öH‰ßèÂûÿé÷þÿÿfDH‹t$1ÒH‰ßè©‚ûÿéÿÿÿ@AWAVAUATUH‰ý¿SHƒìèÕ‡ûÿ‹oH�5é›H‰ÃH‰Ç1ÀèÛ…ûÿH‰îH‰ßƒNè¹ûÿH‰ÃH‹—H‰ÞH‹x胅ûÿH‰ßèûzûÿH‰ß¾èÞ€ûÿH‹o1ÒH‰ß‹pH‹Cÿ��¿(ÇúèQ‡ûÿH‰ßºH�5}›H‰ãè†òÿÿH‰ßºH�5Y›I‰ÇèoòÿÿH‰ßºH�59›I‰ÆèXòÿÿH�5º|H‰ßH‹‡I‰ÄH‹åA¹H� èšM‰à‹@…ÀH�Ì›HDðHƒì1íjèPàÿÿL‰þºH‰ßè`�ûÿ¿覆ûÿL‰öºH‰ßI‰‡°ÇH‰D$è4�ûÿ¿èz†ûÿH‹= I‰†°ÇH‰D$èì{ûÿZL‰æY¨H‰ß@”Å�lHcíH‰êèï€ûÿH‰ïè7†ûÿH‹5ÈI‰„$°H‰ÇI‰ÅèÍyûÿ‹»H‰ßH‹5µAÆD-ÿèò~ûÿL‹T$L‰þH‰ßA¸1ÉL‰Òè·|ûÿL‹ $L‰öH‰ßA¸1ÉL‰Êè�|ûÿI‰èL‰êL‰æH‰ß1ÉèŠ|ûÿH‰ßè‚yûÿHƒÄH‰Ø[]A\A]A^A_ÃAUATI‰üUSHƒìH‹= ëH…ÿ„»L�-üê1íL‰ëë(DH‹{L‰æèd~ûÿ…ÀtHƒÃ(H‹;ƒÅH…ÿ„…L‰æèE~ûÿ…ÀuÑ‹“ê‰D$ ƒøÿt2…ÀHcí•ÀH�T­I�TÕ¶À‰BH‰ ‰eêHƒÄ[]A\A]Ãf�H�L$ E1À1Ò1öL‰çè܃ûÿ‹D$ ƒøÿu±H�œ¥¾­H�=ߘèk+ýÿºH�5”ž1ÿèzûÿL‰æH‰Ç1Àèˆ:ýÿ¿è΂ûÿff.„AVAUATA‰ôUSèð{ûÿH�5jiH‰ÇI‰Æèn�ûÿH…ÀteH‰ÅL�-Pi€¿èN„ûÿH‰ïH‰ÃèÓyûÿH�xè:„ûÿH‰îH‰ÇH‰èÜwûÿL‰î1ÿD‰cH‹ÔH‰ÍH‰Cè �ûÿH‰ÅH…Àu¬[L‰÷]A\A]A^éäƒûÿ@AWAVAUATUSHƒì8H‹£L‹`(M…ä„þH‰t$1ÛH‰<$A€|$uI‹|$è>yûÿH9ÃHBØM‹d$ M…äuÝH…Û„ÄH‹<$HƒÃ!èyûÿƒ=ÌH‰D$„µH‰ßèmƒûÿI‰ÅH�h H‹'L‹x(M…ÿ„@I�]ë@M‹ M…ÿ„ûA€uì‹=rI‹w…ÿ…*H‰ïèÊvûÿ¹p_1ÒH‰Þf‰KH‹=ÍA¸1ÉÇ__imè2{ûÿI‰ÆH…Àt¢€xuœM…ä„sI‹w1ɺL‰çèx|ûÿI‹F0ƒ=ÿAÆGI‰G0I‹F(I‰G(…^ÿÿÿºH�5šœ1ÿèówûÿH‰ÚH‰îH‰Ç1ÀèÃ7ýÿ‹é…À…-ÿÿÿºH�5¡œ1ÿèÂwûÿH‰Ç1Àè88ýÿǺéÿÿÿf„M…ät)L‹D$L‰á1ÒH‰îH‹='èræÿÿL‰çèšxûÿL‰çè‚ûÿHƒÄ8L‰ï[]A\A]A^A_éì�ûÿ@H‰òH�=I–1ÀH�5…¢èðwûÿI‹wéµþÿÿ€HƒÄ8[]A\A]A^A_Ã�¿(è¶�ûÿH‹5¯ÃºH‰ÇI‰Äè€ûÿ…À„H‰ßè��ûÿI‰ÅH�h H‹IL‹x(M…ÿ…"þÿÿé4ÿÿÿ€H‹@(L‹€ðL‰ÇL‰D$è`uûÿL‹D$…À„àA‹€¸I‹ˆ°…ÀŽåýÿÿƒèH�DÁH‰D$(ëfDHƒÁH;L$(„ÁýÿÿH‹H‹T$H‰L$H‹4$H‹@H‰ÇH‰D$ ègtûÿH‹L$…ÀuÆ‹ÿ…Òu+H‹T$ HT$„|ýÿÿL‹D$H‹=¸1ÉH‰îèþäÿÿéáýÿÿH‹t$ H�=ÿ”è¨vûÿH‹L$H‹H‹@H‰D$ ë±1ÿºH�5Ÿ~èÒuûÿH‰Ç1ÀèH6ýÿéÌþÿÿH�5x1ÿºL‰$è¬uûÿL‹$HƒÄ8[H‰Ç]1ÀA\L‰ÆA]A^A_é 6ýÿff.„f�AWH�5†WAVAUATI‰üUSHƒìè£|ûÿH‰ÃH…À„ŸH‹PþH…À„ÇHƒ8tmD‹HH‰ÙE…É…¹º¾H�=1”èû}ûÿH‹þºH‰ÞH‹8èÄåÿÿH‹�H‹€øHƒ¸…èH‰Þ¿ è wûÿH‹ÔýHƒxtEH‰Ùº ¾H�=Ù“è”}ûÿH‹­ýºH‰ÞH‹xè\åÿÿH‰Þ¿ è¿vûÿH‹ˆý‹Hl‹Phƒùÿ…áƒúÿtH�5©“H‰ß1Àè3xûÿH‹\ýƒx ÿu ‹P(ƒúÿ„òH‰Þ¿ èmvûÿH‹6ý‹p$‹P ƒþÿ…σúÿtH�5x“H‰ß1ÀèáwûÿH‹ ý‹H,‹p(ƒùÿ„̉òH‰ßH�5\“1Àè¸wûÿH‹áüD‹@0E…À�Õ‹p@…ö�ñ‹PX…Ò�žH‰ßè†sûÿƒøÿ„uHƒÄ[]A\A]A^A_ÃfDH�5¾’H‰ß1ÀèWwûÿH‹€üéÿÿÿº¾H�=o’èB|ûÿéBþÿÿD‰ñH‰ßH�5”’1ÀèwûÿH‹>ü‹H,‹p(ƒùÿ…4ÿÿÿƒþÿ„Eÿÿÿ‰òH‰ßH�5›’1ÀèãvûÿH‹ üD‹@0E…ÀŽ+ÿÿÿH�=ˆ’H‰Ùº ¾èÆ{ûÿH‹ßû‹x0…ÿŽÿÿÿ1íL�-Í`ëHf„€x… €x…4€x…[H‰Þ¿ HƒÅèÁtûÿH‹Šû9h0Ž­þÿÿH‰Ùº¾L‰ïèL{ûÿH‹eûH�DmH‰ÞL�4ÅH‹R8H‹<Â1ÒèãÿÿH‹?ûH‹H8LñHƒyH‰ÈtDH‰Ùº¾H�=¶‘èõzûÿH‹û1ÒH‰ÞH‹@8J‹|0è»âÿÿH‹ôúH‹H8LñH‰È€x„ ÿÿÿH‰Ùº¾H�=p‘è§zûÿH‹ÀúH‹H8LñH‰È€x„öþÿÿH‰Ùº¾H�=B‘èszûÿH‹ŒúH‹H8LñH‰È€x„ÌþÿÿH‰Ùº¾H�=‘è?zûÿH‹XúLp8L‰ð€x„¥þÿÿH‰Ùº¾H�=í�èzûÿé‡þÿÿf„º H‰Ù¾H�=ý�èçyûÿH‹ú‹BX…ÀŽ7ýÿÿE1íL�5í^ëcf„1ÒH‰Þè–áÿÿHƒ}t'º¾H�=º�H‰Ùè–yûÿH‹}1ÒH‰ÞèháÿÿH‰Þ¿ IƒÅèÇrûÿH‹�ùD9jXŽÈüÿÿH‹R`K�D­H‰ÙL‰÷¾H�,ºèDyûÿL‹}M…ÿt;H‹uH…öt L‰ÿèêsûÿ…Àt&1ÒH‰ÞL‰ÿèùàÿÿH‰Ùº¾H�=òmèyûÿH‹E1ÒH‰ÞH�xèÎàÿÿ¿.H‰Þè1rûÿH‹}H…ÿ…ÿÿÿ‹U H�5ùlH‰ß1Àè°sûÿéÿÿÿH‰Ùº¾H�=†�èŸxûÿH‹¸ø‹H@…ÉŽäûÿÿE1íL�5¥]ëA�€}!…Æ€}"…߀}#…øH‰Þ¿ IƒÅè¡qûÿH‹jøD9h@Ž—ûÿÿH‹HHK�T­¾L‰÷H�,ÑH‰ÙºèxûÿH‹}1ÒH‰ÞèðßÿÿH‹}H…ÿtH‹uè¾rûÿ…À…®‹UƒúÿtH�5ÒŽH‰ß1ÀèÍrûÿ€} „SÿÿÿH‰Ùº¾H�=¯Žèºwûÿ€}!„:ÿÿÿH‰Ùº ¾H�=•Žè—wûÿ€}"„!ÿÿÿH‰Ùº¾H�=|Žètwûÿ€}#„ÿÿÿH‰Ùº¾H�=aŽèQwûÿéêþÿÿ@H‰Ùº¾H�=!lè/wûÿH‹}1ÒH‰Þèßÿÿé&ÿÿÿ@H�5·{1ÿºè%nûÿHƒÄL‰æ[H‰Ç]1ÀA\A]A^A_éŠ.ýÿf.„H‰Ùº¾H�=�èÇvûÿH‹púH�5s\H‰ßH‹€øH‹�1Àè‘qûÿéÔøÿÿ@ºH�5\“1ÿè¥mûÿL‰æH‰Ç1Àè.ýÿH‹‘öH…À…Aøÿÿ„1ÿºH�5s�èmmûÿH‰ßH‰Æ1Àè0qûÿé�ùÿÿ‹p$ƒþÿ…ôùÿÿ‹H,ƒùÿ„_ùÿÿé@ùÿÿff.„AWM‰ÇAVAUI‰ÕATI‰üUH‰ÍSHƒìXH‹‹öL�t$0H‰t$H�51�H‹L‰÷H‹�B‰òõ1Àè£uûÿL‰ð‹HƒÀ�‘ÿþþþ÷Ñ!Ê� €€tè‰ÑÁé÷€€DÑH�HHDÁ‰Ö@ÖH‰êHƒØL)ðH)‰Áƒøƒå¨…½ …É…%H‹CH�L$(M‹L$H‰ÞHÇD$(L‹´õH�=�øH‹€hQ¹jjjÿ�8H‹D$HH‹@H‰D$(HƒÄ ƒ=ù„A¹k_1É1ÒA¸H¸__nm_thnfD‰MþH�uöH‰EöH‹=_øèÒnûÿH…Àt €x„¶¿H‹gøèrvûÿ‹ õH�5ŒI‰ÆH‰Ç1ÀèxtûÿH‰ÞL‰÷ƒëôèVnûÿH‰ÃH‹4õH‰ÞH‹xè tûÿH‰ßè˜iûÿ¾H‰ßè{oûÿH‹ õ1ÒH‰ß‹pH‹Cÿ��¿Ç—ôèîuûÿºH�5ŠH‰ßH‰€ôè#áÿÿHƒìH‰êH‰ßjI‰ÀA¹I‰ÆH� ¯ŠH�5U‹è8ÏÿÿA¹H‰êH‰ßL��ÝH� ‰ŠÇ$H�5͉è ÏÿÿºL‰öH‰ßèpûÿ¿èauûÿ¹1öH‰ßI‰†°º>HÇH‰D$(èšÏÿÿL‰÷è"Îÿÿ‹ÐóH‹5ÍóH‰ßè nûÿL‹L$(1ÉL‰öA¸H‰ßL‰ÊèÒkûÿH‰ßèÊhûÿH‹3H‰ßH��öèøÛÿÿH‹ÑöÇ'ø�`Dÿïÿÿ_AXM…í„ä‹ ÷ƒø„Õƒø„øI‹$L‹|$º1ÿI‹l$H�5�H‹I‹ŸðL‹hèÝiûÿH‰éL‰úH‰ÞM‰èH‰Ç1ÀèG*ýÿHƒÄX[]A\A]A^A_ÄH‹L$0H‰ ‰ÁI‹tøH‰t øH�rH‰ÑHƒæøH)ñI)ÎÁƒáøƒù‚øüÿÿƒáø1À‰ÇƒÀM‹>L‰>9ÈrïéÝüÿÿf�A¶ˆöÁ„ÌüÿÿA·Dþf‰D þé¼üÿÿ�¿H‹ÄõèÏsûÿ‹iòH�5u‰I‰ÆH‰Ç1ÀèÕqûÿH‰ÞL‰÷ƒHòè³kûÿH‰ÃH‹‘òH‰ÞH‹xè}qûÿH‰ßèõfûÿ¾H‰ßèØlûÿH‹iò1ÒH‰ß‹pH‹Cÿ��¿0ÇôñèKsûÿºH�5§èH‰ßH‰Ýñè€ÞÿÿHƒìH‰êH‰ßjA¹L�ÛH� ˆH�5±ˆI‰Æè‘ÌÿÿH‹òñH‰ßH�ë‡H�5¢hA¹L�ÔÚ‹RH� Ú†Ç$…ÒL‰úHDðèMÌÿÿH�±‡H‰ßH‹T$A¹L�™ÚH‰ÁH‰ÆÇ$èÌÿÿºL‰öH‰ßè/mûÿ¿èurûÿfïÀ¹1öI‰†°º>H‰ßI‰ÇÇ@è©Ìÿÿ¹º>H‰ß¾ è’Ìÿÿ¹º>H‰ß¾è{ÌÿÿL‰÷èËÿÿ‹±ðH‹5®ðH‰ßèîjûÿ1ÉA¸L‰úL‰öH‰ßè¸hûÿH‰ßè°eûÿH‹3H�vóH‰ßèÞØÿÿY^M…í„#‹ ôƒø…ÿüÿÿ‹òï…À…I‹D$¿H‹…óD‹p èŒqûÿ‹&ðH�5X‡H‰ÇI‰Ä1Àè’oûÿH‰ÞL‰çƒðèpiûÿH‰ÃH‹NðH‰ÞH‹xè:oûÿH‰ßè²dûÿ¾H‰ßè•jûÿH‹&ð1ÒH‰ß‹pH‹Cÿ��ƒ=aó¿uƒ=ðHÿƒçHƒÇÇ—ïèîpûÿºH�5ž†H‰ßH‰€ïè#ÜÿÿHƒìH‰ßH� À…jH‹T$A¹H‰ÎL�¦ØI‰Äè6Êÿÿƒ=ëòA[A_…D‹ŽïE…Ò…MHƒìA¹H‰êH‰ßjL�dØH� `…A½H�5¬„ÇNïèÙÉÿÿºL‰æH‰ßèéjûÿ¿è/pûÿfïÀ¹H‰ßI‰„$°º>¾H‰ÅHÇ@è^Êÿÿ¹º>H‰ß¾ èGÊÿÿH‹CH�uL‰÷ÿPHH‹CH�u¿ÿPHAXAYL‰çè­Èÿÿ‹[îH‹5XîH‰ßè˜hûÿM‰è铃=åñ„ßýÿÿHƒÄX[]A\A]A^A_Ã@ºL‰æH‰ßè jûÿ¿èfoûÿL‰ïI‰„$°H‰ÅHÇH‹CH‰îÿPH¹º>H‰ß¾è�ÉÿÿL‰çèÈÿÿ‹ÆíH‹5ÃíH‰ßèhûÿA¸1ÉH‰êL‰æH‰ßèÍeûÿH‰ßèÅbûÿH‹3H�‹ðH‰ßèóÕÿÿ‹áí�P‰Øí…À…9ÿÿÿ¿H‹-°ðè»nûÿ‹UíH�5†„H‰ÃH‰Ç1ÀèÁlûÿH‰îH‰ßƒ4íèŸfûÿH‰ÃH‹}íH‰ÞH‹xèilûÿH‰ßèáaûÿH‰ß¾èÄgûÿH‹Uí1ÒH‰ß‹pH‹Cÿ��¿Çàìè7nûÿH‰ßºH�5?åH‰ÉìèlÙÿÿH��ƒL�ÖH‰ßH‰ÅH‹ùì‹HH�rƒ…ÉH� é‚HDÐHƒìE1ÉH‰ÎjèiÇÿÿºH‰îH‰ßèyhûÿ¾¿èmûÿ¹1öH‰ßH‰…°º>I‰ÄèüÇÿÿH‰ïè„Æÿÿ‹2ìH‹5/ìH‰ßèofûÿL‰âH‰î1ÉA¸H‰ßè9dûÿH‰ßè1aûÿH‹3H‰ßH�ôîè_Ôÿÿ^_HƒÄX[]A\A]A^A_ÃfDHƒìA¹H‰êH‰ßjL�ÕH� ‚A½ H�5_�è–Æÿÿº L‰æH‰ßè¦gûÿ¿ èìlûÿ¹º>H‰ßI‰„$°¾H‰ÅHÇÇ@èÇÿÿº>1öH‰ß¹èÇÿÿH‹CH�uL‰÷ÿPHXZéÎüÿÿH‹t$D‰êH�=¹‡1ÀèŠbûÿéÏúÿÿDA‹‰A‹Dü‰D üé8õÿÿff.„f�AWAVAUI‰ýATUSHƒì8H‹?H‰T$H…ÿHD=üêH‰t$H‰=¸êè‹cûÿH� ô¨¶H‰šê„ÒtfDöQŒuÆ_HƒÀ¶„ÒuìH‹\$H‰ßè¿fûÿ1öH‰ßèÅgûÿI‰ÆH…À„²‹ {ï…É… ¾L‰÷E1äè eûÿA€NG€L‰÷è^àÿÿH‰D$ H‹D$H‹X`H…Û„•€H‹-1êH…ítr@1Òƒ}¸uH‹3H‹}è`ûÿ…À”•ÀH‹mH…ít„ÀuÒ„ÒtÿÿÿL‹L$I‰ÀL‰éL‰òH�5ê{1ÀIƒÇIƒÄ(H�=1xètQûÿL9<$…ÿÿÿL‹|$0L‰ÿèM[ûÿH‹t$P1ÒH‰ßH‰Åè[ûÿH‰ïH‰ÚL‰þèýYûÿH‹=†ÙH‰èH+D$HH‰$H…ÿ„á¶E!¶U ¶u ¶MÁâD¶}¶]ˆD$`¶E"Ö¶UÁáD¶eD¶uˆD$k¶E#ÁâòD¶m ˆD$l¶EˆD$H¶EˆD$P¶EˆD$j¶EˆD$\� H$H‰ÆH‰D$0èÐ1ÿÿH…À„‹=ÅØ…ÿ…)½éµüÿÿ€1ÿºH�5òvèµOûÿL‰æH‰Ç1Àè(ýÿé‰üÿÿ¹L‰öH�=Euó¦—À„À…ÑýÿÿD‹_ØJ�D-L‰l$8H‰D$@E…À„²ýÿÿéoþÿÿfDºH�5(p1ÿ1íèCOûÿL‰æH‰Ç1Àè¶ýÿéüÿÿ�H‹L$H‹D$M‰÷M‰åH‹|$0L‹d$L)øH‰ÊL‹t$I‰ÇHúL‰èH)ÈI9ÕHCÇH‰D$0I�H‰D$PéÚüÿÿfDÁãAÁä¶l$`‹T$lAßAÁæH‹ $HƒìC�'ÁåÁâE1ÉDðAíH‰ËE1ÀH‰D$I‰Æ¶D$sD‰öÁàDè�<¶D$X¶T$PHûH‰|$hH‹=v×Áà¶D$rÁàЋT$dÁâ�,¶C¶Áà¶CÁàжSjÁâÂHÊH‹L$@èÐDÿÿY^…À‰®H�D$tE1íH‰D$HE…ö…¢é2þÿÿA¿L9t$†HƒìE1ÉE1ÀD‰éÿt$PH‹=ßÖL‰æH‹T$@èò/ÿÿAZA[‹T$t…ÒuD‰x$D‹ ŸÖE…Ét5E…ÿH��nM‰ðL‰áL� :mH‹T$0H�5£xLEÈH�=u1Àè1NûÿIƒÅHƒÃL9l$„•ýÿÿ¶C¶¹H�=HlÁà¶CÁàжSÁâD�$L$$L‰æó¦—À„Àt¯H‰ÙH+L$`ÇD$t¶D)¶)Áà¶D)ÁàжT)ÁâD�4L9t$†éþÿÿL;t$ rA¿L;t$(‚âþÿÿL;t$8“ÀE1ÛL;t$@A’ÃA!ÃE‰ßéÃþÿÿf.„H‹t$0H�=“m1ÀèMMûÿé¿üÿÿ„èk(ÿÿH‰ÇH‰�Õé üÿÿ@E…ö„–üÿÿL‹l$0H,$E1ä‰D$0ëTDL9|$†ªHƒìE1ÉL‰éL‰òjèyDÿÿD‹ÕÇ@$^_E…À…IƒÄHƒÃHƒÅL9d$„0üÿÿ¶E¶UE‰àH‹=÷ÔÁà¶EÁàжUÁâD�<‹D$0¶B�4 ¶CÁà¶CÁàжSÁâD�H‹$N�4L9|$†KÿÿÿL;|$ r L;|$(‚DÿÿÿL;|$8r L;|$@‚2ÿÿÿHƒìL‰éL‰òE1Éjè«Cÿÿ‹ IÔÇ@$XZ…É„4ÿÿÿL� èjM‰øL‰ñL‰ê1ÀH�5KvH�=ÄrèßKûÿé ÿÿÿf.„L� îkëÊHÇD$@HÇD$(HÇD$HÇD$PHÇD$8HÇD$ HÇD$éúÿÿ‹5ƺ…öxFHƒìH‹GH‹€hÿPx…ÀtHƒÄÃ1ÿºH�5Rrè•JûÿHƒÄH‰Ç1Àé ýÿ€Ãff.„@AWI‰ÿAVAUI‰õATUSHƒì8H‹GH‹8èPÏÿÿL‰ÿèxÿÿÿHƒ=@Ó„R I‹]`L�54kH…Ûtgf.„L‰öH‰ßèeLûÿH…ÀtAL‹`8H‰$L‰çè TûÿH‹4$M‰à1ÉH‰ÂH‰ßH‰Åè JûÿH‹=âÒD‰âH‰îèwBÿÿH‰ïè_TûÿH‹›ðH…Ûu£H‹¼ÒH‹XpH…Ûu ëA�H‹H…Ût8H‹sI‹}(E1À1É1ÒètLûÿH…Àt߀xuÙH‹@(‹S9sÎH‹‰H…ÛuÌ@A¶E‹ aÒ¨…íH‹-VÒ‹u@I‰î…ö……É„5‹2Ò…Ò…'I‹]`H…Û„oL‰|$H‰ßèÈGûÿ…À„@ ‹ƒ¸L‹“°…ÀŽ0ƒèM‰×M�tÂH�D$,H‰$€I‹H� n»H9H „ô‹PöÂu…Ò…äH‹=ÕÕH…ÿtH‹pègMûÿ…À…ÇI‹H‹h¹H�=€gH‰îó¦—À„À„¢H‰ïè¢HûÿH�xè SûÿH‰éH�SgH�5ÉI‰ÄH‰Ç1Àè QûÿI‹}(E1À1É1ÒL‰æèKûÿL‰çH‰D$è»RûÿH‹D$H…Àt€xtCH‹¬ÑD‹`E…ät 1À€}_”ÀHÅH‹5øÐH‰éH‰ßH�VHHƒÆ@蕺ÿÿ…À…EDIƒÇM9þ…ëþÿÿH‹›ðH…Û…›þÿÿL‹|$H‹-¯Ð‹E@I‰î…À„‘D‹ŽÐE…Ò„i1ÛÇ$…ÀŽXL‰l$I‹FHL�$›J‹,àD¶mA€ý?tV¾@H‰ïèôGûÿH…ÀtD1ÿA€ý@@”ÇHïèMIûÿ¾@H‰ÇH‰Åè=HûÿH…À„” ÆL‹5ÐÇ$I‹FHJ‰,àIcv@HƒÃ9Þ‡D‹ $L‹l$E…É…Ý D‹ÖÏE…À„-…öŽÅ H�D$,E1äH‰$ë0€‹|$,L‹5µÏ…ÿ…ÚDA‹v@IƒÄD9æŽçI‹VHK�¤¹H�=weH�,ÅH‹ÂH‰Þó¦—À„ÀtÁ¾@H‰ßèüFûÿH…Àt¯ÇD$,1ÿ€;@@”ÇHßèNHûÿ¾@H‰ÇH‰ÃèÎFûÿH‹5'Ï1ÿH‰ÙÆH�VHHƒÆ@è¸ÿÿ…À„JÿÿÿL‹ $E1À¹ÿÿÿÿH‰ÞH‹=ôÎH‹GHH‹T(è&$ÿÿ‹|$,L‹5ÛÎ…ÿ„+ÿÿÿH‰ßIƒÄèWPûÿL‹5ÀÎA‹v@D9æ�ÿÿÿI‹FH…öŽ” L‰<$I‰Ä1Û1íL‰l$M‰÷I‰ÅéËf„M‹uI‹uØL‰÷èIûÿ…À…²HcÃH�€M�|ÄØ‹BÎE‹WAƒúÿ„¨A‹Mƒùÿ„›A9Ê„’…À…ÒA‰OA¶E AG A¶E!AG!A¶E"AG"A¶E#AG#M…ötL‰÷è…OûÿI‹}H…ÿtèwOûÿI‹}L‹=ÜÍH…ÿt èbOûÿL‹=Ë̓ÅIƒÅ(A;o@}B…í…6ÿÿÿ9ët&HcÃóAoEH�€I�ÄóAoMHI‹M H‰H ƒÃƒÅIƒÅ(A;o@|¾M‰þHcûL‹l$L‹<$HÁçA‰^@èOûÿH‰éÍH‹RÍHcx@HÁçèåNûÿH‹->Í1öH‰ÇH‰ºÍHcU@HÁâèÅEûÿ‹E@Ç€ÍÇzÍÇ„ÍÇvÍÇhÍ…ÀŽÔE1öL‰<$é‚@H‹-Ñ̃JÍH]H€{"uƒ5ÍH‹P(H‹6ÍJ�ðA€ÿtH‹RH‰‹Cƒøÿt#;÷Ì~‰ïÌ;íÌ}‰å̃êÌL‰çIƒÆèöMûÿ‹E@D9ðŽBH‹EHK�¶HÁãH‹lH‰ïèñTüÿH‰ïèiCûÿH�xèÐMûÿI‰ÄH‹¾Ì‹p…ö„ã€}@„ÙAÆ$_I�|$H‰îèOAûÿL‰çèEûÿH‰ÇèŸTüÿI‹}(1É1ÒA¸L‰æè¹EûÿH…À„PD¶xA�Wý�âý„ãþÿÿ¾.H‰ïèNCûÿH…À„…H‹-žËƒÌH]H€{"uƒÌ‹CÆC$ƒøÿ…áþÿÿéÿþÿÿ�…ÉuL‹5eËA‹F@…À…¸úÿÿD‹5JËE…ö…“úÿÿéùÿÿ@…ÉuãD‹)ËA‹F@E…Ò…—úÿÿA‹v@é2ûÿÿ€L‹<$…Àu A¶E¨„YH‹EH…À„NH‰_Ë‹ aË‹=cË…Ét‹AË9ú�™Ç3˸‰=$Ë)ǃlj=5ËHcÿHÁçèELûÿ‹#ËH‰øÊ…Ò~ƒêH�T�@ÇÿÿÿÿHƒÀH9ÂuñL‹5rÊ‹ØÊ1íA‹V@‰$‰Ã…ÒŽ)M‹nHE1ä1íM‰ïéÖ„D‹FAƒøÿ„‚E‰ÅD+,$H‹ „ÊD‰D$McíIÁåLéHcƒøÿtZL‹6H�€º1ÿH�5jD‰L$M‹<Çèê@ûÿD‹D$L‰òL‰ùH‰Ç1ÀD‰ÆèRýÿ‹8ÊD‹L$H‹ ÊL‹5¹É‰$LéD‰ M‹~HƒÅLûH‹{H…ÿteèÈ@ûÿÅ€{$t H‹{è·@ûÿ�lA‹F@IƒÄD9àŽ*H‹óÉK�¤E‰áHÁãJƒ<àI�4…ÿÿÿ€~$…ÿÿÿM‹~HLûë¨fDH‹;ë–‹$D‹%‘ÉA�üÿÿ�ûÿÿ~&1ÿH�5_iºè@ûÿA9܉ÞAMôH‰Ç1ÀèrýÿH‹=[É‹aÉè@ûÿ‹^É¿�T �S�TUHcÒH�DH‰kÉè¦ÿÿH‹=‡ÉèÚôÿÿHƒÄ8[]A\A]A^A_ÃL‹ $H‹=�ÈE1À1Ò¹ÿÿÿÿH‰îÇD$,è³ÿÿD‹\$,E…Û…�÷ÿÿI‹‹RÁêƒòƒâˆP#év÷ÿÿfD…ÀŽ ÿÿÿHc4$A¸I�O1ÀL‹±ÈL‹ ‚ÈI‰ó‰óI)ð넃9ÿt+HƒÀHƒÁ(A9F@ŽÉþÿÿIƒ<‰Çuà€y t߃9ÿuÚD‰ÚD)ÚHcÒI�4‘ƒ>ÿtHcÓLÂI�‘DH‰ÖHƒÂƒÃƒzüÿuð‰>‰ëŸf.„…À…ÀA‹Mƒùÿ…aùÿÿé`ùÿÿfD¾.H‰ïè?ûÿH…À…ÅûÿÿºH�5Ng1ÿèW>ûÿH‰îH‰Ç1ÀèÊþüÿH‹-CÇéÌúÿÿfDH‰îL‰çè}<ûÿé9ûÿÿ„ºH�5œfA€ÿt°H�5¿f1ÿè>ûÿH‰îA¶×¹H‰Ç1ÀèjþüÿH‹-ãÆélúÿÿfDM‹7ºH�5)f1ÿèÂ=ûÿH‰ÇL‰ö1Àè5þüÿM‹uéÿÿÿ@I‹¶H‰ DŽɄ¤ûÿÿH‰Ç1öA¸I¹ fDƒé/HƒÀ€ù-wL‰ÊHÓêH÷ÒƒâHDøADð¶„ÉuÙ@„ö„YûÿÿH‰=±ÆéMûÿÿ@‰Ñ‹œÆ)ù‰×ƒÁ9Á�eûÿÿ‰ ‡Æ‰ÈéXûÿÿ@I‹~HH� e ÿÿº(èÛ;ûÿL‹5ôÅéÇúÿÿ€èÃÿÿH‰ÜÅé�òÿÿ€ºH�5?1ÿL‹|$è¸<ûÿH‰ÞH‰Ç1Àè+ýüÿH‹-¤Å‹E@…À…–úÿÿé„úÿÿ@H‹‰Å1ÿºH�5kdH‹@HN‹4àèn<ûÿH‰ÇL‰ö1Àèáüüÿé;õÿÿ@º1ÿM‹7D‰T$H�5bd‰L$è9<ûÿD‹T$‹L$L‰öH‰Ç1ÀD‰Òè üüÿM‹uéýÿÿ€1ÿ1Ûéž÷ÿÿ€SH‹GH‰ûH‹8èðÀÿÿH‰ßèñÿÿ1ÿèA¢ÿÿH‹=²Å[éñÿÿ@AWI‰÷AVAUATUSH‰ûHƒì8H‹GH‰t$H‹8è«ÀÿÿH‰ßèÓðÿÿH‹ƒøL‰þH‰ßH‹€H‰hÅès£ÿÿH‹$ÅH…Ò…3H‹=ÅèFûÿ‹ åÄH‹ Å1öI‰ÆH‰ÅH�@(D‹-¿Ä�,�L‰÷H‰$HcíF�$­EíHÅMcäMcíH‰l$Iìè±<ûÿH‹ƒøMå‹°Œ…ö…‘H‹òÃHcxhH‹Cƒÿÿt/I�vÿP`H‹—ÄH�p H‹ÌÃHcxlH‹CÿP`H‹CL‹5vÄH‹ÄI�v H‹RhH‹z(L‰êH+=yÄL)òH×ÿPHH‹5ùÃL‰ïE1íèn:ûÿHc=ãÃL�pH‹,ÄH�pH‹CÿPHH‹ÄHc=×ÃH�pH‹CÿPHH‹ÄHc=¶ÃH�pH‹CÿPHH‹øÃH‹áÃH‹ $H‹RhH�pH)ÁH‹CH‹z(H+=ãÃHÏÿPHH‹ÆÃH‹¯ÃH‹L$H‹RhH�p H)ÁH‹CH‹z(H+=°ÃHÏÿPHH‹“ÃH‹|ÃL‰áH‹RhH)ÁH�p$H‹CH‹z(H+=ÃHÏÿPHH‹’‹J@…ÉuéæfDAÆ_H‹@HI�H‹t(èº7ûÿH‹D$1É1ÒA¸L‰þH‹x(è/<ûÿH…Àt€xuH‹P0H‹ÉÂJ‰èL‰ÿIƒÅè¹CûÿH‹"‹B@D9èŽÖK�L­H‹BHH�,ÍH‹|(è+9ûÿH�xè’CûÿI‰ÇH‹€Â‹@…ÀH‹ÜÁt"H‹PHH‹t*€>@…HÿÿÿL‰ÿè7ûÿéQÿÿÿH‹@HL‰ÿH‹t(è÷6ûÿé8ÿÿÿf�H‹D$¶ƒà<uH‹ƒøÇ€€H‹IÂH‹2ÂH‰�°H‹,ÂH‹ÂH‰�°HƒÄ8[]A\A]A^A_À…À~œ1íÇD$é7D€x$„VH‹çÁD‰î+5zÁÁæH‹@hHcöH4$H‹x(L‰ðH+=ÒÁH+«ÁHÇH‹CÿPHH‹ÚÀL‰÷H‹BHH‰T$ J‹t8è6ûÿH‹T$ L‰þHrHH‰T$(H‹~H‰t$ èÕ7ûÿH‹t$ H‹T$(M�t€~"…‰H‹FH…ÀHDH‹t$H‰D$ H‹@ÁH‹@hH‹x(L‰ðH+=>ÁH+ÁHÇH‹CÿPHH‹t$ L‰÷HƒD$è*7ûÿD+-ŸÀL‰æIƒÄL�pH‹CIcýÿP`H‹À‹L$H‹BHB‰L8�A‰D$HƒÅ9j@ŽVþÿÿL�|­H‹BHIÁçLøD‹hAƒýÿ…°þÿÿH‹Ñ¿ëÌ€H‹IÀH‹èH…ÀtàH‹AÀD‰î+5ÀÁæH‹<êH+=zÀHcöHx`H‹@hH4$Hx(H‹CÿPHH‹y¿H‹rHLþé×þÿÿDH‹C1ÿL‹¸�èæ:ûÿI�vH‰ÇAÿ×L‹5ÀéGûÿÿH‹5ÀH‹= Àè};ûÿè8Cüÿ1ÿ¾èüDüÿèWàüÿ¿è=-üÿé•úÿÿ„UH‰õSH‰ûHƒìH‹GH‹8èèºÿÿH‰ßèëÿÿH‹ƒøH‰îH‰ßH‹€H‰¥¿è°�ÿÿH‹a¿H…Òu$H‹u¿H‹^¿H‰�°HƒÄ[]ÄH‹5Q¿H‹=Z¿èÍ:ûÿèˆBüÿ1ÿ¾èLDüÿè§ßüÿ¿è�,üÿë§ff.„¶WD1Àƒâ€útÃ�H‹—ø‹‚€…Àtí‹’€1À…Ò•ÀÃ�H¸#Eg‰«ÍïHÇGH‰H¸þܺ˜vT2H‰GÇGÃDH‹H‹WH‰ðH‰H‰VÃff.„H‰ðAWHƒàüAVAUATUSH‰ûD‹ZH‰×H� ‹D‹R‰D$è‹B H‰T$ø‰D$à‰ðB‰BH‰òHÁê H‰L$ðH9ðWH9˃òE‰×DD‹3‹|$à‹D$è‹sD‹C D‹SA�”x¤j׉ø�Œ>V·Çè‰t$¼D1ø‹kD‹kD‰T$ÌD!ØD‹c$D‰D$Ä1øC�¼îνÁD‹C,ÐD‰ÚD‰d$ÔÁÀD1úD‰D$ÜDØ!ÂA‰ÁD1úE1ÙÊ‹KÁ ÂB�´9Ûp $‰L$ÀD‰É!ÑA‰ÁD1ÙA1ÑñD‰ÎD‹KÁÉÑD‰L$È!Î1ÆþA�¼¯|õ‰ÐD‹K<ÁÎ 1ÈÎ!ð1ÐøA�¼*ƇG‰ÊA‰êÁÀ1òD‰T$äð!Â1Êú�¼ F0¨‰õ1ÅÁ ‰é‰Å!Ñ1Õ1ñùA�¼5•Fý‰î‹k ÁÉщl$Ð!Î1Æþ�¼ؘ€i‰Ð‹k0ÁÎ 1ÈÎ!ð1ÐøA�¼¯÷D‹‰ÊD‹c8ÁÀ1òð!Â1Êú‹{(Á ‰|$Ø�¼±[ÿÿ‰ñÂ1Á!Ñ1ñùA�¼0¾×\‰‰ÆD‹C4ÁÉ1ÖHƒÃ@Ñ!Î1Æþ�¼"�k‰ÐÁÎ 1ÈÎ!ð1ÐøA�¼“q˜ý‰ÊÁÀ1òð!Â1ÊúA�¼ ŽCy¦‰ñÁ 1ÁÂ!Ñ1ñùA�¼1!´I‰ÆÁÉ1ÖÑ!Î1Æþ‹|$¼ÁÎ Î�¼b%ö‰È1ð!Ð1ÈøA�¼@³@À‰òÁÀð1Â!Ê1òú‹|$ÜÁ Â�¼QZ^&‰Á1Ñ!ñ1ÁùA�¼6ªÇ¶é‰ÖÁÁÑ1Î!Æ1Öþ‹|$ÌÁÎ Î�¼]/Ö‰È1ð!Ð1Èø‹|$ØÁÀð�¼SD‰ò1Â!Ê1òúA�¼ �æ¡Ø‰ÁÁ Â1Ñ!ñ1Áù‹|$ÈD‹T$ÔÁÁÑ�¼7ÈûÓç‰Ö1Î!Æ1ÖþA�¼æÍá!‰ÈD‹T$ÐÁÎ Î1ð!Ð1ÈøA�¼Ö7ÉòÁÀð1Â!Ê1òú‹|$ÄÁ Â�¼‡ Õô‰Á1Ñ!ñA�´2íZEA‰Ò1ÁùÁÁÑA1ÊD‰×!Ç1×÷A�´é㩉ÈÁÏ Ï1øD�”=ŠL*�!ÐD‰T$ì1Èð‹t$ÀÁÀø�´ø£ïü‰ú1Â!ÊA�Œ Ùog1úò‰ÆÁ Â1Ö!þ1ÆΉÑÁÆÖ1ñA‰ÊA!ÂD‰×D‹T$Ì1×|$ìÁÏ A�„B9úÿ÷1ùÁ‹D$ÐÁÁ�„�öq‡‰òù1ú1Ê‹D$ÜÁ �„0"a�m‰þÊ1ÎA�¼< 8åý1ÖƉÈÁÆ1ÐÖ1ðA‰òø‹|$¼ÁÈ �¼D꾤‰Ñð1ñA1ÂA�´5`K»ö1Áù‹|$ÈÁÁÁ�”©ÏÞKD‰×1Ï׉ÂÁÇ 1ÊÏ1úò‹t$ØÁÂ�„p¼¿¾‰Îú1þ1ÖÆA�„Æ~›(‰ùÁÎ 1ÑA�¼>ú'¡êÖ1ñA‰òÁ‰ÐÁÁ1ðñ1ÈA1Êø‹|$ÄÁÀ È�”…0ïÔD‰×1Ç׋T$äÁÇ�”2ˆ‰ÎÇ1Æ1þÖ‹T$ÔÁÎ �Œ 9ÐÔÙ‰Âþ1ú�„å™ÛæA‰ò1òʉùÁÂò1ñ1ÑA1ÒÁA�„9ø|¢D‰×D‹T$ÌÁÁ Ñ1ÏÇ‹D$ÀÁÇ�´0eV¬Ä‰ÐÏ1È1øðA�´D")ô‰ÊD‹t$¼ÁÈ ÷Òø Â1úòA�´ —ÿ*CA‰ýÁÂA÷ÕA�¼<§#”«ÂD‰é ÑA‰Õ1ÁA÷Õñ‰ÆÁÁ ÷ÖÑ ÎA‰Ì1ÖA÷ÔþA�¼9 “üD‰èD‹T$äÁÆÎ ð1Èø�¼ÃY[eD‰â‹l$ÄÁÈ ð Â1òú�¼ ’Ì �‰õÁÂ÷Õ‰é щÕ1Á÷Õù‹|$ØÁÁ �¼7}ôïÿ‰ÆÑ÷Ö Î1ÖþA�¼Ñ]„…‰èD‹t$ÐÁƉÍÎ÷Õ ð1ÈøA�¼O~¨o‰ê‰õÁÈ ÷ÕD‹t$Üð Â1òúA�¼ àæ,þ‰éD‹L$ÈÁ Ñ1ÁùA�¼2C£‰ÆD‹T$ÔÁÁ ÷ÖA�„¡NA‰ÐÑA÷Ð Î1ÖA�”‚~S÷A‰ÉþD‰ÇA÷ÑÁÆÎ ÷1ÏA�Œ5ò:½ÇD‰ÈÁÏ ÷ ø1ðЉòÁÀ÷Òø Â1úÊ‹L$ÀÁ �´1»Ò×*‰ùÂ÷ÑA�¼:‘Ó†ë Ñ1Áñ‰ÆÁÁ÷ÖÑ Î1ÖþÁÎ ÎD$èAÏAóT$àH9\$ð‡ùÿÿE‰úH‹D$ø‹\$艋\$àD‰XD‰P‰X []A\A]A^A_Ã�AUATI‰ôUSH‰ûHƒì‹G‰ÂW‰WsƒGƒø7vj¾x‰õ)ÅA‰ÅH‰êH�5äXJ�|+èZ1ûÿ‹SJ�t-H�{�ÕÁê‰D3‹CÁà ÐH‰Ú‰D3 HƒÆèøÿÿHƒÄL‰æH‰ß[]A\A]éã÷ÿÿ¾8‰õ)Åë”DAWAVAUI‰õATI‰ÔUSH‰ûHƒìD‹zE…ÿ…üIƒý@†ÖöıI�E¿I�l$HÁèL�pI‰ÇIÁæIÞfDóoL‰â¾@H‰ïHƒÃ@EóoKÐMóoSàU óo[ð]0èa÷ÿÿL9óuÄL‰øH÷ØHÁàM�lÀD‰èAƒýƒ°AöÅ…ß…ÀtA¶ˆU¨…àE‰l$HƒÄ[]A\A]A^A_ÀL‰íH‰ßL‰âAƒå?HƒåÀH‰îHëèìöÿÿM…í…°HƒÄ[]A\A]A^A_Ã@E‰þ½€L)õJ�|2H9õHGîH‰ÞH‰êIîè»/ûÿAl$Iƒþ@w`HëI)íéÉþÿÿDI‹H�MHƒáøH‰ED‰èI‹TøH‰TøH)ÍA�D-I)îƒàøƒø‚:ÿÿÿƒàø‰Å1À‰ÂƒÀI‹4H‰49èrïéÿÿÿL‰ñI�D$L‰âAƒæ?HƒáÀH‰ÇH‰$H‰ÎH‰L$èöÿÿH‹L$AƒþH‹$I�T sMAöÆ…ŽE…öt&¶ AˆL$AöÆtE‰öB·T2þfB‰T0þf„A�/ƒà?A‰D$éÿÿÿ€H‹ I‰L$D‰ñH‹t øH‰tøI�t$$HƒæøH)ðAÆH)ÂAƒæøAƒþr·Aƒæø1À‰ÁƒÀH‹< H‰<D9ðrîë�‹ E‰öA‰L$B‹T2üB‰T0üë‡A‹‰UA‹Tü‰Tüé þÿÿA·Tþf‰TþéþÿÿI�l$I‰ÞéÙýÿÿfDAUI‰õATI‰üUH‰ÕSH�ì¨H‰ãH‰ßè¯ôÿÿH‰ÚL‰îL‰çèýÿÿH‰îH‰ßèVüÿÿH�Ĩ[]A\A]ÄAWI‰÷AVAUA½ATI‰üUSH�ìøI‰æH�¬$ L‰÷èPôÿÿ1ÛfDL‰êH�|L‰á¾H)Úè€(ûÿHÃH�ûÿwH…Àu×H…ÀtL‰ò¾H‰ïèZôÿÿ븄L‰çè¨'ûÿA‰Ä…Àu%H…Ûu(L‰þL‰÷è¡ûÿÿH�ÄøD‰à[]A\A]A^A_ÃA¼ëãL‰òH‰ÞH‰ïèüÿÿëÈ@H¸#Eg‰«ÍïHÇGH‰H¸þܺ˜vT2H‰G¸ðáÒÃH‰GËH‰ðʉ‹WʉV‹WʉV‹W ʉV ‹WʉVÃfDAWH‰ð‰ñI‰òAVHƒàüI‰þIÁê AUHøATI‰ÃUSH‰ÓHƒì@KD‹C H‰|$¸H9ñ‹{H‰T$àD‹KH‰D$Ø‹‹R‰KDSM9Þƒ(H�\$øD‰L$ÐA‰ÂD‰D$̉T$ĉD$ÔH‰\$ðH�\$8‰|$ÈH‰\$è‰ûD‰Ç€H‹L$ðH‹D$¸L‹D$èf„‹0HƒÁHƒÀΉqüL9ÁuìD‹\$øD‰ÖD‹|$üÁÆ‹l$HƒD$¸@C�Œ ™y‚ZD‹ $D‹l$ ñ‰ÞD‹d$1þ‰ð!ÐÁÊA‰Ð1øA1ØÈA�Œ?™y‚Z‰×E!ÐAÁÊA1ØD1×D‰ÖAȉÁ!ÇÁÈÁÁ1×1ÆAÈA�Œ™y‚Z‹\$ÏD‰ÁD!ÆAÁÈÁÁD1Ö�”™y‚ZωÁÖD1Á‰úÁÂ!ùÖ1ÁB�”™y‚ZщòÁÏA�„™y‚ZÁÂA‰úÑD‰Â1úA‰Î!òÁÎD1ÂA1òAÁÆÂD‰ÐD‹T$DòD‹t$!ÈÁÉ1øA�¼:™y‚ZD‹T$G�„™y‚ZDÀA‰ÐAÁÀDÀA‰ðA1ÈA!ÐÁÊA1ðA�´4™y‚ZAø‰ÇÁÇAø‰Ï1×!ÇÁÈ1ÏA�Œ ™y‚ZD‹T$ ÷D‰ÆÁÆ÷‰Ö1ÆD!ÆAÁÈ1ÖA�”™y‚ZD‹T$$ΉùÁÁΉÁD1Á!ùÁÏ1ÁA�„™y‚ZщòÁÂÑD‰Â1úA‰Ê!òAÁÂD1ÂÁÎÂDÒA‰úA1òD‰ÐD‹T$(!ÈÁÉ1øG�„™y‚ZD‹T$,DÀA‰ÐAÁÀA�¼:™y‚ZD‹T$0DÀA‰ðA1ÈA!ÐA1ðA�´2™y‚ZD‹T$4Aø‰ÇÁÇÁÊE1ËA1ßAø‰ÏE1ãD3\$,1×AÑÃ!ÇÁÈ1ÏA�Œ ™y‚ZD‹T$÷D‰ÆÁÆE1úD3T$0÷‰ÖAÑÂ1ÆD!ÆAÁÈ1ÖA�”™y‚ZΉùÁÁΉÁD1Á!ùÁÏ1ÁA�„™y‚ZщòÁÂÑD‰Â1úA‰ÏA1éD3L$ !òAÁÇD3L$4D1ëÁÎD1ÂAÑÁÂG�„™y‚ZDúA‰ÿA1÷D‰øA‰÷!ÈÁÉ1øA1ÏDÀA‰ÐA!×ÁÊAÁÀA1÷DÀD‹D$$A1؉ËE1ØAÑÀA�¼8™y‚ZAÿ‰ÇÁÇAÿ‰ï‰ÕD1÷3|$(D1×ÑÇ1Ó1Ã�´7¡ëÙnÁÈÞD‰û1ÅÁÃD1ýAÁÏó‹t$D1î3t$,E‰ýD1ÎÑÆ�Œ¡ëÙné‰ÝÁÅÍD‰ñA‰ÆD1á3L$0E1þD1ÁA1ÞÁËÑÁA1Ý�”¡ëÙnDòA‰îAÁÆAÖ‹T$3T$3T$41úÑÂA1íD3d$ ÁÍ�„¡ëÙnDèE‰õAÁÅAÅD‰àA‰ÜD1ØA1ì1ðE1ôAÁÎÑÀF�¼8¡ëÙnEüE‰ïAÁÇEüD‹|$D3|$$D‰T$¨E1×A1ÏAÑÇE‰úA‰ïE1÷A�œ¡ëÙnD‰T$ E1ïAÁÍDûE‰çAÁÇAß‹\$ 3\$(D1Ë1ÓÑÃA‰ÚD‰óD1ëA�¬*¡ëÙnD‰T$¤D1ãëD‰ýÁÅAÁÌë‹l$$3l$,D1Å1ÅÑÅA‰êD‰íD1åG�´2¡ëÙnD‰T$ŒD1ýAÁÏDõA‰ÞAÁÆAî‹l$(3l$01ý3l$ ÑÅA‰êD‰åD1ýG�¬*¡ëÙnD‰T$�1ÝÁËDíE‰õAÁÅAí‹l$,3l$41õ3l$¤ÑÅA‰êD‰ý1ÝG�¤"¡ëÙnD‰T$”D1õDåE‰ìAÁÄAì‹l$0AÁÎD1ÝE1Ë1Í3l$ŒA1ÃD3\$”ÑÅAÑÃA‰ê‰ÝD1õG�¼:¡ëÙnD‰T$˜D1íAÁÍDýE‰çAÁÇDýD‹|$¨D3|$4A1×D3|$�AÑÇE‰úE‰÷E1ïA�œ¡ëÙnD‰T$œD‹T$¨E1çAÁÌDûA‰ïE1ÂAÁÇDûE‰ßE‰ëE1ãG�´7¡ëÙnA1ëÁÍEóA‰ÞAÁÆEóD3T$ D3T$˜A1ùE‰ÖE‰âD3L$¤D3L$œAÑÆA1êAÑÁA1ðA1ÚG�¬.¡ëÙnÁË1ÏEêE‰ÝD3D$Œ3|$�AÁÅE1øD1÷EêE‰ÍA‰éAÑÀA1ÙG�¤%¡ëÙnE1ÙAÁËEáE‰ÔAÁÄEáE‰ÄA‰ØE1ØA�¬,¡ëÙnE1ÐAÁÊAèD‰ÍÁÅAèÑÇ1Ö3t$”‰ýD‰ßD1î1ÁD1×�œ¡ëÙnÑÆ3L$˜D1ÏAÁÉD1áßD‰ÃÑÁÁÃ߉óD‰ÖD1ÎF�œ¡ëÙn‰\$¨D1ÆAÁÈDÞA‰ûAÁÃDÞA‰ËD‰ÉD1ÁG�”¡ëÙn‰ó1ùÁÃDÑÁÏÙ‹\$ 1Ú3T$œ1êÑÂA‰ÒD‰Â1úD‰T$ G�Œ ¡ëÙnD‹T$¤1òÁÎDÊA‰ÉD1ÐAÁÁD1ø3D$¨DÊÑÀA‰ÑF�„ܼ�‰D$¬AÁÁEÈA‰ÉA ñD‰ÈA‰ÉÁÉA!ñ!øD ÈA‰ÑAÀ‹D$ŒA ÉA!ñ1ØD1ðD1؉ÉÐÁÊÑÃ!ÈD ȉ\$¤�¼;ܼ�‹\$�øD‰ÇD1ÓÁÇÇD1ë3\$ ÑÃA‰ùAÁÁ�´3ܼ�DÎE‰ÁA ÑD‰ÈE‰ÁAÁÈA!Ñ!ÈD ÈA‰ùÆ‹D$Œ3D$”E ÁD1à3D$¬A!ÑA‰Â‰øÁÏAÑÂD!ÀD ÈA�Œ ܼ�A‰ñȉñA!ùÁÁÁ‹D$�3D$˜1è3D$¤ÑÀ‰D$°�”ܼ�‰ÈÁÀ‰ð øD!ÀD ÈA‰ÉÂÁ΋D$”3D$œ3D$¨A ñ1ØA!ùÑÀ‰D$Œ‰ÈÁÉ!ðD ÈD‹L$ŒG�„ܼ�DÀA‰ÐAÁÀAÀ‹D$˜E‰ÁD1øAÁÁD1ØD1ÐÑÀ�¼8ܼ�‰D$´DÏA‰ÑA ÉD‰ÈA‰ÑÁÊA!É!ðD ÈE‰ÁÇ‹D$œA ÑA!ÉD1ð3D$ 3D$°ÑÀ‰D$�D‰À!ÐD ÈD‹L$�E1ïD3|$¬D3|$ŒAÁÈE1æA1íA�´1ܼ�AÑÇD3t$¤D3t$´ð‰þA�Œܼ�AÑÆÁÆÆA‰ñAÁÁDÉA‰ùE ÁD‰ÈA‰ùÁÏE!Á!ÐA�”ܼ�D ÈA‰ñÁA ù‰ðÁÎE!Á!øD ÈE‰éÐA1Ù‰ÊD3L$�ÁÂE‰ÍD‹L$¨ÂAÑÅD‰l$ÀG�„ܼ�A‰ÕAÁÅEèA‰ÍA õD‰èA‰ÍÁÉA!õ!øD èF�,E‰à‰ÐE1È!ÈE1ÐE1øAÑÀE‰ÄA‰ÐÁÊA ÈD‰d$¨E�¤<ܼ�D‰ïA!ðÁÇD ÀDàA‰ü‰ïD1ß3|$°AÄD1÷E‰àÑÇAÁÀ�´7ܼ�‰|$œDÆE‰èA ÐD‰ÀE‰èA!Ð!ÈD ÀE‰è�<0‹t$ AÁÈD1Î3t$Œ3t$ÀE‰áÑÆE!ÁA‰õD‰æD‰ÈD ÆE�Œ ܼ�‰ù!ÖÁÁ ðDÈA‰ÉD‰áÁÉAÁ‰ÍD‰ÙD‹\$¬D‰ÎÁÆD1Ù3L$´3L$¨ÑÁ�”ܼ�‰L$¬ò‰þ î‰ð‰þÁÏ!îD!À ðD‰Î� ‹T$ 3T$¤!þ3T$�3T$œ‰ðÑÂA‰ÔD‰Ê úC�´ܼ�A‰È!êAÁÀ ÐðD‰ÆÆD‰ØAÁÉ1ØA‰óD1øAÁÃD1èA‰ÀAÑÀA�”(ܼ�D‰D$ A‰È‹l$°DÚA‰ËE!ÈÁÉE Ë1ë3\$ÀD‰ØD1ã!øD ÀD�‹D$¤‰ò ÊD1ÐD!ÊD1ð3D$¬ÑÀA‰Ã‰ðÁÎ!ÈA�¼;ܼ�D‰\$” ÐøD‰ÇÁÇlj؋\$ŒÑÀB�”ܼ�A‰ù‰D$˜AÁÁDÊE‰ÁA ñD‰ÈE‰Á!ÈA!ñAÁÈA1ÚD ÈD3T$¨D3T$ D� ‰úAÑÂD ÂD‰T$Œ‰Ð‰úÁÏD!Â!ðA‰Ó‹T$´A ÃA�„ ܼ�D‰ÉE‰ÂAÉè‹l$œÁÁ1ÐAËA1ú1è3D$”E1ÊAÁɉÁÑÁ�„1ÖÁbÊD‰Þ‰L$œ‰ùÁÆDÐD1ÉA‰òA‰؋\$�1ØD1è3D$˜‰Æ‰ÈÑÆD1ØF�„ÖÁbʉñD‰ÎDÀE‰ÐAÁˉL$¤AÁÀD1ÞAÀ‰ÐD1ø3D$¬3D$Œ‰Â‰ðÑÂD1ÐAÁÊ�¼:ÖÁbʉT$�øD‰ÇÁÇljØD‰ÛD1ðD1ÓD1à3D$œ‰Þ‹\$À‰ÂD1ÆAÁÈÑÂA1ßD3|$ B�„ ÖÁbÊA‰ù‰T$°AÁÁðD‰ÎE‰ÑÆD‰øE1Á1ÈD‰ÉA‰ñÑÀ1ùAÁÁB�”ÖÁbÊD‹\$¨‰D$øÊD‰ÉE‰ÁÑÁÏE1ÞD3t$”A1ùD3t$�1ëE1ëAÑÆD‰Ê1òE‰÷ÁÎD‰t$üG�ŒÖÁbÊA‰ÎD‰|$¨DÊD‹L$˜AÁÆDòA‰î‰õA1Ù‰ûD3L$°AÑÁ1ó1ËG�„ÖÁbÊÁÉD‰ $A؉Ó1ÍA‰ÊÁÃ1ÕÁÊDÃD‹D$ŒE1ØD‹\$¬A1ÀAÑÀA�¼8ÖÁbÊD‰D$ï‰ÝÁÅýD‰÷A‰ÖD1ß3|$œA1ÒE1åD1ÿE‰×A‰êÑÇA1ßAÁÂ�´7ÖÁbÊÁˉ|$DþE‰×A1ÞA÷‹t$¤A1îÁÍD1îA‰ÝD1ÎA1íÑÆE1ý�ŒÖÁbʉt$ DñE‰þAÁÏAÁÆAÎD‰ÙD‹\$ D1Ù3L$�D1ÁÑÁ�”ÖÁbʉL$D3d$”DêE‰õAÁÅAÕ‹T$°D1âA‰ì1úE1üÑÂE1ôAÁÎD�”ÖÁbÊ‹\$˜‰T$EâE‰ìD1ÛE‰ûAÁÄ1ÃE1óEÔ1óE‰ÚÑÃE1êAÁÍD�œ+ÖÁbÊD‰å‰\$EÚÁÅD‹\$”D3\$ŒD3\$¨AêD‰õA1ËD1íAÑÃD1åAÁÌG�¼;ÖÁbÊD‰\$DýE‰×AÁÇDýD‹|$˜D3|$œE1ùE‰ïA1ÑAÑÁE1çE1×G�´1ÖÁbÊD‰L$ EþA‰ïAÁÇEþE‰×D‹T$ŒD3T$¤AÁÏE1ÐE‰âD1ÃE1úÑÃE‰ÐE‰òA1èF�¬+ÖÁbÊAÁ‰\$$EÅD‹D$œD3D$�ÁÍD1ÇEÕE‰úD‹D$°A1ûA1êAÑÃE1òAÁÎC�¼#ÖÁbÊD‰\$(AúD‰ïÁÇAú‹|$¤D1Ç1þA1ñ‰îAÑÁD1öC�¼9ÖÁbÊD1îD‰L$,þD‰×3D$�AÁÍÁÇ1ÈþD‰÷1ÃD1ïÑÉø�Œ+ÖÁbʉ\$0‹\$ÔD1ÐAÁÊȉñÁÁÁ‹D$¨L$ÄD1À1ЋT$ÄD1ØÑÀ‰D$4�„ÖÁbÊD‰ëD1ÓAƉ؉Ë1ðÁÃAÆH‹D$àÁÎE�D‰D‰\$Ô‰PDT$Ì‹|$ÌE‰Út$È‹\$ÈDl$ÐD‹L$ЉX‰x D‰HH‹D$¸H;D$Ø‚ïÿÿHƒÄ@[]A\A]A^A_Ãf.„UH‰õSH‰ûHƒì‹G‹Kƒø8‰ÆMÀIƒàÀIƒè€ƒø8HÿHƒçðHƒÇƒø8HÒHƒâðHƒÂs‰ssƒÁ‰KA‰ñÁáAÁéD ÉɉL“ � õ‰òÁâ A‰ÉÁæAÁé�âÿÁéD Ê�áÿL�K òH�5·Dþf‰D þë2fDH‹ñAH�zHƒçøH‰H‹DøH‰D øH)úHÑH)ÖHÁéóH¥H‰ÚL‰ÆL‰ÏèNíÿÿHƒÄH‰îH‰ß[]é íÿÿD‹¢A‰‹Dü‰D üëÊfDAWAVAUI‰õATI‰ÔUSH‰ûHƒì‹B…À…6Iƒý?†öÄëI�l$ Iƒý@„|I�E¿HÁèL�pI‰ÇIÁæIÞfDóoL‰â¾@H‰ïHƒÃ@EóoKÐMóoSàU óo[ð]0è‰ìÿÿL9óuÄL‰øH÷ØHÁàM�lÀA‹L$D‰èH�t AƒýƒÞAöÅ…üE…ítA¶ˆ¨…ÿIÍIƒý?v$L‰â¾@H‰ïIƒí@è$ìÿÿI�t$`L‰êH‰ïèÄûÿE‰l$HƒÄ[]A\A]A^A_ÃL‰íH‰ßL‰âAƒå?HƒåÀH‰îHëèäëÿÿM…í…¬HƒÄ[]A\A]A^A_Ã@‰Åº€M�|$ H)êI�ûÿƒøÿtIH‹D$H�xè»ûÿH‹T$L‰á¾H‰ÇH‰D$ è1 ûÿH‰ÂH9D$tWL‰çH‰D$èz ûÿH‹T$…ÀtA�L‰çA‰Þè¥ ûÿH‹D$A�^‹9ÓŒîþÿÿH�Äè[]A\A]A^A_ÃH‹D$‹A‰ÞéÁþÿÿ�H‹D$ ƶ„Àt)H‹ 1XöA@tcH‹T$ ë @öA@tRHƒÂ¶„Àuï¿èýûÿH‹|$HH‰ÁHÇI‹H9Ç…(H‰L$(èÈùÿÿL‰l$E1É1ÒI‰E1ÀH‹L$(ëU�H‹|$ è–úÿÿH‰ÁI‹H‹H;D$H„.H…Ò„ß1Ò€HƒÂHƒ<ÑL�ÕuíH�tA‰ÑHÁæH‰t$H‹<èD‰L$DL‰D$8H‰L$0H‰T$(è?ûÿH‹l$H‹T$(I‹?HcEH�tHÁæè� ûÿ‹uH‹|$I‰‰ò‰t$(HÇJ�t()ÚD‰óHcÒHÁâèFûÿL‹D$8H‹L$0I‹?H‰ÎL‰ÂH‰L$Lïè†ûÿ‹ED‹L$DH‹L$A�Dÿ‰EH‰Ïè¹ûÿH‹|$ è¯ûÿé:þÿÿL‰l$E1É1ÒE1Àé<ÿÿÿH‹H�5>6H‹ßVH‹81Àè½ ûÿ¿è3ûÿI‹H�5I6H‹ëÖH‹|$HH‰L$(H‰T$èPøÿÿH‹L$(H‹T$I‰é¬þÿÿff.„1ÀH…ÿt!Hƒ?tº‰ÐHƒÂHƒ|×øuòÀÀH�ì˜1ÿH‰æèÏûÿHi$@BHD$HiT$@BHÐHD$H�ĘÃf„HƒìH‹ VH�‹H�5ˆH‹81ÀèÝ ûÿ¿èÓûÿH‹G8öGPtH‹HÿàH‰÷ÿàff.„AUIÇÅðÿÿÿATA¼USH‰ûHƒìH…Òt L�bÿH÷ÚI‰ÕH…ö¸àL‰c0H‰ßHDðH‰3èœÿÿÿH‰ÅH…ÀtDJ�D%H‰kL!èH‰CH‰CH‹HèH‰EH‰C ¸HÇE€cPùHƒÄ[]A\A]ÃfDH�Yyÿë±DH‹G@öGPtH‹HÿàH‰÷ÿàff.„€gPþH‰O8L‰G@é/ÿÿÿff.„@€OPH‰O8L‰G@L‰OHé ÿÿÿff.„AV1ÀAUATUSL‹gH‰ûL+gL‹oLæ’ÀHw0’ÂH…Àu¶ÒH…ÒtH�¶xÿHÇCL‰,% f�L‰àHÁèH97H�ldHC7H9îHCîH‰îènþÿÿI‰ÆH…Àt¹H�4(H‰CL‰âL‰hH‰s H‰0H‹C0H‹sI�lH÷ÐH!ÅH‰ïèu ûÿöCPuH‹C0I�TH÷ÐH!ÐH9CtIìH‰kL‰c€cPý[]A\A]A^Ãf�I‹EL‰îH‰ßI‰Fè­þÿÿëÑff.„H‹GH…Àt-€H9ÆvH90sH‹@H…Àuí1ÀÃf.„¸ÃÃf„ATUH‰õSH‹wH‰ûH…öt*DH9îsH‹H9ès+L‹fH‰ßè/þÿÿ€KPL‰æM…äuÛH…í…^ûÿ[]A\ÃDH‰kH‰kH‰C H‰s[]A\Ãff.„H‹W1ÀH…ÒtDH‹ H)ÑH‹RHÈH…ÒuîÃDÀUSHƒìH‹- wH…ít+fD‹]ƒëxHcÛDÿTÝHƒë…ÛyôH‹mH…íuÛHƒÄ[]Ãff.„�UH‰ýSHƒìH‹hRHƒ8tZH‹«vHcC�Pƒø‰SH‰lÃ1ÀHƒÄ[]ÃfD¿è– ûÿH…Àt-H‰ºH‰ÃÇ@H‰`v1Àë½@H� 9ÿÿÿH‰뚸ÿÿÿÿë°f.„AWI‰×AVI‰öAUA‰ýATL�%øíUH�-øíSL)åHƒìèóûÿHÁýt1ÛL‰úL‰öD‰ïAÿÜHƒÃH9ÝuêHƒÄ[]A\A]A^A_ÃÃHƒìHƒÄÃStack now %dtokennterm%s %s (%F%P:%pS: %s in %s %F%P:%pS: %s Starting parse Stack size increased to %lu Entering state %d Reading a token: Now at end of input. Next token isShifting $%d = MRI style script?fill value*default*PT_GNU_STACKFILEHDRPHDRSVERSION scriptgloballocalextern-> $$ =syntax errorError: discardingError: poppingmemory exhaustedCleanup: discarding lookaheadCleanup: poppingPT_GNU_EH_FRAMEPT_NULLPT_LOADPT_DYNAMICPT_INTERPPT_NOTEPT_SHLIBPT_PHDRPT_TLS$end$undefinedINTLNAMEPLUSEQMINUSEQMULTEQDIVEQ'='LSHIFTEQRSHIFTEQANDEQOREQ'?'':'ORORANDAND'|''^''&''<''>'GELSHIFTRSHIFT'+''-''*''/''%'UNARY'('ALIGN_KBLOCKBINDSQUADLONGSHORTBYTESECTIONSINSERT_KAFTERBEFOREDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDSORT_BY_NAMESORT_BY_ALIGNMENTSORT_NONESORT_BY_INIT_PRIORITY'{''}'SIZEOF_HEADERSOUTPUT_FORMATFORCE_COMMON_ALLOCATIONOUTPUT_ARCHINHIBIT_COMMON_ALLOCATIONFORCE_GROUP_ALLOCATIONSEGMENT_STARTINCLUDEMEMORYREGION_ALIASLD_FEATURENOLOADDSECTCOPYINFOOVERLAYDEFINEDTARGET_KSEARCH_DIRMAPENTRYNEXTSIZEOFALIGNOFLOADADDRMAX_KMIN_KSTARTUPHLLSYSLIBNOFLOATNOCROSSREFSNOCROSSREFS_TOORIGINFILLLENGTHCREATE_OBJECT_SYMBOLSGROUPOUTPUTCONSTRUCTORSALIGNMODSUBALIGNPROVIDEPROVIDE_HIDDENAS_NEEDEDCHIPABSOLUTENEWLINEENDWORDORDERNAMEWORDASSERT_KLOG2CEILPUBLICDEFSYMENDBASETRUNCATERELINPUT_SCRIPTINPUT_MRI_SCRIPTINPUT_DEFSYMCASEEXTERNVERS_TAGVERS_IDENTIFIERGLOBALLOCALVERSIONKINPUT_VERSION_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$@4extern_name_list_body$@5ifile_listifile_p1$@6$@7input_list$@8input_list1@9@10@11sec_or_group_p1statement_anywhere$@12wildcard_namewildcard_maybe_excludefilename_specsection_name_specsect_flag_listsect_flagsexclude_name_listsection_name_listinput_section_spec_no_keepinput_section_spec$@13statement$@14$@15statement_liststatement_list_optlengthfill_expfill_optassign_opassignmentopt_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_listmustbe_exp$@18memspec_at_optopt_atopt_alignopt_align_with_inputopt_subalignsect_constraint$@19$@20$@21$@22$@23$@24$@25$@26$@27$@28$@29$@30$@31atypeopt_exp_with_typeopt_exp_without_typeopt_nocrossrefsmemspec_optphdr_optoverlay_section$@32$@33$@34phdrsphdr_listphdr$@35$@36phdr_typephdr_qualifiersphdr_valdynamic_list_file$@37dynamic_list_nodesdynamic_list_nodedynamic_list_tagversion_script_file$@38$@39vers_nodesvers_nodeverdepvers_tagvers_defns@40@41opt_semicolon%P:%s: file format not recognized; treating as linker script Reducing stack by rule %d (line %lu): %F%P: unrecognised keyword in MRI style script '%s' %X%P:%pS: unknown phdr type `%s' (try integer literal) %X%P:%pS: PHDRS syntax error at `%s' Òûÿ³ûÿ‘ûÿ{ûÿ8ûÿ8ûÿ8ûÿ8ûÿRûÿû0ûÿ8ûÿ8ûÿé0ûÿ×0ûÿÅ0ûÿ·0ûÿ¥0ûÿ“0ûÿ�0ûÿo0ûÿ]0ûÿK0ûÿ90ûÿ8ûÿ8ûÿ+0ûÿ0ûÿ0ûÿõ/ûÿç/ûÿ8ûÿ8ûÿz-ûÿqûÿŸ/ûÿ8ûÿ‘/ûÿÙ/ûÿ8ûÿË/ûÿ½/ûÿ¯/ûÿ¥-ûÿ—-ûÿ8ûÿ8ûÿ{ûÿqûÿÝ-ûÿÍ-ûÿ½-ûÿ³-ûÿqûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿd.ûÿT.ûÿA.ûÿ*.ûÿ .ûÿü-ûÿí-ûÿ‚/ûÿv/ûÿ8ûÿl/ûÿb/ûÿT/ûÿA/ûÿqûÿ/ûÿ/ûÿ8ûÿó.ûÿà.ûÿÎ.ûÿÀ.ûÿ¶.ûÿqûÿ“.ûÿK*ûÿ6*ûÿ$*ûÿ*ûÿ‹&ûÿ”ûÿ ûÿ”ûÿþ*ûÿ”ûÿÊ*ûÿ8ûÿ8ûÿ8ûÿ8ûÿº*ûÿ8ûÿ{ûÿ*ûÿq*ûÿ`*ûÿi-ûÿA-ûÿ-ûÿ8ûÿö,ûÿÓ,ûÿ8ûÿ°,ûÿ�,ûÿj,ûÿG,ûÿ$,ûÿ,ûÿÞ+ûÿ»+ûÿ�+ûÿG+ûÿ+ûÿ›)ûÿx)ûÿI)ûÿ)ûÿà(ûÿ¦(ûÿ�(ûÿT(ûÿ<(ûÿ(ûÿ8ûÿ (ûÿþ'ûÿ8ûÿï'ûÿ8ûÿà'ûÿÇ'ûÿ8ûÿµ'ûÿ,'ûÿ{ûÿÚ&ûÿÇ&ûÿqûÿ8ûÿ8ûÿ8ûÿ8ûÿ�&ûÿ¹&ûÿ«&ûÿ§'ûÿ™'ûÿ}'ûÿo'ûÿa'ûÿT'ûÿG'ûÿ:'ûÿ~&ûÿq&ûÿd&ûÿW&ûÿ,ûÿ8ûÿ8ûÿûÿÔûÿµûÿ™ûÿ&ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ8ûÿ=&ûÿ8ûÿ>%ûÿqûÿ%ûÿì$ûÿ8ûÿ8ûÿ8ûÿ8ûÿ²$ûÿ˜$ûÿŠ$ûÿ8ûÿ~$ûÿp$ûÿb$ûÿ8ûÿT$ûÿ8ûÿE$ûÿ9$ûÿ+$ûÿ$ûÿå#ûÿ{ûÿ¶#ûÿž#ûÿ�#ûÿy#ûÿa#ûÿS#ûÿ;#ûÿ#ûÿ#ûÿç"ûÿË"ûÿ¯"ûÿ“"ûÿw"ûÿ["ûÿ?"ûÿ#"ûÿ"ûÿë!ûÿÏ!ûÿ³!ûÿ—!ûÿ{!ûÿ[!ûÿ?!ûÿ#!ûÿ !ûÿô ûÿÞ ûÿÆ ûÿ® ûÿ– ûÿ~ ûÿf ûÿN ûÿ6 ûÿ ûÿþûÿâûÿƒ1ûÿZ1ûÿB1ûÿ*1ûÿ1ûÿ6ûÿûÿûÿïûÿ×ûÿÉûÿ»ûÿŠûÿÓûÿ­ûÿÓûÿXûÿûÿ>ûÿÓûÿãûÿÖûÿÉûÿûÿ{ûÿûÿLûÿÄûÿ¨ûÿ8ûÿ{ûÿûÿ9ûÿÄûÿ’ûÿ8ûÿ{ûÿî)ûÿ8ûÿÛ)ûÿqûÿ¾)ûÿ…ûÿ…ûÿ…ûÿ…ûÿ8ûÿáûÿáûÿyûÿ¶ûÿcûÿRûÿûÿ¶ûÿQ%ûÿ/&ûÿDûÿ3ûÿ%ûÿûûÿ8ûÿèûÿÄûÿAûÿ8ûÿ8ûÿ8ûÿ8ûÿ{ûÿqûÿÜûÿv%ûÿ_%ûÿ«ûÿûÿ¶ûÿÍ)ûÿ%ûÿðûÿ8ûÿ8ûÿ8ûÿ¨.ûÿ/ûÿðûÿ�-ûÿqûÿ8ûÿ8ûÿ‡ûÿ+ûÿˆûÿ¡ûÿbûÿ¶ûÿ)ûÿ˜ûÿé*ûÿðûÿ#ûÿqûÿgûÿeûÿÉ#ûÿù&ûÿž*ûÿNûÿÇûÿ¿ûÿr.ûÿ?ûÿ‡ûÿÉ$ûÿ   œ�����ž Ÿ¢¡££¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¥¤¤¤¦¦¦§§¨¨©©©«ª¬¬¬®­¯¯°°°°°°°°°°°°°°°°°°°°±°°²°°°°°°°°´³µµµµµµ¶µ·µ¸µ¹ººº»»¼»½½½¾¾¿¿¿ÀÀÀÀÀÀÀÀÀÁÁÂÃÃÄÄÅÅÅÅÅÅÆÇÆÈÈÈÈÈÈÈÈÉÈÊÈËËÌÌÍÍÍÍÍÎÏÏÐÐÐÐÐÐÐÐÑÑÒÒÒÒÒÓÓÔÕÕÖÖØ×Ù×ÚÛÜÜÝÝÞÞßààááâããääåååçæèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèééêêëëììííîîîîðñòóôïõö÷øùïúûïüïýýýýýþþþÿÿÿÿ        €�‚‹”�­®¡¢Ÿ ¯£:†:./0=>?@ACDEFMNOPXYZ[\]^cdejklw„–°¹»ÒÔßàâä&Cgnopqrtuvyz|}~ƒ„…¤ „‡ˆ‰:ˆ‰ Ð::12%%ž:%%%%%%%%%%%%±%%%%¼%•–ÑŠž%&'345<BLQRSTUVW_aqwx“š›è¨§¦è©ª«sè;–;–æçæº ²CÕÖמžž—žáãåå³´%ž%ª: •¥ •èèè%%%%%%%%%%%%%%%%%%%%èè !"• •è••• •è••¬:–„‡ˆ‰;–è;CKd»ï; •——¯Øž;•Ó•———————Ó—Ó•å———mµ³— è—èè£èè—èèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèè•––†–ðžõú $%ÜÙמžå%m•—æææ•;$•——••—•——————••———•——‰:†–%(èþÿüèÿè •šÝÞÕ—¶%m———èèèèèèè– GHIJK—ý%%þhêº]ûh—Þ_Ú$µ¸%————————;—è%&ë$ê:%% — Ó—µ·– —è%‘ìiíºèè–æaÛ—µ;'þ—èí%ö;—— —%—ñè:æè�Ž�î—÷—:þò; )*+,-68C`bfwŒ�’–˜½¾¿ÂÅÆÈËÌÍÒø%%ž%É%%%6789¾ÀÄ%6˜¿È;%Ñ:f¾¾ÊÎæ%ÇÁ½Ã%%%%™ÓÄ%Ä%óæÌhé———Ì—èÅ——½67¾67¾¾¾À—™Ä—;$•—½%%—%%————é Ͼ¾¾¾Îù—————ÏÏÓÑ————ôÓÓMqßvKŠWêëî^§$ñI   : …;:;•†—±†ºƒ„½†‡6688�–o–2œ� ¤•™;ÑÛ•C—ôµ·ìÉQ  ¿Ã TìGÉ•:†m™;m †67Ó67mh6789••m—%m'——Ýšm:•š�’’—�:•˜˜•ö—ùú—üý••—••—ËÌ• •f12 !"#$%&'()*+,’’c’:23’•„—%‡ˆ‰ !"%’„•–‡ˆ‰�Ž�nopG:% !"•`—bGHIJK%&'„‡ˆ‰ %%345%%% %%<%Š%%„BR‡ˆ‰GHIJKL%%%/QRSTUVW€�‚%%s%_a‹µ·¸¹”—qswx !"Ð;ÓÔÖ–;–•—ÝÞ“å—š›®  ;%%C:••%%K%&':P% !"%%•345%$••<d%%%%BjklM%%%%%L%%%wQRSTUVWC%%%– B_Ka;–HPJ—;p— qVwxd— —jkl————k——wr“•—%&'š› 345;–<—%%CB–*+“ÁK:L%P•—QRSTUVW———_—ad————•jkl————–q%wÌwx%&'(h]_$——%;345—%:—&<%“%• B•%š›–‘i–aL ;%%QRSTUVW::%%_a%%% !"q%;%wx%%&'%:%%%%%%%345%h;—<—“—$—B%š›———%—L%%—QRSTUVW———_—a !"q———wxÛ%&'——ûñ ——’ͤ×345¾Wûú%<X“¸Bøfš›Ü>ÿÿÿÿLÿÿÿÿÿÿÿÿQRSTUVWÿÿÿÿÿÿÿÿ ÿÿÿÿ_ÿÿaÿÿÿÿÿÿ)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿq6ÿÿ8ÿÿÿÿwxÿÿÿÿÿÿÿÿÿÿC !"ÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿš›`ÿÿbÿÿÿÿfÿÿÿÿÿÿjklÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw !"ÿÿÿÿŒ./0�ÿÿ’ÿÿÿÿÿÿ–ÿÿ˜ÿÿÿÿÿÿ=>?@AÿÿCDEFÿÿÿÿÿÿÿÿÿÿÿÿMNOPÿÿÿÿÿÿÿÿÿÿÿÿXYZ[\]^ÿÿÿÿÿÿÿÿcdeÿÿÿÿÿÿ•jklÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿ./0ÿÿÿÿÿÿÿÿÿÿ„ÿÿÿÿÿÿÿÿÿÿŠ=>?@AÿÿCDEFÿÿ–ÿÿÿÿÿÿÿÿMNOP—ÿÿÿÿÿÿÿÿÿÿÿÿXYZ[\]^ÿÿÿÿÿÿÿÿcdeÿÿÿÿÿÿÿÿjklÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„ !"– !"ÿÿ !"ÿÿ !"ÿÿ !"ÿÿ !"ÿÿ !" !"ÿÿ— !"— !"— !"— !"— !"— !" !"ÿÿÿÿ— !"— !"— !"— !"— !"— !"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ— !"— !"— !"— !"— !"— !"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ• !"ÿÿ•ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿ&ÿÿC• !"ÿÿ•%ÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿ•nopqrstuvÿÿÿÿyzÿÿ|}~ÿÿÿÿÿÿgƒ„…ÿÿÿÿÿÿnopqr•tuvÿÿœyzÿÿ|}~ÿÿÿÿÿÿÿÿƒ„…ª«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºÿÿÿÿ½ !"ÒÓÔÕÿÿ×ÿÿÙÿÿÛ !"ÿÿ !"ÿÿ !"¶ÒWgù?Ô˜ùîÀk0`b²É»èÅÆêÅÆÂŠ}1ŠŠ@ÿÅÆ"ÜL]'ùìÅÆ‹hi‹‹¬ü§@ÿÎO²PÐêØäåÚçé¼¼’’†ò³xëPþÿ²²§²V²ÖM튊ùŠVÝ_вÞ_-dåd‹‹Š‹4§_‹g[§VÇø‡Ç‹^îïDñòÇ(³´µ¶%VVÇajf,ëTúf1ú™ššì„wȽœÈqO=tuèwxÈúcz{|}~cÈ�q:;ý†‡­=Š‹ŒÆyzŽ��‘’“”•–—˜™š›œ�žŸ ¡¢£ššÃšx§¨šV`÷{abc'()|š`“”ahi{|}}ÊËÌ©ª¶š›€ !"#$%&'()VÁ ²œ�žŸ Š>"#?@A�‚¡¢£ƒ„…‹†‡¤ˆ–‰Š>¥??@見�ŽN§¨©ª«¬­��g’®—¯™·¸îºóîö½¾¿Á°EÂÈÃDZ²#$%&'()Ê ÍË  Ì ÎÐÑÐ×Ñ ØÙÚ³áâš›´µãæç+mnopqrstuFìñóôEõöGøœ�./HžŸ 9,‹ÿ%&'()5¡¢£7@E6X¤I ¥789`    ¦:§¨©ª«¬­G<nU®H¯BC\,^QUyYop=>€°i‚Eš›±²IƒZ2[„789\]^…evˆf‰g:�z¤œ�¥³¦,mžŸ ´µmnopqrstu¡¢£$«±mº¯¤rÀ¼ÄG¥°,-¬æÝHéý¦,Öɧ¨©ª«¬­š›×ÙÚ®Û¯IÜßàäø789ÿ°œ�:籲쟠í $*+.04;3<¡¢£?BGALC¤H³J3M¥VV´µRWY_a¦pekr§¨©ª«¬­š›sw‚ª®ˆ¯«­¯ò !"#$%&'()°°œ�À±±²ºžŸ ÁÃÄÌÎÒÓÔÕ‹ÿÙ¡¢£ßÛàüýâ¤ã³äÿ楴µûsÿ¦ §¨©ª«¬­š›  ®¯ !"#$%&'()°œ� !±²RžŸ &'vl¾()÷é¿ö¡¢£þ¿- F¤j³l‰õ¥sÏ´µúSЦ§¨©ª«¬­‹®¯Œ�Ž��°‘’±²“ !"#$%&'()³´µ”•–789— !"#$%&'()˜™š›œ !"#$%&'()*+,-./0123456*789»:;¥þ !"#$%&'(<)*+,y-./0123456789:; !"#$%&'()< !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'()Ò !"#$%&'()Õ !"#$%&'()Ø !"#$%&'()á !"#$%&'()ã !"#$%&'()5 !"#$%&'() !"#$%&'()6 !"#$%&'()7 !"#$%&'()8 !"#$%&'()9 !"#$%&'(): !"#$%&'()T !"#$%&'()h !"#$%&'()n !"#$%&'()o !"#$%&'()t !"#$%&'() !"#$%&'()� !"#$%&'()IÍ !"#$%&'()ÓIJÔÏJKÝ !"#$%&'()ÞKLâMNOPQÕÿRSTUVWXYLZ[\MNOPQRST·UVWXYZ[\ÇÈ··å !"#$%&'()ðóôõ·Ç·# !"#$%&'() !"#$%&'() !"#$%&'()ÿÿ~ ]û¼»¹ÄÅÆ8=ŒÛïðkQ2>ÕJ‘�žŸ¸Ï Ñ¹¡¢Í£®É¤¥¦Êv•@×AÞßàS¾/b½ûüBCêDëEíËÓá!DXZ~Kµu…Ü*·l€©¸&ñïðô%Åþƒ¨+FÖN¹K÷)Ij GH´de®qýqý¼ÿqýqýqýqý7qýqýqýqýqýqý¥qýqýqýqýQqýqýqýBqýþqýqýqýqý1þóÿqý‹ý�”cqýqýqý„ýkqýqý•qýqýqý£ýqý/þqýrý°ý#ÿqý€qýéqýqýqýqýqýqýFqýqýqýqýqýqýÿ�ÿqý³ÿHqýqýíqýqýqýqýqýqýqýqýqýqýqýqýqýqýqýqý"þ‘qýqýs$þqýqýqýqýqýqýqýqýqýqýÜýqýqýqýqý-qýqýqýqýqýSìÿqýæòÿqýqý; YS> < dZ]TUOQPØÙSsH=@F?BCDEAG.36juiqsd^qsV®¯°±Ý²³´µÝpHVÁ×ÚÚ_6·¶r(ùú1/ !$%4&'* eX¸¹[\>ľÃÒÔ¾¾Ú_ ãßâä-87o_lvkrtWÞm#)onJGILN[ÊÆ¿½^IJUqÐÑÕÚÛXYRad`KÝÝÝZ+à÷öôóòìíðñîïêëèéåæç20,#"59fgb`4,4WÁÂÓÖÜgcfT\)øáüûýþ  ÿ:wtmca4p;<*MNÎÌ]kbeº»¼õx./01257:=QKÏË;Çit   pw36-pNMÝhh4$OLÈÅln+RNÝj8%PÉB4¤C&9�wv¦§¨©ª—™ž˜xz“›£¥? Ý”u}Œ¾Ž¢ Ý–¤¤«†Š�¾¾?>@š{|�uˆ‰‹‘�¾œD­¡•‡y~€…’@@Ý'­­¬A¾!E(Ÿ‚�ƒ„¾¾"FÚqýqýqýqýqýLqýqýqýqýqýTqýöÿqýAqý£˜xeböÿqýpAqý-jª—ÆqýÍqýqýùÊãqýqý*qý+,89qý;qýqýqýqý`qýqýqýqýqýqýqý¶qý^ù`qýbceqýqýiklmrsqýtqý~qýuxIôeqýqýqýPöqýqýqýqýqýqýqýqýqýqýqýqýqýŠŽ��qýqý’“šùù›ùqý¨¨qýˆùª«­�qýqýqýqýzqý*qýqý”•¢£©qý°±²³¹º»¼½¿ÀÁËÌÍw—qý"qý#qýqý p4qýqý<qýÉqýqýp…pp]§¾d§qýqýp qýqý¤ÿgqýqýùÄûÿqý=j{}‚ƒ„qýqýÌÿüÿ$†‰‹(qý–êøù¯öÿqýqýqý«  qýqýp"%qý'pþ<qý-qý®¶qýqý=qýqýqý´ÿqýp-qýùqýqýqýqýqýqýqý?qýqýñ#qýqýqýCqýqýqýqýqýqýqýùqýù¨qýqýqýqýqýqý$Âqýqýqýqý qýýÿpp³ppqýøw 4‹ÃΟÏÐÒÕH\Ö׳pÇØ>†céo¬¬____¤¤ÏÏqýqýqýpppqýqýqýppqýqýqýqýLp¿§qýqý·ÿ^qý³^ÛqýDqýÝqýqýqýqýqýqý1.qýÞßà_qýqýqýqýqýqýqýqýqýqýqýqýqýqý`qýqýqýâiqýqýqýVÍrqýqý\+qýp"…qý†qý,hqý(qýqýqýjqýqýqýöÛþ&:N÷p§UppqýqýqýqýqýqýýÛ‡qýps¬qýqý\vxqýqýqýqý• qý(qýqýqýqýqýqýqýqýqýqýâqýbqý}qý>qý"qýqýHqý(§qo…qý>ˆqý™qý­qýqý¡qýqý%qý‰¨qýÁqýqýqý"qýqýqýqýmÕqýqýqýéqýqýqý€qýqý–qýD®Dqýqýqýœqýqýqýqýqýqýqý—›ùœqýqýqý�«¯qýUqýqý²qýqýqýD˜¶`¢ÄaOqýqý¹qýÛqý»¼½¾qýqýÁÿU¿ÀUÅqýqýqýqýDåƒWY[D]qýqýqý NQOOqýUSOåÿUÄc±qýÔqýqýqýqýÏqý‘deòqýqýÒØgÜÝlwyqýqýqý†ƒqýqýüGqý qýqýqýOOqýOOqýqýqýqýqýqýqýqý qýz|Ž‘’GGqýqý `™šžŸqýqýqýqýqýqýqýqý  qýqý¦¦§¨©ª®²²¼¼ÉÊÎÏÐÓÖרÚÜÞàâäæèêìîïðòôöøúûýü   %')..45:;<=>?@ABCDFHJMOQSUWYX\_^bfjkmoqvv{~�„‡ŠŽ�“’˜—Ÿ£¤¥©«¬¬´¸¼ÃÊÔÕÚâãèíò÷ü 4AJU^ir{ˆŒ”–•œ�¡¢§¬­²¶¶º¹ÀÁÄÆÊÌÎÐÒ×Þàäæèêìîðò÷÷ü "#('-,3;CDHIMOTYZ_agikoqwzƒŽŽ”–˜šœž¡£¥§©«­¯±³µ·¹»½¿ÁÃÅÇÉËÎÐÒÔÖØÚÜÞàâäíïñóõ÷ùû   %(.0 79;@B6LNLTSZ[\]^bcdhinotuz{€‚‡Š—› ¢™ª­¯³´³½êíú  "++99CDHLPW[cfjnry}�…Љ—– ¤¨¬°´º¼š"%— •!– ˜™:;› #$&'()*+,-./0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”%F%s: file not recognized: %E %P:%pS: ignoring invalid character `%s'%s out of dynamic memory in yyensure_buffer_stack()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()fatal flex scanner internal error--no action foundout of dynamic memory in yy_scan_buffer()out of dynamic memory in yy_scan_bytes()%F:includes nested too deeply \%03o%F%P: EOF in comment ldlex.l in script in expressionbad buffer in yy_scan_bytes()%F: macros nested too deeply ‚ýúÿxýúÿýúÿþüúÿáüúÿÍüúÿšüúÿ`ÿúÿÑþúÿ½þúÿ©þúÿ•þúÿ�þúÿmþúÿYþúÿEþúÿ1þúÿþúÿ þúÿõýúÿáýúÿÍýúÿ¹ýúÿXûÿDûÿ0ûÿûÿûÿôûÿàûÿÌûÿ¸ûÿ¤ûÿ�ûÿ|ûÿhûÿTûÿ@ûÿ,ûÿûÿûÿðûÿÜûÿÈûÿ´ûÿ ûÿŒûÿxûÿdûÿPûÿ<ûÿ(ûÿûÿûÿìÿúÿÎ ûÿº ûÿ¦ ûÿ’ ûÿ~ ûÿj ûÿV ûÿB ûÿ. ûÿ ûÿ ûÿò ûÿÞ ûÿÊ ûÿ¶ ûÿ¶ ûÿ~ ûÿj ûÿV ûÿB ûÿ. ûÿ ûÿ ûÿò ûÿÞ ûÿÊ ûÿ¶ ûÿ¢ ûÿŽ ûÿz ûÿf ûÿR ûÿ> ûÿ* ûÿ ûÿ ûÿî ûÿÚ ûÿÆ ûÿ² ûÿž ûÿŠ ûÿv ûÿb ûÿN ûÿ: ûÿ& ûÿ ûÿþûÿêûÿÖûÿÂûÿ®ûÿÂûÿxûÿdûÿPûÿ<ûÿ(ûÿûÿÖûÿèûÿÔûÿÀûÿlûÿlûÿeûÿeûÿBûÿ.ûÿûÿûÿòûÿÞûÿÊûÿ¶ûÿ¢ûÿŽûÿzûÿfûÿ>ûúÿ‘ûÿIùúÿIùúÿ¬ûÿ�ûÿ}ûÿiûÿUûÿRûÿûÿûÿóûÿßûÿËûÿ·ûÿ£ûÿJûúÿ>ûÿ*ûÿûÿûÿîûÿÚûÿÆûÿ²ûÿžûÿŠûÿvûÿbûÿNûÿ:ûÿ&ûÿûÿþûÿêûÿÖûÿÂûÿ®ûÿ‘ûÿtûÿWûÿ:ûÿûÿüûÿÛûÿ&ýúÿ˜ûÿ>ûúÿIùúÿÚûúÿÆûúÿ²ûúÿþûÿuûúÿ[ûúÿ ýúÿ�ûúÿVûÿyûÿŒûÿ>ûúÿIùúÿIùúÿ€ûÿüûÿ’ ûÿéûúÿ/ûÿ/ûÿ/ûÿ/ûÿ/ûÿ/ûÿ/ûÿ/ûÿ/ûÿ/ûÿB ûÿÜ÷úÿÕ÷úÿÎ÷úÿ¸÷úÿã÷úÿyylex&++_:&--:/Ï//Ïi_/1321//24;64364Jell;‰2i…0990`e0<=‰g<9`<<J@=0@@gz@@@nn@@z{|@�Â}�…{}Â| } Æ· (((ÙÆq‹q•³•qrqr·‹((qqr r �rr’�“™�“ß™“Ù’™à³(�( "A ss‘sst‘tÓ#às$ßutuAss‘Óttu  t šuuŽœŽ¿Ž˜˜š% ŽœR¿R&˜ŽŽ 'á‚›‚½½›Ë‹››‚Á¾¾½‹Ë‚‚¾ýÁ(¾ÁÀŸ‚ýŸŸÀËÀ៟Ÿ\*ŸŸÀ+\Ÿ,-'''ÊÎÌééyyÊÎÌ.M''0M'ÊÌéYé!Y!ÌÊ1!2Î4'Y''Ø×5ÍÍŒŒŒŠkHkHIŠI�s6�HŠ7IŒ�ŒHHsII˜9˜ØÍŒ˜kkÍ×’¢±;<’²¢Œ=ŒŒ>?@A���±²BCJEJFñññBBBJ$�$�GHJJIOJOñKñBLBOMNOPOOBQ$�$�RñSñBTBSBSTUTiTiVSW[T\`iSSaTTcii]]]mmmdef]]]]]]†g&†&†imkmlp&†qs†t&&&vwx{]]]]]]hhhu|}mmhhhhhhzh€/h/h�h/‚v/…†zhˆŠ//‹wŒhhhhhh�hŽh�h�h‘u’“”hppp•–—˜™›ppppppœp�žŸp¡¢p£¥¦pp§¨©pª¢«¬­®¯pppppp°p±³´µ·p¹¯º»¼pˆˆˆ½¾¿ÀÁˆˆˆˆˆˆÃÄÅÆÇÈÉÊËÎÏÒÓÔרÚÜÍÑÝÞßàለˆˆˆˆ§§§ÍâÑãäå§§§§§§æçèéêëìîïðñòôöøùúûüýþÿõ§§§§§§¯¯¯õ   ¯¯¯¯¯¯  !"#%'()%+-/¯¯¯¯¯¯¼¼¼024567¼¼¼¼¼¼8¼9:;¼¼<=>?@CDE¼FGHIJLM¼¼¼¼¼¼N¼OPRSU¼VWY[\¼;;;]^_`ab;;;;;;cdeh;i;jklmoqrsouwxz{}€�;;;;;;‚ƒ„;…;¨¨¨†‡ˆ‰Š‹¨¨¨¨¨¨Ž��‘¨’¨–—˜œ�žŸ¡¢£¤¥¦¨©ª¬­¨¨¨¨¨¨®¯°¨²¨¬¬¬³µ¶·¸³¬¬¬¬¬¬¹º»¼¬¿¬ÁÂÃÄÅÇÈÉÊÌÎÏÐÑÒÔÕÖ¬¬¬¬¬¬ØÙÚ¬Û¬°°°ÝÞßàáã°°°°°°ä°åçèéêë°ìîïñòóôï°õö÷øûýþ°°°°°°ÿ°°   °]] ]]] ]]]]]]]]]]]!#"""%""""&"()*-./01]4689:;<=>?@CDEFGHIK"L"]]]mmNmmmMmmmmmQmMXZ[\M]mmmmm^_`abcdefghijkdlmnpsuvwxyz{|}m~y€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‰‘mmm’“•–—˜™š›œ�ž £¤¥¦¨©ª«¬­¯°±²³¶·¸¹º»¼½¾¿ÀÁÂÄÇÈÉÊÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øúûüýþÿ     !"$%&'()*,-./1234567489;=>?@ACBDE4BGHIJKLMNKOPRBTUVWXYZ[K\]^_`deghijkpqrstuvwx|}€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™›œžŸ ¡¢£¤¦¨©«¬®¯°±²³´µ¶·¸¹º»½¾¿ÀÁÂÃÄÅÆÇÉÊÌÍÎÏÐÑÓÔÕרÙÚÛÜÝÞßàáãäæçèéêìíîïðñòóôõö÷øùûüýþ             !!!!!!!!""""#######$$$$$%%%%%%%%%%%&&&&&&&''''''''''(((((((((())))))))))***++++ ++,,,,,,,,--------.. .....//0 0000000001 1111111112222222222333444444555555555566666666667ÿ7777777778þ88888888899999999::::::::ýûúø÷öôóòñðïîíìëêéèçæåäãâàßÞÝÜÛÚÙØÖÔÓÒÐÏÎÌËÊÉÈÆÅÄÃÂÁÀ¾¼º¹¸·¶´°¯®­¬«ª©¨§¥¤£¡ Ÿž�œ›š™˜—•”“‘ދЉˆ‡†…„ƒ‚�€~}|{zyxwvutsrpmlkjihgfedca`_^]\[ZYXWVUTSRQPONMLKIHGFEDCBA@?>=:9876543210.-,+*)('%!     þýüûúùø÷öõóòñðïîíìëêéèçæåäãâáàßÞÝÜÖÕÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´±©¦¥¤£¢¡ Ÿž�œ›š™—–•”“’‘�Ž�Œ‰ˆ‡…„ƒ‚�€~}|{zxwvurqpojhgfedcba_^][ZXWVUQPL842/.-,+*)('&%$#"     ÿüûúùøôçäÞØÖÔÒÑÐÇÅÄúµ³±°®­¥¤£¢¡ ž�—–”ƒ~yxwvmcb\[ZXVTPOMHGFEBA?>875,$"! !"#$%&'(()*+,-./01234567%89:;<=>?@A%B%%%%C%D%%E%%%%%%%%%F%%G%%H%%%%IJKLMNOPQRSTêVWXïôõëÖNÖN×ê×ð÷øùËúØûØÌDëüýþ    0>ôõ>DMNOPQRST0VWXÙÿÙ>?56?1!"#@[$%&÷ø'(\]_)y»az1^b¼`ÑcYZ[\Y]^_`abcdefghiijklmnopqrstuvwxfyz{|}~fffffffff€f�Yf‚uuuuuffffffffffƒffff„…†‡YZ[\Yˆ^_`abcd‰Š‹Œ��jklmnoŽ��‘’“”•–Š—˜™š›œ�žŸ Š¡ŠŠŠŠ€Š�YŠ¢ŠŠŠŠŠŠŠŠŠ£ŠŠ¤ŠŠ¥ŠŠŠŠ„…†¦YYYYY§YYYYY¨Y©ÀDŒ��YYY«YYñññÖÁO6O„eÖ…PfOQODlògò:::hYRYYu::~v€‹w�ÖŒ‚³�ÖæwçòxòYYYYYYYYY§YYYYY¨Y©ÒDŒ��YYY«YYSO{OTO|OÐÓØ:Ô×O:ODU:}Ñ:::íYVYYŽ::o”p²qˆ‰�Õîr•,«-ÖŠstYYYY¬­®¯ °±²³´µ¶··¸¹+º-»¼½¾¿ÀÁ´´´´´Â´ÃÄÅ´´ÆÇ´´´´´´È´É´ÊËÌ¿Íδ´´´Ï´ÐÑÒ´ÓÔ´´´IJKÕÖN××ÛÖØÛÛO�Oµ²‘²n’“:²¶²«o«::·à«Ø«º²˜iᙚ«Å¸ýÙ›œ�9ÙžŸ¹Ú: þÜÝÖN×ÛÛÜØÛÛñññ²²²òõòTöU÷«««[Ý(òøòùÞ)ó\ÃÆò4ò 5ÇÄßàÊáò6òÜÝÖNó×ÖÖÛâ²ØÛÛ«mmmkJOJOOlOsOãt:mä:EuE::!%:~å²Èn€JßJàɱVáfÖæçWÖgEèEâãÖNn×éêÛëìØÛÛmmmuvíîOï&ðñññBBB:EEEEñò::óOôOòõòöß:à÷øùáú::DûEEEEüâãéééòýòþééééééODOOÿOO/O::::.::::éééééé;;;mmm   ;;;;;;c OdOeHE E:fgõ::ÖÖ;;;;;;AAAÖEEBCBCBBD OEOE!Dþ":#$F%&::'(BCBCBB)D*E+E,D-./0FHHH123456HIHJHH7K89:L;<K>?@MNABCKD=EFGHIHOHOHHKKLMNOPKQJRSTKkkkUVWXYZkkkkkk[\]^_`abcfgjklmnopdhqrstukkkkkk¨¨¨eviwxy¨¨¨¨¨¨z{|}~€�‚ƒ„…†‰Š‹Œ�Ž��‘‡’“¨¨¨¨¨¨¬¬¬ˆ”•–—˜¬¬¬¬¬¬™š›œÖÖÖŸ ¡¢£¤¥¦§¨©«¬­ª®¯°¬¬¬¬¬¬°°°±²³´µ¶°±°²°°·³¸¹º´ž�³»¼½¾¿ÀÁ³ÃÄÅÆÇÈɰ²°²°°Ê³ËÌÍÎϳÐÑÒÓÔ³;;;ÕÖרÙÚ;;;;;;ÛÜÝÞ"ß"àáâãäæçèåéêëìíîïðñ;;;;;;òóô"õ"¨¨¨ö÷øùúû¨¨¨¨¨¨üýþÿ��ÖÖ     ¨¨¨¨¨¨��¬¬¬¬¬¬¬¬¬�� !"#$%&'()*+,-./01¬¬¬¬¬¬234�5�°°°6789:;°²°²°°<³=>?@AB³CDEGHIJF³KLMNOPQ°²°²°°R³STUVW³XYZ[\³]^_`abcdefghijklopr333sm3333nt3uvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž�3�3”‘•’–—˜™“š›œ�žŸ ¡£¤¥¦§¨©¢ª«¬­¯°±²³´¶·¸¹º»µ¼½¾¿ÀÁÂÃÄÅÇÈÉÊËÌÍÆÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ]^_[`abcdefgkhlm\inopqruvwsxyzj{|}~€�‚tƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ     UUUUUUUUUUUªªªªªªªªªªªÚÚÚÚÚÚÚÚÚÚÚÞÞÞÞÞÞÞÞÞÞÞåååååååååççççççççççç333333337ÐÏÎ77Í7::Ì:::::§ËÊɧ§§§©©©©©©©©©©©««È«««««­Ç­­­­­­­­­¯Æ¯¯¯¯¯¯¯¯¯ÓÅÓÓÓÓÓÓÓÓÓÔÄÔÔÕÕÃÂÕÕÁÕÕ        ##À#####$$­¿­­­­­­­­­¯¾¯¯¯¯¯¯¯¯¯Ó½ÓÓÓÓÓÓÓÓÓÔ¼ÔÔÕÕ»ºÕÕ¹ÕÕ¸·¶µqqqqqqqq®®®®®®®®´³²±°¯®­¬«ª©¨§¦¥¤£¢¡ Ÿž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{zyxtsrqponmlkjihedcba`_^]\[ZYXUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ÿýüûúùø÷öôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´ÕÖ°¯®­¬«ª©¨§¦¥¤£¢¡ Ÿž�œ›š™˜—–•”“’‘ªŽ�Œ‹Š‰ˆ‡†…„ƒ‚�}|{zyxwvrqpjihba`_^]ZYXWVSRQPNMLKIGFEDCBA@=<;873210+*'!2    ÿüûúôóòñðïìëêéèåäãâßÞÝÜÛÚèäÖ62ÒÏÎÍ¿¾½G@>=®ª9¦¥¤£¢¡—–‡†ƒjdZYXWG=<è9ä8654è2/.-,+*  öîíìèæä    !!!"! ###h#ppppp##########p#!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$%&'&&hh(&¼¼¼¼¼&&&&&&¼¼¼¼¼&&&&&&&)*++++ !!,-!##.hhB/ppp####p###pp####################p#ˆ!/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$%&&001&°°&&°°&&&&&&&&&&&&°&°°&&&&&&&&&&&&234444!,-!#./#p########p##########################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&444!!###################################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&&&&&&&&5&&&&&&&&&&&&&&&6&&&&&&&444!!#############################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&&&&&75&&&&&&&&&86&&&&444!!###########################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&&&&&&&&&&&&44!!######################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&&&&&&9!#################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&&&&&&:!###########!!!!!!!!!!!!!!!!!!!!!!!!:###########!!!!!!!!!!!!!!!!!!!!!!!!#########!!!!!!!!!!!!!!!!!!!!#########!!!!!!!!!!!!!!!!!!!########!!!!!!!!!!!!!!!#########!!!!!!!!!!!!!!!#####!!!!!!!!!!!#####!!!!!!!!!!!###!!!!!!!!!###!!!!!!!!##!!!!!!!#!!!!!!#!!!!!!#!!!!!!!!R£ôF˜ê<prŽà2„m n n j n S e Ån Yn n Q P O bé¡n XN cb¡brdo9 q< D ¤^t §3 B ³E @ #    n �n X n T + n n n  J ( n R ; M ón nn n 9 8 n ‚¿!Sn n „7 Çn ]œ¥êî÷" * $ , ºÉÆÁ �n n � n ›n n ™†­;Œ ²¾ì¬³ ˜ ' ¼‚ % ¨( #   ö ü Çn n n n % 9 õ# " n ! wn  n #‘š ¦˜Å  ‰ n n â“ä&ã=ø è ä Ïæ , ! n n n n  Åˉn n ) % n Ün n — n n  ú  ÷  � ú ø ò ¹ ð ý ý í ô ð ì î ø ï åõ Ú ê ´ç é Ý ôè ê Þ ì ì à í æ Ý Ñ Ø ä Ó æ ä Ò Ò Ñ ² µ º « n n ö Ä n ½ n _n n n n Éšn n n 69‰Ò à�Ì Ê ÊÍÓ Ô Ç Ñ Ï Å ¹º à ¸ ¨Ã Å È ½ Ä ° Ä Æ Ð“ ,ö³ Á ° º ,¼ ³ ± « ܹ © ¶ ¶ ¦ î­ © ¥ § ± ¨ ÷® “ £ 5†£ ¡ – ;¡ £ — ¥ ¥ ™ ¦ Ÿ M– Š ‘ � Œ Ÿ � ‹ ‹ Š k n s d “® n Çûƒ Œ � € ‰ � | } { Œ  ‡ ˆ † ‡ r V ] T S Z ^ O P N ] Q X Y W X E { z )$¡n n e a m j k a _ i i f W P g f ] b R W ] U _ \ I Y P L Q D S G P N P L C = > C ? 4 E ; 8 7 2 C = 3 0 6 0 < , < = + ; / 3 &  # ' ‹% ú, - # , ,   + )(   $       '        è ð  ÿ  ÷ ð   ý  ò ÷ ý õ ÿ ü é ù ð ì ñ ä ó ç ð î ð ù ë â Ü Ý â Þ Ó ä Ú × Ö Ñ â Ü Ò Ï Õ Ï Û Ë Û Ü Ê Ú Î Ò Å ª ² Æ ZÏ Î Â Ì Ã » Ê È Ç ¿ ¶ · º š =¢ ¡ – Ÿ — � � › š “ ‹ Œ Ž cg¨­ ¦ © ¤ ° ¢ ¨ ž � ‘ ¡ š ” — ™ – ¤ ˜ ¢ ‘ £ � ‘ � � Ÿ � � Ž › | ‘ „ Œ „ � † ‘ Š � } � p … ‰ x  � „  ] Y s  w t o { t j ^ U D 8 2 9 & & ! )   ×êæäÝÈù‰…¥˜˜‘�–ÂÌÕéf“§º½ÑÝ÷ùý ?A=PQdRmdnv�}‹‘–Š‘„�§˜¡¦®¯——ÄÂÉÆÙHÉÖÎîÈÃÏÓä™ÖàØé!üþ%.2)-:7(5JEK8?RTPLG[YV^XZdilYfp_eDSjufmo€…tƒ…}‰o‡��ƒ“�‹Ÿ�”�£œt‚“£•¥²¦™¨ª¡‘£°¬—£·»ÁÁ®»ÎÌÈÄ¿ÓÑÈÏÉËÔâÚÇÔÜËѯ½ÎØØÝêïòÂÊÐÌ;Üßïþîùóê  ûýþ  %)&0*-9*9)=4DGGH;KH?M;PF<PV-@RaQ[VNikknm_absoffu]dyfgyuov�…‚ŒŒj}‰��qvsª«¢Ÿ¤–¨�¦� ž’­¤¨©žÁ¤ÃÁ³¯Ç±Ãű¯ÃÓÔÑÖÈÖ¿ÚÎÕÐÄÅÆÞßÊÈìíãõêóÜóòæòöýùí ï þõ ÷  õó&* +(,:;-;/04A>B9HMJ,_MAXQY]\P[Q`CTUh^f`_lm_mabfnkofv…}h‡�‡�‹�†�‰™™‘ž�𛓒¦�œªŒ¥©¦œ«£ª ´–°ª±·´±ª±­½½µÂ´¾¿·¶ÊÁÅÖ½ÀÎÜÔ×ÕÕÞãÚæâìðñïëìéÔÙëîòéùýûÝâðþöù÷÷üø    ò  ý'*-, 03)90!=0> <3D4D<,?>/NL>@NMAQ3JF<=\OQLM]ORWG8ZJ\WgY\@e`VWvikfgwilqaRrdƒ„zyj{}y€~_€‘r„†„h‰{š›‘��’”‘˜–w“–ž�¨¢£‘«­¡Ÿ©¨²²¤§¯®¸²³¡»½±°¬½Ã¼½»ÊÀ¿Å»ÇÍÆÇÀ¼ÍÓÌÍËÚÐÏÕÒÙÏÓàØäÒØá×éÞåÛßìäðÞäòççô÷íóéîî÷ýòòÿøþôøéöüùïüòÿ   '$.-#% 12(*%,2.4/023n [fq|‡’›¦®¶¾ÆÑÙäïúþ    ! , 7 B F O Z e p { ƒ ‹        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRµµÊÉǸ· ǵ&,+"#$µ%-.'(!µµµµµµµµµµµµµµµµµµµµ µywµ*)ÆÄɯ,+ɯ¯É¯È¸ ȳ&,+"#$³%-.'(!³³³³³³³³³³³³³³³³ ³³*)¯$¯%¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯yw¯ˆ ‡®"#$®%-.(!®®®®®®®®®®®® ®®®®®®®®®®®ÆÅÇ¿¾¹ÀÁ½½½½Âøµ¶µµµµµµ~µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ Ư¯°¯³³³³~³³³³³³³³³³³³³³³³³³³³³³³³¯¯¯¯¯~¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯‡‡®‰Š®®®®®®®®®®®®®®®®®®®®®®®®®Å¾½½½½ µµµµµµµµµµµµµµµµµµµµµµµµ^µµµµµµµµµµHµµµµµµµµµµµµµµµµµµµµµµµµµµµzxµ¯²°¯´³³³³³³³³³³³³³³³³³³³³³>?³³³³³³³³³³³³³¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯^¯¯¯¯¯¯¯¯¯¯¯H>¯?¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯zx¯®®®®®‹®®®®®®®®®®®®®®®œ®®®®®®®®®®½½½µ;µµµµµ5µeµqµµµµµµµZµµµµµrµµµ„µµµcµDµµµµµµµµµaµµµµµµlµµµµµµµµµ¯¯³;³³³5³³q³³³³³³³r³„³³³D³³³³³³³³³³³³¯;¯¯¯¯5¯e¯q¯¯¯¯¯¯¯Z¯¯¯¯¯r¯¯¯„¯¯¯¯c¯D¯¯¯¯¯¯¯¯¯a¯¯¯¯¯¯l¯¯¯¯¯¯¯¯¯®®®�—Ž®®™’•®®š®®®®® ¨Ÿ®®«£¦®®¬®®½½½µX7µµµ4µµµµpBµµ`µNµµµMµµµµµµµµµµµµ}µµµµµdµµµbµµµµµµµ¯¯³7³³4³³³p³N³³³³³³³³³³³³³³³³³³¯X7¯¯4¯¯¯¯pB¯¯`¯N¯¯¯M¯¯¯¯¯¯¯¯¯¯¯¯¯}¯¯¯¯¯d¯¯¯b¯¯¯¯¯¯¯®��®®™™”®˜®®¡ž®®««¥®ª®½½»µµµAµYµµµµµµCµ�µµµWµ6µ/µµoµ2LµµµµµµIµµµµµ_Jµµµ¯¯³³³A³³³³³�³³6³³³o³2³³³I³³³³¯¯¯AY¯¯¯¯¯¯C¯�¯¯¯W¯6¯¯/¯¯o¯2L¯¯¯¯¯¯I¯¯¯¯¯_J¯¯¯®®C–“®®®©§¤®¼ºµ=µµµµµµPµµµ|µµµµµfµµi‚µµµµµµµv[µ3µµ¯¯³=³³³³P³|³³³³³s‚³³v³³³¯=¯¯¯¯¯P¯¯¯|¯¯¯¯¯¯f¯¯i‚¯¯¯¯¯¯¯v[¯3¯¯®®®®®®›µµ†µµµµµµµµµ<µµµµµµµVµµµµ€­µ¯¯›³³†³³³<@³³³³³€­³›¯†¯¯¯¯¯¯¯¯¯<@¯¯¯¯¯¯¯V¯¯¯¯€­¯›Œ‘­�¢µOµµµµµµµµµµµµµµµµµµµµµnµ¯O³O³³³³³³³³³¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯n¯µµµµµµµµµ1µtuµµµµKµµµµµµ¯³³³³³tu³³³³¯¯¯¯¯¯¯¯¯1¯tu¯¯¯¯K¯¯¯¯¯¯µµµµµµµµµg]µµµµµµµµµ³³³³g³³³³¯¯¯¯¯¯¯¯¯g]¯¯¯¯¯¯¯¯¯µRµµ…µµµµµµµ0µµµµjµ³³…³³³³³³¯R¯¯…¯¯¯¯¯¯¯0¯¯¯¯j¯µµµµµµµµ\µGµµµµ³³³³³G³³¯¯¯¯¯¯¯¯\¯G¯¯¯¯µµµµµµµµµhƒFµµE³³³³³hƒFE¯¯¯¯¯¯¯¯¯hƒF¯¯Eµµµµµµµµµµµ³³³³³¯¯¯¯¯¯¯¯¯¯¯µµ:µµµµµµµ³:³³¯¯:¯¯¯¯¯¯¯µµµµµµµkµ³³³¯¯¯¯¯¯¯k¯µ8µµµµµµ8³³¯8¯¯¯¯¯¯µµµµµ{µ³{¯¯¯¯¯{¯µµµµµµ³¯¯¯¯¯¯Qµµµµm³Q¯¯¯¯m9µTµ99¯T¯SµS¯µ¯UU%F%P: invalid hex number `%s' Shared library control for HP/UX compatibility%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 --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] Compress DWARF debug sections using zlib Default: none -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 muldefs Allow multiple definitions -z execstack Mark executable as requiring executable stack -z noexecstack Mark executable as not requiring executable stack -z globalaudit Mark executable requiring global auditing --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 or both -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 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 -z common Generate common symbols with STT_COMMON type -z nocommon Generate common symbols with STT_OBJECT type -z stack-size=SIZE Set size of stack segment -z text Treat DT_TEXTREL in shared object as error -z notext Don't treat DT_TEXTREL in shared object as error -z textoff Don't treat DT_TEXTREL in shared object as error %F%P: bad --unresolved-symbols option: %s %F%P: unrecognised option: %s %F%P: -r and %s may not be used together %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 %F%P: invalid argument to option "--section-start" %F%P: missing argument(s) to option "--section-start" %F%P: group ended before it began (--help for usage) %X%P: --hash-size needs a numeric argument %F%P: no state pushed before popping %F%P: invalid argument to option "--orphan-handling" %P: SONAME must not be empty string; ignored %F%P: -F may not be used without -shared %F%P: -f may not be used without -shared Specify target for following input filesForce common symbols to be definedForce group members out of groupsUndo the effect of --export-dynamicAuxiliary filter for shared object symbol tableFilter for shared object symbol tableSmall data size (if no size, same as --shared)Set internal name of shared librarySet PROGRAM as the dynamic linker to 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 pluginIgnored 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)Strip 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 librariesBind global references locallyBind global function references locallyCheck section addresses for overlaps (default)Do not check section addresses for overlapsCopy DT_NEEDED links mentioned inside DSOs that followDo not copy DT_NEEDED links mentioned inside DSOs that followDemangle symbol names [using STYLE]Do not 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 Use less memory and more disk I/ODo not allow unresolved references in object filesAllow unresolved references in shared librariesDo not allow unresolved references in shared libsCreate default symbol version for imported symbolsDon't warn about mismatched input filesDon't warn on finding an incompatible libraryCreate an output file even if errors occurOnly use library directories specified on the command lineIgnored for Linux compatibilityReduce memory overheads, possibly taking much longerReduce 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 executableSort common symbols by alignment [in specified order]Sort sections by name or maximum alignmentHow many tags to reserve in .dynamic sectionSplit output sections every SIZE octetsSplit output sections every COUNT relocsDisplay target specific optionsUse same format as native linkerHow to handle unresolved symbols. is: ignore-all, report-all, ignore-in-object-files, ignore-in-shared-libsOutput lots of information during linkRead version information scriptTake export symbols list from .exports, using SYMBOL as the version.Add data symbols to dynamic listUse C++ operator new/delete dynamic listWarn about duplicate common symbolsWarn if global constructors/destructors are seenWarn if the multiple GP values are usedWarn only once per undefined symbolWarn if start of section changes due to alignmentWarn if shared object has DT_TEXTRELWarn if an object has alternate ELF machine codeReport unresolved symbols as warningsReport unresolved symbols as errorsInclude all objects from following archivesUse wrapper functions for 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.-pie-G--shared--library=%s%P: %s: missing argument defaultnodefinitionsnosymbolicpure-text--defsym%F%P: invalid number `%s' Usage: %s [options] file... Options: %s @FILERead options from FILE %s: supported targets:%s: supported emulations: ELF emulations: Report bugs to %s ignore-allreport-allignore-in-object-filesignore-in-shared-libs%F%P: bad -plugin-opt option %s%c%s%F%P: -shared not supported %F%P: -pie not supported descendingascending.text-segment.rodata-segment.ldata-segmentP,placewarndiscard%P: unrecognized option '%s' %s-%s%s%s-%cKEYWORDSet architecturemri-scriptRead MRI format linker scriptdcdpforce-group-allocationSet start addressExport all dynamic symbolsno-export-dynamicEBLink 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-optARGfltoflto-partition=fuse-ld=no-map-whole-filesQyemit-relocsrelocatableGenerate relocatable outputjust-symbolsstrip-allStrip all symbolsstrip-debugStrip debugging symbolsno-strip-discardedtraceTrace file opensRead linker scriptdefault-scriptRead default linker scriptdTrequire-definedunique[=SECTION]UrPrint version informationdiscard-allDiscard all local symbolsdiscard-localsdiscard-nonetrace-symbolTrace mentions of SYMBOLstart-groupStart a groupend-groupEnd a groupno-accept-unknown-input-archno-add-neededno-as-neededassertBdynamicLink against shared librariescall_sharedBstaticdnnon_sharedBsymbolicBsymbolic-functionsno-check-sectionsno-copy-dt-needed-entriescrefOutput cross reference 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-timeMapWrite a map fileno-define-commonDo not define Common storageno-demangleDo not demangle symbol namesno-keep-memoryno-undefinedno-allow-shlib-undefinedallow-multiple-definitionAllow multiple definitionsno-undefined-versionDisallow undefined versiondefault-symverCreate default symbol versiondefault-imported-symverno-warn-mismatchno-warn-search-mismatchno-whole-archiveTurn off --whole-archivenoinhibit-execnoinhibit_execnostdliboformatSpecify target of output fileprint-output-formatPrint default output formatprint-sysrootPrint current sysrootqmagicreduce-memory-overheadsno-relaxretain-symbols-filerpathrpath-linkCreate a shared libraryBshareablepic-executablesort-common[=ascending|descending]sort_commonsort-sectionname|alignmentspare-dynamic-tagsCOUNTsplit-by-file[=SIZE]split-by-reloc[=COUNT]statsPrint memory usage statisticstarget-helptask-linkDo task level linkingtraditional-formatsection-startSECTION=ADDRESSSet address of named sectionTbssSet address of .bss sectionTdataSet address of .data sectionTtextSet address of .text sectionTtext-segmentSet address of text 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 listwarn-commonwarn-constructorswarn-multiple-gpwarn-oncewarn-section-alignwarn-shared-textrelwarn-alternate-emwarn-unresolved-symbolserror-unresolved-symbolswrapignore-unresolved-symbolpush-statepop-stateprint-memory-usageReport target memory usageorphan-handling=MODEȇúÿòœúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿþ›úÿå›úÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿ7‡úÿȇúÿÔ›úÿȇúÿȇúÿȇúÿÈ›úÿµ›úÿOœúÿȇúÿ5œúÿȇúÿȇúÿœúÿ œúÿÒœúÿ¢œúÿȇúÿȇúÿ,Šúÿf™úÿ«šúÿȇúÿ’šúÿȇúÿwšúÿ'šúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿ¾™úÿ­™úÿ�™úÿ~™úÿ[›úÿäšúÿ†úÿ9™úÿ®˜úÿȇúÿȇúÿ™˜úÿ†úÿr˜úÿ_˜úÿȇúÿS˜úÿ®˜úÿG˜úÿ8˜úÿ"˜úÿ ˜úÿȇúÿý—úÿì—úÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿȇúÿB—úÿ6—úÿ —úÿØ–úÿ£–úÿ5œúÿ—–úÿ†úÿp–úÿa–úÿR–úÿC–úÿÈ›úÿ7–úÿR¡úÿ†úÿ$–úÿ–úÿ –úÿú•úÿë•úÿÜ•úÿЕúÿÄ•úÿ­•úÿž•úÿ�•úÿŽúÿJŠúÿŽŽúÿ-Žúÿ9™úÿw�úÿ%�úÿ�úÿ�úÿb�úÿ±†úÿJ�úÿ2�úÿ�úÿ�úÿê�úÿÒ�úÿm’úÿ¸†úÿ’úÿF¡úÿÓ‘úÿÀ‘úÿh‘úÿ4‘úÿ‘úÿÚ�úÿË�úÿ¼�úÿ­�úÿž�úÿ��úÿ€�úÿq�úÿk•úÿF•úÿ:•úÿ.•úÿ"•úÿ•úÿ •úÿù”úÿê”úÿÞ”úÿÒ”úÿÆ”úÿº”úÿ®”úÿ‰”úÿ}”úÿq”úÿR”úÿ?”úÿ,”úÿP“úÿ6“úÿ#“úÿ “úÿé’úÿÝ’úÿÑ’úÿÅ’úÿ¹’úÿ ’úÿ…’úÿy’úÿ·�úÿž�úÿ’�úÿ†�úÿÕ�úÿÆ�úÿä�úÿ�úÿ»ŒúÿuŒúÿiŒúÿ]Œúÿ8Œúÿ'Œúÿñ‹úÿÞ‹úÿÏ‹úÿ/¡úÿ·‹úÿ•‹úÿp‹úÿd‹úÿU‹úÿˆ˜úÿq›úÿˆ–úÿp©úÿH©úÿP©úÿP©úÿ`©úÿ`©úÿ`©úÿ`©úÿ`©úÿ`©úÿP©úÿP©úÿ`©úÿP©úÿP©úÿ`©úÿˆ®úÿ@®úÿ¬­úÿ¬­úÿ�­úÿЭúÿ¬­úÿà¯úÿh¯úÿè®úÿ¬­úÿ¬­úÿ@¯úÿ®úÿ¬­úÿ®úÿ Äúÿ0¿úÿà¿úÿÀúÿPÀúÿ ÁúÿÂúÿ@ÁúÿÀÁúÿ0ÂúÿàÂúÿ Åúÿ`ÅúÿÃúÿ€ÃúÿÀÃúÿ�ÇúÿpÇúÿPÇúÿ0ÇúÿÇúÿ(ÆúÿðÆúÿTÈúÿÉúÿüÈúÿäÈúÿÔÈúÿ÷Øúÿ‡ØúÿÂØúÿ Øúÿ€Øúÿ÷ØúÿÐØúÿtßúÿ¤ßúÿ´ßúÿÄßúÿ4ßúÿdßúÿTàúÿCàúÿCàúÿCàúÿ|àúÿCàúÿCàúÿCàúÿCàúÿCàúÿCàúÿCàúÿCàúÿ]àúÿCàúÿ4àúÿæúÿÄéúÿÕãúÿÕãúÿìåúÿôäúÿÜäúÿ¼äúÿTäúÿüãúÿÕãúÿÕãúÿléúÿlêúÿÕãúÿ”éúÿìõúÿüõúÿÔõúÿöúÿõõúÿõõúÿõõúÿÞõúÿÔõúÿ¨ûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿ˜ûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿˆûÿÀûÿÀûÿˆûÿÀûÿÀûÿÀûÿÀûÿÀûÿxûÿÀûÿÀûÿÀûÿÀûÿpûÿHûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿ˜ûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿÀûÿˆûÿÀûÿÀûÿˆûÿÀûÿÀûÿÀûÿÀûÿÀûÿxûÿÀûÿÀûÿÀûÿÀûÿpûÿHûÿÈûÿ(ûÿ˜ûÿHûÿÐûÿXûÿ˜ûÿ˜ûÿûÿ˜ûÿ˜ûÿXûÿ˜ûÿ°ûÿXûÿxûÿ¨ûÿÈûÿ°ûÿØûÿhûÿØûÿØûÿØûÿØûÿØûÿHûÿØûÿØûÿûÿØûÿûÿcompare_sectionlang_do_assignments_1lang_size_sections_1load_symbolsprint_data_statementpop_stat_ptrpush_stat_ptr../../ld/ldlang.c.init.fini%F%P: invalid data statement 0x%V %pT 0x%V %W %pB %W (size before relaxing) Fail with %d SORT (CONSTRUCTORS) CONSTRUCTORS EXCLUDE_FILE(%s) SORT_BY_NAME(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[0x%V][unresolved][!provide]*undef* TARGET(%s) OUTPUT(%sLOAD %s START GROUP END GROUP INSERT %s %s elf32-bigelf64-bigelf32-littleelf64-little Allocating common symbols %lx%016lx?*[/DISCARD/.init_array..fini_array..ctors..dtors.%10lu GB%10lu MB%10lu KB %10lu B-l$SYSROOTload base*ABS* Discarded input sections Memory Configuration AttributesLengthOriginName%-16s %-18s %-18s %s %-16s 0x%s !,:%F%P: target %s not found %F %pI ALLCOMMON%Fsubsection alignment*?[%F%P: multiple STARTUP files program header type__load_start_%s__load_stop_%sC++Java%pB (%pT) .exports.startof.%sphdr flagsphdr load address__start_%stypeinfo name for*typeinfo for*operator new*operator delete*SANE_EXPR%X%P: unknown feature `%s' %16s: %6.2f%% %F%P: invalid reloc statement %F%P: bfd_link_hash_lookup failed: %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' SORT_BY_NAME(SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT(SORT_BY_NAME(%F%P: could not define common symbol `%pT': %E Common symbol size file %P:%pS: warning: redeclaration of memory region `%s' %P:%pS: warning: memory region `%s' not declared %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: changing start of section %s by %lu bytes %P: warning: changing start of section %s by %lu byte %P: warning: dot moved backwards before `%s' %F%P: can't relax section: %E %X%P:%pS: section has both a load address and a load region %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: failed creating section `%s': %E %F%P: can not create hash table: %E %F%P: illegal use of `%s' section %F%P: output format %s cannot represent section called %s: %E Linker script and memory map %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 %F%P: invalid character %c (%d) in flags %P: %pB: file not recognized: %E; matching formats:%F%P: %pB: file not recognized: %E %F%P: %pB: member %pB in archive is not an object %F%P: %pB: error adding symbols: %E %P: warning: %s contains output sections; did you forget -T? %F%P:%pS: error: align with input and explicit align specified %X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them %X%P: unknown language `%s' in version information %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 %F%P: %s: plugin reported error after all symbols read As-needed library included to satisfy reference by file (symbol) %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 %X%P: unable to read .exports section contents %F%P: invalid origin for memory region %s %F%P: invalid length for memory region %s %X%P: error: unplaced orphan section `%pA' from `%pB' %P: warning: orphan section `%pA' from `%pB' being placed in section `%s' %F%P: bfd_record_phdr failed: %E %X%P: section `%s' assigned to non-existent phdr `%s' %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 %X%P: required symbol `%s' not defined %F%P: gc-sections requires either an entry or an undefined symbol %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: no sections assigned to phdrs %F%P: %s not found for insert %X%P: unable to find version dependency `%s' Memory region Used Size Region Size %%age Used Y@srec%F%P: unknown format type %s GLOBAL_ Set Symbol %G %X%P: different relocs used in set %s %X%P: different object file formats composing set %s %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 %X%P: %H: reloc refers to symbol `%pT' which is not being output %X%P: %H: dangerous relocation: %s %X%P: %C: multiple definition of `%pT'%P: disabling relaxation; it will not work with multiple definitions %F%P: %pB: could not read symbols: %E %pI: no new IR symbols to claimi Archive member included to satisfy reference by file (symbol) 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'%F%P: %pB: could not read relocs: %E %P: warning: global constructor %s used %F%P: BFD backend error: BFD_RELOC_CTOR unsupported %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: can't set BFD default target to `%s': %E ================================================== %F%P: --no-define-common may not be used without -shared %F%P: cannot open map file %s: %E %P: link errors found, deleting executable `%s' %F%P: %pB: final close failed: %E %F%P: unable to open for source of copy `%s' %F%P: unable to open for destination of copy `%s' %s: total time in link: %ld.%06ld %F%P: bfd_hash_table_init failed: %E %F%P: bfd_hash_lookup failed: %E %X%P: %C: undefined reference to `%pT' %P: %C: 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 %X%P: error: duplicate retain-symbols-file %F%P: bfd_hash_lookup for insertion failed: %E %P: `-retain-symbols-file' overrides `-s' and `-S' %P: %pB: reference to %s %P: %pB: definition of %s ../../ld/ldmain.c; %D: first defined here%s(%s)%X%P: %H:+%vusing multiple gp values%P: %C: %s%s %P: %s%s %P: %pB: %s%s elf_x86_64/usr/share/locale--sysroot=x86_64-pc-linux-gnuCOLLECT_NO_DEMANGLE_init_finiLDEMULATION-m%F%P: missing argument to -m -mips1-mips2-mips3-mips4-mips5-mips32-mips32r2-mips32r6-mips64-mips64r2-mips64r6-m486built in linker scriptusing external linker script:using internal linker script:%F%P: no input files %P: mode %s %P: error writing file `%s' %P: error closing file `%s' %X%X%P: %s: %E a.outVûÿWûÿWûÿWûÿWûÿèVûÿmultiple_definitionreloc_overflow../../ld/ldwrite.c.stabstr$GDB_STRINGS$$GDB_SYMBOLS$%F%P: final link failed: %E %F%P: bfd_new_link_order failed %F%P: cannot create split section name for %s %F%P: clone section failed: %E €jûÿ€jûÿPjûÿjûÿ¨jûÿwkûÿwkûÿPkûÿ)kûÿoiûÿbuild_link_order%F%P: bfd_hash_allocate failed creating symbol %s %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 %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 %F%P:%pS: nonconstant expression for %s %X%P: %s ../../ld/ldexp.c%F%P:%pS %% by zero %F%P:%pS / by zero MAXPAGESIZECOMMONPAGESIZENULL TREE %pB:%s+0x%vPROVIDE (%s = ("", ASSERT (, %s) (%s)+=-=*=/=<<=>>=&=|=||&&==!=<<>>MAXMINASSERT”qûÿŒrûÿÜrûÿ”sûÿdtûÿdtûÿdtûÿ¼tûÿ qûÿLqûÿ\�ûÿÄ�ûÿ‘ûÿ\‘ûÿÔ‘ûÿ”‘ûÿ”‘ûÿ´‘ûÿÔ�ûÿ�ûÿGNUTARGET%pS SYSLIB ignored %pS HLL ignored Supported emulations: %s: %P: unrecognised emulation mode: %s no emulation specific options. GNU ld %s Supported emulations: %s (GNU Binutils for Debian) 2.31.1Copyright (C) 2018 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: internal error: aborting at %s:%d in %s %P: internal error: aborting at %s:%d %F%P: please report this bug ../../ld/ldmisc.c0x%s%pB: in function `%pT': %s:%pT(%pA+0x%v)[%s]%s generated%s+0x%v (type %s)%s:%uno symbol%p%ld%lu%%%c%u%s%F%P: internal error %s %d $£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿÏ¢ûÿÏ¢ûÿ«£ûÿ«£ûÿÏ¢ûÿÏ¢ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿÖ¢ûÿÖ¢ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ¨¢ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿ«£ûÿÝ¢ûÿ«£ûÿ«£ûÿ«£ûÿû¢ûÿ«£ûÿ«£ûÿ£ûÿ«£ûÿ¨¢ûÿÖ¢ûÿ7¥ûÿ„›ûÿ4šûÿ4šûÿ4šûÿ$›ûÿsœûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿvœûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ�ûÿ�ûÿ\žûÿ�ûÿ�ûÿ�ûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ7Ÿûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ|žûÿ¦žûÿOŸûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿbŸûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ–œûÿ‹Ÿûÿ–œûÿ–œûÿ–œûÿÍŸûÿ–œûÿ–œûÿ| ûÿ–œûÿ� ûÿ°œûÿvfinfo/ldscriptscannot find script file %s opened script file %s /usr/lib/x86_64-linux-gnu/usr/bin/usr/x86_64-linux-gnu/binattempt to open %s failed attempt to open %s succeeded %P: cannot find %s (%s): %E %P: cannot find %s: %E %P: cannot find %s inside %s %P: cannot find %s %F%P: cannot open linker script file %s: %E %F%P: invalid BFD target `%s' %P: skipping incompatible %s when searching for %s %F%P: attempted static link of dynamic object `%s' %F%P: cannot represent machine `%s' ../../ld/ldcref.c%X%P: cref alloc failed: %E Cross Reference Table SymbolFile No symbols %P: symbol `%pT' missing from main hash table %X%P: %C: prohibited cross reference from %s to `%pT' in %s %X%P: bfd_hash_table_init of cref table failed: %E %X%P: cref_hash_lookup failed: %E %F%P: plugin_strdup failed to allocate memory: %s %F%P: unsupported input file size: %s (%ld bytes) %F%P: %s: non-ELF symbol in ELF BFD! %F%P: unknown ELF symbol visibility: %d! %F%P: %s: plugin symbol table corrupt (sym type %d) %P: %pB: symbol `%s' definition: %d, visibility: %d, resolution: %d %F%P: could not create dummy IR bfd: %E %F%P: plugin failed to allocate memory for input: %s %F%P: %s: plugin reported error claiming file %F%P: %s: error loading plugin: %s %P: %s: error in plugin cleanup: %d (ignored) ../../ld/plugin.c.gnu.linkonce.t.%P: warning: %P: error: (symbol from plugin)%P: %s: duplicated plugin pass-through=_onload%F%P: %s: plugin error: %d ÀÇûÿPÉûÿ0Éûÿ ÈûÿhÈûÿµÕûÿlØûÿµÕûÿ<ØûÿµÕûÿ,ØûÿØûÿ Øûÿü×ûÿì×ûÿÜ×ûÿÌ×ûÿ¼×ûÿ¬×ûÿœ×ûÿŒ×ûÿ|×ûÿl×ûÿ\×ûÿµÕûÿµÕûÿµÕûÿµÕûÿµÕûÿµÕûÿŒÕûÿget_symbols    md5sha1uuid/dev/urandom/* Script for -z separate-code: generate normal executables with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared -z separate-code: link shared library with separate code segment */ /* Copyright (C) 2014-2018 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } %F%P: %pB: --just-symbols may not be used on DSO -z noextern-protected-data Do not treat protected data symbol as external -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 bndplt Always generate BND prefix in PLT entries %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' %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: failed to set dynamic section sizes: %E %F%P: %pB: can't read contents of section .gnu.warning: %E %F%P: failed to record assignment to %s: %E %P: warning: .note.gnu.build-id section discarded, --build-id ignored %P: warning: %s, needed by %pB, may conflict with %s %P: warning: -z dynamic-undefined-weak ignored %X%P: .eh_frame/.stab edit: %E %F%P: map sections to segments failed: %E %F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E %F%P: %pB: bfd_stat failed: %E unrecognised or unsupported token '%s' in search path %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 %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 %P: warning: %s, needed by %pB, not found (try using -rpath or -rpath-link) zlibzlib-gnuzlib-gabisysvbothundefsmuldefsmax-page-size=common-page-size=stack-size=noexecstackglobalauditinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazyoriginnocombrelocnocopyrelocnorelronoseparate-codenocommonnotexttextoffnoextern-protected-datanodynamic-undefined-weaknoreloc-overflowcall-nop=prefix-addrsuffix-nopprefix-suffix-ibtpltibtshstkbndplt%P: warning: -z %s ignored %s/lib%s%s.soeelf_x86_64.c__ehdr_startLD_RUN_PATH.gnu.warninginclude%P: %pB: bfd_stat failed: %E .so.i386:x86-64.mbind.data.mbind.bss.mbind.rodata.mbind.text.rela.dyn.rel.dyn.rel.gnu.warning..note.plt%F%P: looping in map_segmentslibc.sofound %s at %s lib64RIGIN}IB}%.*s%s/%s%.*s%s.note.gnu.build-id.note.GNU-stack.eh_frame_entry.eh_frame.eh_frame_hdr%s needed by %pB LD_LIBRARY_PATH/usr/etc/ld.so.conf.tdata.interp.sdata.commentBgroupcompress-debug-sectionsdepauditdisable-new-dtagsenable-new-dtagsno-eh-frame-hdrexclude-libshash-styleno-ld-generated-unwind-infoelf64-x86-64ðøÿøïøÿðïøÿßïøÿ¸ïøÿ(ðøÿ(ðøÿz:P:/* Script for -z separate-code: generate normal executables with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared -z separate-code: link shared library with separate code segment */ /* Copyright (C) 2014-2018 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(32 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf32_x86_64.ci386:x64-32elf32_x86_64elf32-x86-64*öÿð)öÿè)öÿ×)öÿ°)öÿ *öÿ *öÿz:P:/* Script for -z separate-code: generate normal executables with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared -z separate-code: link shared library with separate code segment */ /* Copyright (C) 2014-2018 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; .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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_i386.celf_i386elf32-i386™óÿø˜óÿð˜óÿߘóÿ¸˜óÿ(™óÿ(™óÿz:P:/* Script for -z separate-code: generate normal executables with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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 { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .plt.got 0 : { *(.plt.got) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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; .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) } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared -z separate-code: link shared library with separate code segment */ /* Copyright (C) 2014-2018 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; .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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); PROVIDE (_end = .); PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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(CONSTANT (MAXPAGESIZE)); .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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 = .); } .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.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_iamcu.celf_iamcuelf32-iamcuñÿäñÿÜñÿËñÿ¤ñÿñÿñÿz:P:/* Script for -z separate-code: generate normal executables with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .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) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .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) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .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) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared -z separate-code: link shared library with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_l1om.celf_l1omelf64-l1omÈtîÿ¨tîÿ tîÿ�tîÿhtîÿØtîÿØtîÿz:P:/* Script for -z separate-code: generate normal executables with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.ifunc 0 : { *(.rela.ifunc) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .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 .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .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) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .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) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .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) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared -z separate-code: link shared library with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .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) } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; PROVIDE (__bss_start = .); .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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 = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } . = ALIGN(CONSTANT (MAXPAGESIZE)); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(CONSTANT (MAXPAGESIZE)); /* 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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ /* Copyright (C) 2014-2018 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-k1om", "elf64-k1om", "elf64-k1om") OUTPUT_ARCH(k1om) 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", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) *(.rela.ifunc) } .rela.plt : { *(.rela.plt) PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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.*) } .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 .exception_ranges*) } /* 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.*) } .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 .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 = .); . = .; __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); . = 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 (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_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 Extension. */ .debug_macro 0 : { *(.debug_macro) } .debug_addr 0 : { *(.debug_addr) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_k1om.celf_k1omelf64-k1omˆÌëÿhÌëÿ`ÌëÿOÌëÿ(Ìëÿ˜Ìëÿ˜Ìëÿz:P:.debug_.idata$__section_alignment__+%s arelent: %s@%#lx: add=%li pcrel %d bit rel. pei-x86-64pe-x86-64ei386pep.c.def.DEF__image_base____size_of_stack_reserve____size_of_heap_reserve__.idata__head_%s() -%s *%s .buildid.idata$2.obj%s.%cWinMainCRTStartupNtProcessStartupa.exe___ImageBasenative__size_of_heap_commit____size_of_stack_commit____major_subsystem_version____minor_subsystem_version____subsystem____major_os_version____minor_os_version____major_image_version____minor_image_version____file_alignment____dll____dll_characteristics__lib%s.dll.a%s/mainCRTStartup__PosixProcessStartuplib%s.alib%s.lib%s%s.dlllib%s.dll.rdatabase-filefile-alignmentmajor-image-versionmajor-os-versionmajor-subsystem-versionminor-image-versionminor-os-versionminor-subsystem-versionsection-alignmentsubsystemsupport-old-codeno-leading-underscoreoutput-defexport-all-symbolsexclude-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-nameshigh-entropy-vadynamicbaseforceintegnxcompatno-isolationno-sehno-bindwdmdrivertsawareno-insert-timestampwindowsconsoleposixwincexboxi386pep__loader_flags__ --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 --high-entropy-va Image is compatible with 64-bit address space layout randomization (ASLR) --dynamicbase Image base address may be relocated using address space layout randomization (ASLR) --forceinteg Code integrity checks are enforced --nxcompat Image is compatible with data execution prevention --no-isolation Image understands isolation but do not isolate the image --no-seh Image does not use SEH; no SE handler may be called in this image --no-bind Do not bind this image --wdmdriver Driver uses the WDM model --tsaware Image is Terminal Server aware --build-id[=STYLE] Generate build ID %P: %C: cannot get section contents - auto-import exception import of 0x%lx(0x%lx) sec_addr=0x%lx%P: warning: .buildid section discarded, --build-id ignored /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___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); KEEP (*(.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$*)) __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .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_*) } .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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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 .zdebug.gnu.linkonce.wt.*) } /* 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: mix text and data on same page */ /* Copyright (C) 2014-2018 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___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); KEEP (*(.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$*)) __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .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_*) } .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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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 .zdebug.gnu.linkonce.wt.*) } /* 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 ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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); /* 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___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); /* ??? Why is .gcc_exc here? */ } /* 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) } .eh_frame : { KEEP (*(.eh_frame)) } .pdata : { KEEP(*(.pdata)) } .xdata : { KEEP(*(.xdata)) } .bss : { *(.bss) *(COMMON) } .edata : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) } .idata : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ } .CRT : { /* ___crt_xl_end__ is defined in the TLS Directory support code */ } /* 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) } .debug_pubtypes : { *(.debug_pubtypes) } .zdebug_pubtypes : { *(.zdebug_pubtypes) } /* 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) } .debug_macro : { *(.debug_macro) } .zdebug_macro : { *(.zdebug_macro) } /* DWARF 3. */ .debug_ranges : { *(.debug_ranges) } .zdebug_ranges : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types : { *(.debug_types) } .zdebug_types : { *(.zdebug_types) } /* For Go and Rust. */ .debug_gdb_scripts : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts : { *(.zdebug_gdb_scripts) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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) /* ??? Why is .gcc_exc here? */ } /* 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) } .eh_frame : { KEEP (*(.eh_frame)) } .pdata : { KEEP(*(.pdata)) } .xdata : { KEEP(*(.xdata)) } .bss : { *(.bss) *(COMMON) } .edata : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) } .idata : { /* This cannot currently be handled with grouped sections. See pep.em:sort_sections. */ } .CRT : { /* ___crt_xl_end__ is defined in the TLS Directory support code */ } /* 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) } .debug_pubtypes : { *(.debug_pubtypes) } .zdebug_pubtypes : { *(.zdebug_pubtypes) } /* 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) } .debug_macro : { *(.debug_macro) } .zdebug_macro : { *(.zdebug_macro) } /* DWARF 3. */ .debug_ranges : { *(.debug_ranges) } .zdebug_ranges : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types : { *(.debug_types) } .zdebug_types : { *(.zdebug_types) } /* For Go and Rust. */ .debug_gdb_scripts : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts : { *(.zdebug_gdb_scripts) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2018 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___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); KEEP (*(.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$*)) __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .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_*) } .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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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 .zdebug.gnu.linkonce.wt.*) } /* 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 ld --enable-auto-import: Like the default script except read only data is placed into .data */ /* Copyright (C) 2014-2018 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) . = 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___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); KEEP (*(.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__) : { __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .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_*) } .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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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 .zdebug.gnu.linkonce.wt.*) } /* 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: cannot create .buildid section, --build-id ignored %F%P: cannot perform PE operations on non PE output file '%pB' warning: resolving %s by linking to %s Use --enable-stdcall-fixup to disable these warnings Use --disable-stdcall-fixup to disable these fixups %X%P: unable to process relocs: %E %P: warning: --export-dynamic is not supported for PE+ targets, did you mean --export-all-symbols? %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 %P: warning, file alignment > section alignment use-nul-prefixed-import-tablesenable-runtime-pseudo-reloc-v2�Eëÿ Bëÿ€Bëÿ`Bëÿ@Bëÿ BëÿBëÿàAëÿÀAëÿ Aëÿ€Aëÿ`AëÿÀBëÿEëÿ€@ëÿðDëÿ0DëÿDëÿðCëÿÐCëÿ@Aëÿ AëÿAëÿè@ëÿÐ@ëÿ�DëÿpDëÿPDëÿ°DëÿPEëÿ0EëÿpEëÿÐDëÿ¸@ëÿHëÿ¸@ëÿðGëÿÐGëÿ°Gëÿ�GëÿpGëÿPGëÿ0GëÿGëÿðFëÿÐFëÿ°Fëÿ�FëÿpFëÿPFëÿ0FëÿFëÿðEëÿ(@ëÿmainCRTStartuppep_fixup_stdcallsgld_i386pep_after_opengld_i386pep_set_symbolsset_pep_nameis_underscoringpei-i386pe-i386ei386pe.cDllMainCRTStartup@12thumb-entryenable-extra-pe-debugdisable-large-address-awarei386pe --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 --no-seh Image does not use SEH. No SE handler may be called in this image %P: warning: resolving %s by linking to %s /* Script for -N: mix text and data on same page; don't align data */ /* Copyright (C) 2014-2018 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-i386) 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) /* 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); KEEP(*(.ctors)); KEEP(*(.ctor)); KEEP(*(SORT_BY_NAME(.ctors.*))); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); KEEP(*(.dtors)); KEEP(*(.dtor)); KEEP(*(SORT_BY_NAME(.dtors.*))); LONG (0); KEEP (*(.fini)) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); 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$*)) __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .eh_frame BLOCK(__section_alignment__) : { KEEP(*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .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_*) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pe.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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; KEEP (SORT(*)(.idata$5)) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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.*) } /* 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 ld --enable-auto-import: Like the default script except read only data is placed into .data */ /* Copyright (C) 2014-2018 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-i386) 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) /* 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); KEEP(*(.ctors)); KEEP(*(.ctor)); KEEP(*(SORT_BY_NAME(.ctors.*))); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); KEEP(*(.dtors)); KEEP(*(.dtor)); KEEP(*(SORT_BY_NAME(.dtors.*))); LONG (0); KEEP (*(.fini)) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); 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__) : { __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .eh_frame BLOCK(__section_alignment__) : { KEEP(*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .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_*) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pe.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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; KEEP (SORT(*)(.idata$5)) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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.*) } /* 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 ld -Ur: link w/out relocation, do create constructors */ /* Copyright (C) 2014-2018 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-i386) SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { .text : { *(.text) /* 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); KEEP(*(.ctors)); KEEP(*(.ctor)); KEEP(*(SORT_BY_NAME(.ctors.*))); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); KEEP(*(.dtors)); KEEP(*(.dtor)); KEEP(*(SORT_BY_NAME(.dtors.*))); LONG (0); /* ??? Why is .gcc_exc here? */ } /* 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) } .eh_frame : { KEEP(*(.eh_frame)) } .pdata : { KEEP(*(.pdata)) } .bss : { *(.bss) *(COMMON) } .edata : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) } .idata : { /* This cannot currently be handled with grouped sections. See pe.em:sort_sections. */ } .CRT : { /* ___crt_xl_end__ is defined in the TLS Directory support code */ } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of 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) } .debug_pubtypes : { *(.debug_pubtypes) } .zdebug_pubtypes : { *(.zdebug_pubtypes) } /* 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) } .debug_macro : { *(.debug_macro) } .zdebug_macro : { *(.zdebug_macro) } /* DWARF 3. */ .debug_ranges : { *(.debug_ranges) } .zdebug_ranges : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types : { *(.debug_types) } .zdebug_types : { *(.zdebug_types) } /* For Go and Rust. */ .debug_gdb_scripts : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts : { *(.zdebug_gdb_scripts) } } /* Script for ld -r: link without relocation */ /* Copyright (C) 2014-2018 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-i386) SEARCH_DIR("=/usr/x86_64-pep/lib"); SECTIONS { .text : { *(.text) /* ??? Why is .gcc_exc here? */ } /* 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) } .eh_frame : { KEEP(*(.eh_frame)) } .pdata : { KEEP(*(.pdata)) } .bss : { *(.bss) *(COMMON) } .edata : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) } .idata : { /* This cannot currently be handled with grouped sections. See pe.em:sort_sections. */ } .CRT : { /* ___crt_xl_end__ is defined in the TLS Directory support code */ } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of 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) } .debug_pubtypes : { *(.debug_pubtypes) } .zdebug_pubtypes : { *(.zdebug_pubtypes) } /* 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) } .debug_macro : { *(.debug_macro) } .zdebug_macro : { *(.zdebug_macro) } /* DWARF 3. */ .debug_ranges : { *(.debug_ranges) } .zdebug_ranges : { *(.zdebug_ranges) } /* DWARF 4. */ .debug_types : { *(.debug_types) } .zdebug_types : { *(.zdebug_types) } /* For Go and Rust. */ .debug_gdb_scripts : { *(.debug_gdb_scripts) } .zdebug_gdb_scripts : { *(.zdebug_gdb_scripts) } } /* Script for -n: mix text and data on same page */ /* Copyright (C) 2014-2018 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-i386) 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) /* 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); KEEP(*(.ctors)); KEEP(*(.ctor)); KEEP(*(SORT_BY_NAME(.ctors.*))); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); KEEP(*(.dtors)); KEEP(*(.dtor)); KEEP(*(SORT_BY_NAME(.dtors.*))); LONG (0); KEEP (*(.fini)) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); 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$*)) __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .eh_frame BLOCK(__section_alignment__) : { KEEP(*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .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_*) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pe.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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; KEEP (SORT(*)(.idata$5)) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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.*) } /* 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-2018 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-i386) 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(*(.init)) *(.text) *(SORT(.text$*)) *(.text.*) *(.gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) /* 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. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that ability is needed 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). See PR 22762 for more details. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); KEEP(*(.ctors)); KEEP(*(.ctor)); KEEP(*(SORT_BY_NAME(.ctors.*))); LONG (0); /* See comment about __CTOR_LIST__ above. The same reasoning applies here too. */ ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); KEEP(*(.dtors)); KEEP(*(.dtor)); KEEP(*(SORT_BY_NAME(.dtors.*))); LONG (0); KEEP (*(.fini)) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); 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$*)) __rt_psrelocs_start = .; KEEP(*(.rdata_runtime_pseudo_reloc)) __rt_psrelocs_end = .; } __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .eh_frame BLOCK(__section_alignment__) : { KEEP(*(.eh_frame*)) } .pdata BLOCK(__section_alignment__) : { KEEP(*(.pdata*)) } .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_*) } .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pe.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); KEEP (SORT(*)(.idata$4)) __IAT_start__ = .; KEEP (SORT(*)(.idata$5)) __IAT_end__ = .; KEEP (SORT(*)(.idata$6)) KEEP (SORT(*)(.idata$7)) } .CRT BLOCK(__section_alignment__) : { ___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__ = . ; } /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be at the end of 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) } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_pubtypes) } /* 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) } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.zdebug_macro) } /* DWARF 3. */ .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.*) } /* 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: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols? enable-runtime-pseudo-reloc-v1p¸êÿP¸êÿ0¸êÿ¸êÿð·êÿзêÿp¹êÿP¹êÿ0¹êÿ¹êÿ°¹êÿ�¹êÿйêÿ ¶êÿ°µêÿ ½êÿ½êÿà¼êÿÀ¼êÿ`½êÿ@½êÿ€½êÿ ¼êÿ°µêÿ€¼êÿh¼êÿ ¼êÿ¼êÿà»êÿÀ»êÿ »êÿ·êÿà¶êÿÀ¶êÿàµêÿp·êÿX·êÿ@·êÿ ·êÿàµêÿ@»êÿ€»êÿàºêÿ »êÿ»êÿ°·êÿ�·êÿ€¶êÿ`¶êÿ@¶êÿ(¶êÿ¶êÿøµêÿð¸êÿиêÿ`»êÿPµêÿmainCRTStartuppe_fixup_stdcallsgld_i386pe_after_opengld_i386pe_set_symbolsset_pe_nameis_underscoringLIBRARY%s.%s$:-_?@$:-_?/@<>CODEconstantDESCRIPTIONDIRECTIVEEXPORTSHEAPSIZEIMPORTSnonameprivateSTACKSIZEVERSION%s.%s%s%P: %s:%d: %s SEGMENTS-heap-attr-export-aligncomm%s:%d: Warning: path components stripped from %s, '%s' Warning: .drectve `%s' unrecognized Warning: corrupt .drectve at end of def file ¨Üêÿ†ÜêÿÄÝêÿ©ÝêÿŽÝêÿoÝêÿÜêÿÐÐêÿÐÐêÿÐÐêÿíÛêÿÒÛêÿ Ùêÿ ØêÿÐÐêÿÐÐêÿÐÐêÿXÐêÿ(×êÿÚêÿ×êÿ×êÿöÖêÿöÖêÿÑÖêÿÑÖêÿœÖêÿœÖêÿÐÐêÿÐÐêÿ ÛêÿrÛêÿCÛêÿÛêÿéÚêÿ½ÚêÿÐÐêÿÐÐêÿ ÚêÿCÚêÿ(×êÿµÖêÿÐÐêÿÐÐêÿµÖêÿØêÿ×êÿöÖêÿÑÖêÿœÖêÿzÜêÿnÜêÿbÜêÿVÜêÿJÜêÿ>Üêÿ2Üêÿ&ÜêÿcÝêÿWÝêÿKÝêÿ?Ýêÿ3Ýêÿ'ÝêÿÝêÿÝêÿÝêÿ÷ÜêÿëÜêÿßÜêÿÓÜêÿÇÜêÿ€Ôêÿ&ÚêÿÃ×êÿI×êÿI×êÿ€ÔêÿêÖêÿ€Ôêÿ»×êÿµÖêÿØêÿ€Ôêÿ»×êÿ€ÔêÿÚêÿ€ÔêÿÃ×êÿ\Ùêÿ€ÔêÿêÖêÿ€ÔêÿêÖêÿDÞêÿóÙêÿÙêÿÙêÿòØêÿòØêÿòØêÿÙêÿïØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿòØêÿÙêÿÙêÿòØêÿòØêÿòØêÿÙêÿïØêÿ#$$%%%%%%%%%%%%%%&&&'(())))))))**++++++,,--..//0011112222222222222222222222333334455667788999::;;<=   g ' €�:7ƒ„…†G JŽ�NW ! \_!"!f   u:‡ ‰ >8R/'+ÿÿÿÿÿÿÿÿ/<r6,s@0123A7BSqI !"#$%-&r'=‰xy†‡D<Tz{|}ˆŠ‹ŒG~`^_a�‘ÑÿÑÿÑÿÑÿc0123JeQYKZ„-NjŽ-mW\]fEbph iQ…kn uv‚ƒrF V�� [UdPH +M ÿÿ:;€�>?894RO5()*tgXLClw.o®ÿ®ÿk®ÿAõÿ®ÿ®ÿK®ÿRüÿ¯ÿ]9føÿ�µÿ®ÿ®ÿe®ÿ®ÿ®ÿûÿ®ÿRRBHCD=LQZZb112345 - ) X ![MN.+*(V \_PO0,W/T^acYU'`]//STTTT&$%TT"#z ç 55ï  î_®®®®®®®®®®®®®®®®®®®®®®® /®CC®®66®®®®0®0òï® ®:2®=®@!®®® /® ?®® ®®®5®0®® %s LIBRARY NAME BASE=0xDESCRIPTION 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 __pei386_runtime_relocator__fu%d_nmth%06d.o__nm_thnk_fu%06d.o.rdata_runtime_pseudo_relocertr%06d.oCreating library file: %s %X%P: bfd_openr %s: %E %X%P: bfd_close %s: %E %s%s%s(data)%X%P: open %s: %E %s is already loaded .drectve_NULL_THUNK_DATA__builtin__IMPORT_DESCRIPTOR_dllcrt1.odllcrt2.ogcrt0.ogcrt1.ogcrt2.ocrtbegin.ocrtend.olibcygwinlibgcclibgcc_slibstdc++libmingw32libmingwexlibg2clibsupc++libobjclibgcjlibmsvcrtlibmsvcrt-oslibucrtbasepe-bigobj-x86-64pei-shlpe-shlpei-mipspe-mipspei-arm-littlepe-arm-littlepei-arm-wince-littlepe-arm-wince-little_NULL_IMPORT_DESCRIPTORcygwin_crt0DllMainDllEntryPoint_cygwin_dll_entry_cygwin_crt0_common_cygwin_noncygwin_dll_entrycygwin_premain0cygwin_premain1cygwin_premain2cygwin_premain3do_pseudo_reloc_impure_ptr_fmodeenviron__dso_handle_DllMainCRTStartup%X%P: can not create .edata section: %E %X%P: can not create .reloc section: %E %P: zero vma section reloc detected: `%s' #%d f=%d %X%P: error: %d-bit reloc in dll considering exporting: %s, abfd=%p, abfd->my_arc=%p %X%P: unsupported PEI architecture: %s 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 %P: can't open output def file %s creating runtime pseudo-reloc entry for %s (addend=%d) %X%P: %C: variable '%pT' can't be auto-imported; please read the documentation for ld's --enable-auto-import for details %X%P: can't open .lib file: %s %X%P: %s(%s): can't find member in non-archive file%X%P: bfd_set_archive_head: %E %X%P: %s(%s): can't find member in archive%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 %X%P: error: can't use long section names on this arch %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 6îêÿ0íêÿ`íêÿxíêÿHíêÿHíêÿ6îêÿØíêÿéêÿ�íêÿéêÿéêÿpep_implied_import_dllmake_onepep_find_data_importspep_dll_id_targetÀŸåðœå<�Ð`+@ ÿ%��@feat.00DllMain@12DllEntryPoint@0_cygwin_dll_entry@12_cygwin_crt0_common@8cygwin_attach_dll_cygwin_noncygwin_dll_entry@12.TëÿðRëÿ Sëÿ8SëÿSëÿSëÿ.Tëÿ˜Sëÿ˜NëÿPSëÿ˜Nëÿ˜Nëÿpe_implied_import_dllmake_onepe_find_data_importspe_dll_id_targetÀŸåðœå<�Ð`+@ ÿ%��€€%s: error: too many @-files encountered %s: error: @-file refers to a directory ;Œ°€ÐæÿØðÝæÿ Þæÿ@*Þæÿ@F_ÞæÿøZdÞæÿ ¨pÞæÿtCÐêæÿ¨Àëæÿ@ìæÿD�ìæÿ`àìæÿ|€íæÿ´@çÿ@çÿ\çÿ�@çÿ¤çÿè çÿçÿ,�çÿ@çÿxpçÿ¤ çÿÐ@çÿTçÿ€�çÿ Ð1çÿì�2çÿ3çÿ< 3çÿx 4çÿ¨@4çÿÄP4çÿØ`4çÿìp4çÿ€4çÿ�4çÿ( 4çÿ<°4çÿPÀ4çÿdÐ4çÿxà4çÿŒ�5çÿ´ 5çÿȰ5çÿÜÀ5çÿð°6çÿ à7çÿ\8çÿp@8çÿ„p8çÿ˜ 8çÿ¬Ð8çÿÀ9çÿÔ09çÿè`9çÿü€9çÿ 9çÿ(�:çÿddçÿ¸0dçÿÌðdçÿàeçÿô@eçÿpeçÿ€eçÿ0�eçÿD�fçÿp°fçÿˆÐfçÿ  hçÿè hçÿ0mçÿTÀmçÿxnçÿ `oçÿÜÀpçÿ( Ðpçÿ< Pqçÿ\ Ptçÿ¨ °tçÿ¼ @uçÿÐ €uçÿä Ðuçÿø °vçÿT!0wçÿ|! wçÿœ! zçÿ"Іçÿ#à‡çÿT#pŠçÿ°#ÀŠçÿä#P‹çÿ$Œçÿp$€ŒçÿÐ$�çÿ%À�çÿd%€�çÿÈ%Ð�çÿ,&ð‘çÿŒ&�’çÿä&@“çÿ'€“çÿH'`”çÿl' •çÿ°'–çÿ(€–çÿ( –çÿ((À–çÿ<(€—çÿŒ(0˜çÿ¬( ™çÿØ(pšçÿ) šçÿ4)@œçÿt)�çÿ¨) �çÿ¼)0�çÿÐ)p�çÿä) �çÿø)`žçÿ0*pžçÿD*àŸçÿ”*À­çÿà*€®çÿ@+°çÿŒ+°çÿ +0±çÿð+p²çÿ , ³çÿ@,`´çÿp,дçÿ¨,0ºçÿô,€½çÿ4-`Àçÿ˜-ðÂçÿ.@ÃçÿD.ðÃçÿ„. Äçÿ¬. Èçÿì.�Èçÿ /àÈçÿH/@Éçÿ\/ÐÉçÿ”/`ÊçÿÐ/�Êçÿä/àÊçÿü/àÌçÿ0àÍçÿ\0Îçÿ„0@Îçÿ¬0àÎçÿÌ0ðÓçÿ1€ÔçÿL1ðÕçÿÈ1pÖçÿø1×çÿ@2PÚçÿ¨2ÛçÿÜ2PÞçÿD3pÞçÿX30àçÿ¤3pàçÿÀ3ðàçÿÔ3@âçÿð3@äçÿ,4åçÿl40åçÿ€4éçÿä4péçÿ5 éçÿ05°éçÿD5ðéçÿl5êçÿ€5Pêçÿ¨5�êçÿÔ5 ëçÿ6`ëçÿD6 ëçÿl6ðëçÿˆ6ìçÿœ6�ìçÿÈ6àðçÿ$7ððçÿ87@ñçÿL7�ñçÿx7òçÿ˜7@òçÿ¬7póçÿø7°óçÿ8ðóçÿ08Pôçÿ\8õçÿˆ8PöçÿÄ80øçÿ9úçÿt9Púçÿœ9�þçÿ:€èÿÀ: èÿø:� èÿ,;ð èÿH;0!èÿ`;p!èÿx;P"èÿ¸;@#èÿè;�#èÿ<ð#èÿ<<@$èÿX<P$èÿl<°'èÿà<Ð'èÿô< (èÿ=°(èÿ<=À(èÿP= )èÿp=@)èÿˆ= )èÿ°=*èÿØ=*èÿð=�*èÿ> +èÿT>�,èÿ¬>à1èÿ?ð1èÿ,?2èÿ@?`2èÿx?°2èÿ°?�3èÿð?p5èÿl@6èÿ @9èÿè@P9èÿA;èÿXA€<èÿìAð=èÿXBÐ?èÿ¼Bp@èÿC Bèÿ¨CPCèÿÌCDèÿD0Fèÿ˜DàFèÿ¼D@Ièÿ E Oèÿ EUèÿF@UèÿTF€UèÿhFðUèÿ”FÐVèÿÌFpWèÿìF°qèÿ G rèÿ¼GprèÿäGÀrèÿHsèÿB�BŽB �B(ŒA0†A8ƒDP— 8C0A(B BBBA 0Üçÿ±Jƒ~ X PÃ(TxçÿBŒA†H ƒpAB8€Ìçÿ†BŒA†A ƒg ABB F ABA ,¼ çÿvBŒA†D ƒS ABA ìpçÿAƒLtçÿpçÿ0lçÿDhçÿXdçÿl`çÿ€\çÿ”Xçÿ¨Tçÿ¼Pçÿ$ÐLçÿ¤A†AƒD ›AAøÔçÿ Ðçÿ Ìçÿ,4ÈçÿèHŒD†D ƒ¡ AEI 8dˆçÿ0B�EŒA †D(ƒF0ç (A ABBI  |çÿ%´˜çÿ%È´çÿ%ÜÐçÿ%ðìçÿ%çÿ%$çÿ%,@çÿ%@\çÿThçÿ8lpçÿåB�GŒD †A(ƒJ@Ÿ (A ABBC P¨$çÿ})B�JŽE �B(ŒA0†A8ƒGÀ¶ 8A0A(B BBBA üPFçÿ\Fçÿ³$Gçÿ8Gçÿ0L0Gçÿ0`LGçÿtHGçÿ(ˆDGçÿûAƒG ¿ DE gC´HçÿDQÌ HçÿDVDä(HçÿHUŒH†H ƒ|ABDÃÆÌX ƒ†ŒHÃÆÌH ƒ†Œ, 0Içÿ{Aƒ\ C VHL �Içÿ‰B�BŽB �B(ŒA0†A8ƒDPo 8A0A(B BBBI ˜ ÔMçÿ‡AƒW H A G $¼ @NçÿLA†DƒD @AA8ä hNçÿDB�EŒA †D(ƒD0 (C ABBH H |OçÿSB�PŽB �B(ŒA0†A8ƒKP‹ 8A0A(B BBBH l �Pçÿ € ŒPçÿ{HƒF B H  ìPçÿñB�BŽJ �E(ŒD0†A8ƒDp 8D0A(B BBBH ì  Sçÿ[ ìSçÿ� hTçÿ6( ”TçÿHX< ÐTçÿßB�BŒA †A(ƒD0U (J GDBJ K (A ABBG n(M CBB$˜ TUçÿz_†DƒI FFAÀ ¬UçÿeDF F Pdà üUçÿûB�BŽE �B(ŒA0†D8ƒD@¿ 8A0A(B BBBC ¾ 8A0A(B BBBA H ”Xçÿ& B�BŽB �B(ŒA0†A8ƒD@3 8A0A(B BBBE Ø 8C0A(B BBBL h 8F0A(B BBBI [ 8C0A(B BBBI ¡ 8A0A(B BBBE V 8C0A(B BBBN N 8K0H(B BBBG f 8C0A(B BBBN Š 8M0A(B BBBH 8\ °cçÿ HŒA†D ƒÍ CBA K CBH X˜ „dçÿŒp�IŒA †A(ƒJpI(F ABBGÃÆÌÍPpƒ†Œ�xÃÆÌÍPpƒ†Œ�0ô ¸fçÿCA†KƒG N GAG DIA4(Ôfçÿ‡BŒD†D ƒZ ABI QCBP`,gçÿ¶KŽB�F ŒD(†A0ƒ| (F BBBH A(C BBBAÃÆÌÍÎ\´˜gçÿgB�EŽE �E(ŒD0†D8ƒG@V 8P0D(B BBBF D8A0A(B BBBD¨gçÿxB�BŽB �B(ŒA0†A8ƒD@_8A0A(B BBBH\àgçÿ±B�BŽB �B(ŒA0†A8ƒD@t 8A0A(B BBBD `¨Thçÿ¼B�BŽB �B(ŒA0†D8ƒG€± 8A0A(B BBBA á8A0A(B BBB` °içÿLB�BŽB �B(ŒD0†D8ƒDpÝ 8A0A(B BBBE A8A0A(B BBB\pœjçÿB�EŽB �E(ŒD0†A8ƒD`¦ 8A0A(B BBBI v8A0A(B BBBTÐ\kçÿžBŽE�L ŒA(†D0ƒG@N 0A(A BBBK U0A(A BBB4(¤kçÿ¦A†AƒG ` AAE D CAH (`lçÿ?A†JƒG T AAH Œ0lçÿÙG v C f J h@°ìlçÿ¿BŒA†A ƒD0{  AABI k  AABA LôhmçÿâBŽB�H ŒG(†D0ƒJ (A BBBH t (A BBBE DnçÿnXdnçÿDlpnçÿDL€|nçÿµBŽE�E ŒD(†A0ƒC (A BBBE M(A BBBÐìnçÿ¦Hƒg A (ð|oçÿar†AƒG ® AAF <ÀpçÿÏBŽE�E ŒD(†D0ƒ’ (A BBBC \Pqçÿ%Aƒ\<xdqçÿžBŽL�E ŒD(†C0ƒÍ (A BBBB 0¸ÄrçÿÁKŒD†H ƒy ABE hÃÆÌì`sçÿ \sçÿ Xsçÿ6q(„sçÿ0k4< sçÿ´BŒD†A ƒt DBO PEHt(tçÿ Lˆ$tçÿmB�BŒA †A(ƒD0 (D ABBF f (D ABBA HØDuçÿÛ B�BŽB �B(ŒA0†A8ƒD�ƒ 8A0A(B BBBE \$Ø‚çÿµB�GŽE �E(ŒG0†D8ƒG@D 8A0A(B BBBE g8C0D(D BBBH„8ƒçÿ€B�NŽB �B(ŒG0†A8ƒDPÙ 8A0A(B BBBA Ðl„çÿLäh„çÿBŽG�E ŒA(†M0ƒk (A BBBB s (A BBBF 48…çÿ:D  G 0P\†çÿ¯A†HƒG f AAH fFA,„؆çÿ5BŒM†C ƒp ABK 4´è‡çÿbBŒA†C ƒJ ABE FABHì ˆçÿQB�GŽJ �E(ŒA0†A8ƒDPq 8D0A(B BBBD <84�çÿMB�BŒA †A(ƒD Ç (A ABBI `xD�çÿÜB�HŒD †A(ƒG0_ (A ABBE V (A ABBD  (A ABBC |ÜÀ’çÿ‹B�BŽB �H(ŒD0†G8ƒD€\ 8A0A(B BBBE K 8A0A(B BBBC Ç 8A0A(B BBBG (\ДçÿLBŒD†D ƒzAB<ˆô”çÿªKŽI�B ŒA(†D0ƒ†(A BBBAÃÆÌÍÎ$Èd•çÿ¥iƒ\ K H H D<ðì•çÿV†AƒG QAAGÃÆX ƒ†g AAG 00,™çÿgA†KƒD B DAI DAA$dh™çÿDA†IƒD sAAŒ�™çÿ]4 Ü™çÿ�IŒH†H ƒw AIF dAI8Ø4šçÿ�j†HƒG pDABÃÆH ƒ†DCAˆšçÿ$(¤šçÿOD J@ÜšçÿHTÈœçÿüB�FŽB �F(ŒA0†A8ƒD@R 8A0A(B BBBF $ |�çÿ-A†AƒD dAA$È„�çÿ-A†AƒD dAAðŒ�çÿŸHƒo Q H žçÿB�BŽB �B(ŒA0†A8ƒDPP 8D0A(B BBBE 0\Тçÿ‡A†DƒD U DAE YDAx�,£çÿpB�BŽB �E(ŒD0†D8ƒD@w 8A0A(B BBBH Ž 8A0A(B BBBH U8J0D(B BBB,  ¤çÿqF†HƒG o AAJ `ÃÆD<p¤çÿ›KŒH†D ƒ| ABJ X ABE VABAÃÆÌd„Ȥçÿ8K�IŽH �I(ŒD0†D8ƒG@h 8A0A(B BBBJ àÃÆÌÍÎÏH@ƒ†Œ�Ž�0ì §çÿ¡LŒA†A ƒT ABK pÃÆÌd ¨çÿEB�BŽB �B(ŒA0†A8ƒD`k 8A0A(B BBBE Ú 8A0A(B BBBD ˆ«çÿ Hœ«çÿ¿B�EŽJ �E(ŒD0†D8ƒD@- 8A0A(B BBBG 脬çÿ8Aƒv¨¬çÿ€­çÿID‘ K 84H®çÿóBŽB�B ŒA(†C0ƒp (A BBBG <p °çÿÃBŒA†A ƒD0U  AABG – AAB°œ°çÿ`Ĩ°çÿÔB�BŽE �B(ŒD0†A8ƒG`R 8A0A(B BBBE q 8A0A(B BBBE 4($´çÿTB�JŒD †D(ƒD0u(A ABB`L´çÿ&th´çÿ$ˆd´çÿ>A†IƒD mAA°|´çÿ$Ĉ´çÿ>A†IƒD mAA(ì ´çÿ?BŒD†H ƒmABD ´´çÿ‚B�JŽE �E(ŒD0†D8ƒD@U8A0A(B BBB$` ü´çÿ>A†IƒD mAA$ˆ µçÿ5A†HƒD eAA° ,µçÿDHƒ{Ì `µçÿ(à \µçÿ‚A†JƒJ e AAA X !ÀµçÿFB�EŽH �B(ŒD0†A8ƒG`phIpUhA`‹ 8D0A(B BBBD h!´¹çÿ |!°¹çÿE(�!ì¹çÿMBŒI†C ƒtAI¼!ºçÿqAƒc H Ü!pºçÿ0kHð!Œºçÿ,B�JŽE �E(ŒD0†A8ƒFPb 8A0A(B BBBC <"p»çÿ3AƒjX"”»çÿ3Aƒj(t"¸»çÿVA†DƒG m AAE ( "ì»çÿ¦AƒNQ NAV K 8Ì"p¼çÿHB�NŒA †A(ƒD0 (D ABBF H#„½çÿÙB�BŽB �E(ŒG0†J8ƒD`x 8A0A(B BBBF `T#¿çÿÕBŽJ�E ŒD(†D0ƒW (A BBBI  (A BBBJ Á (A BBBH $¸#”Àçÿ<A†IƒL cAAdà#¬Àçÿ1B�BŽB �B(ŒA0†A8ƒDP_ 8A0A(B BBBI 6 8A0A(B BBBH ¸H$„Äçÿê B�BŽB �B(ŒA0†A8ƒD€ô ˆA�H˜E I€Õ 8A0A(B BBBH C 8A0A(B BBBC _ 8A0A(B BBBG  ˆE�oˆE€ˆB�tˆA€4%¸äçÿ‰BŒA†D ƒJ ABD dAK0<%åçÿqA†DƒD s AAB nAAp%\åçÿZqƒaŒ% åçÿ?Ds¤%Èåçÿ?Ds<¼%ðåçÿÒBŽI�I ŒA(†D0ƒŽ (A BBBB ,ü%�æçÿåBŒJ†A ƒÔAB(,&PççÿNBŒD†D ƒ@AB$X&tççÿSA†KƒG }AA€&¬ççÿJAƒHœ&àççÿp°&ÜççÿXP�BŽB �B(ŒA0†A8ƒD@£HBP`HA@˜ 8A0A(B BBBD xÃÆÌÍÎÏA@ƒ†Œ�Ž�$'Èêçÿ8'ÔêçÿJAƒH(T'ëçÿ�A†DƒG@L AAF €'lëçÿ ”'hëçÿYAƒg P W´'¨ëçÿDK$Ì'°ëçÿSA†KƒG }AA$ô'èëçÿSA†KƒG }AA( ìçÿ4(ìçÿ|aTHL(€ìçÿ‚B�BŒD †D(ƒD0N (C ABBJ D(F CBBT˜(ÄìçÿmBŽE�E ŒD(†D0ƒD@¿ 0A(A BBBA [ 0G(C BBBE hð(ÜíçÿCP�BŽB �B(ŒA0†A8ƒDP‰ 8AÃ0AÆ(BÌ BÍBÎBÏI YÃÆÌÍÎÏAPƒ†Œ�Ž�\)Àòçÿp)¼òçÿ4„)ÈòçÿIB�NŒD †D(ƒL0I(P CBB4¼)àòçÿIB�NŒD †D(ƒL0I(P CBB<ô)øòçÿÖK�EŒA †D(ƒG0}(F ABBDÃÆÌÍx4*˜óçÿÖP�BŽB �B(ŒD0†D8ƒGPë 8A0A(B BBBF xÃÆÌÍÎÏHPƒ†Œ�Ž�S 8A0A(B BBBA 0°*üôçÿ‚BŒG†D ƒG@  AABI Dä*XõçÿBŽE�J ŒD(†I0ƒD�Ä 0C(A BBBH ,+ øçÿ9Dd H DLL+@øçÿ±IŽE�B ŒD(†A0ƒà (C BBBO q (A BBBH �œ+°ùçÿeB�EŽB �B(ŒD0†D8ƒD@K 8P0H(D BBBL j 8G0D(D IBBJ D 8A0A(B BBBB W8K0D(D BBBh0,ŒúçÿmR�BŽB �E(ŒD0†A8ƒDPX 8A0A(B BBBJ ˜ 8DÃ0AÆ(BÌ BÍBÎBÏK `œ,�ûçÿÒB�EŽE �E(ŒD0†D8ƒGP\ 8A0A(B BBBJ § 8A0A(B BBBG T- ýçÿ BŽB�E ŒD(†C0ƒG@X 0A(A BBBI d 0A(A BBBD \X-Týçÿ$P�EŒA †A(ƒG@³(Ià AÆBÌBÍQ@ƒ†Œ�h (Jà CÆBÌBÍG 0¸-ôšæÿY B�BŽB �B(ŒA0†A8ƒDp ì-ðþçÿ¯Aƒg H T L 4.|ÿçÿ·A†DƒG d AAF O DCJ �H.èÿB�EŽE �E(ŒD0†D8ƒG@[ 8A0A(B BBBK u 8G0G(E DBBH o 8G0D(D BBBL R 8J0A(B BBBK Ü.�èÿ¯Aƒg H T L `/èÿ]B�BŽB �B(ŒA0†A8ƒGPß 8A0A(B BBBE C8F0H(B BBB|d/èÿÝB�BŽB �B(ŒA0†D8ƒDPa 8A0A(B BBBD ˆ 8A0A(B BBBF m 8A0A(B BBBA dä/x èÿ×B�DŽB �B(ŒA0†A8ƒD�[ 8A0A(B BBBK B 8A0A(B BBBA L0ðèÿ2Qƒ`zRx �ƒ â—æÿ5˜0äèÿ9(¬0èÿhA†HƒD r FAJ 4Ø0TèÿÞA†LƒK0B AAD c FAF 1üèÿœYƒr M C°01|èÿ@B�BŒA †H(ƒG0C (A ABBC k (C ABBM 3 (A ABBG s (A ABBG l (H ABBG ¯ (J CBBE  (M CBBE ä1*èÿcAƒa$2\*èÿKA†IƒD zAA((2„*èÿFBŒI†D ƒsAB(T2¨*èÿFBŒI†D ƒsAB€2Ì*èÿ'”2è*èÿ30¨2+èÿ€BŒI†D ƒG0o  AABG 8Ü2`+èÿzB�JŒD †D(ƒG@s (A ABBD (3¤+èÿqA†HƒG0j AAD (D3ø+èÿ?BŒI†D ƒlAB(p3 ,èÿABŒI†C ƒoAB$œ30,èÿGA†IƒG sAA(Ä3X,èÿABŒI†C ƒoAB$ð3|,èÿ@A†DƒL lAA|4”,èÿtA†HƒG | CAH m CHH í FAL ` JAM l AAB D MAN · AAG DJA8˜4”/èÿ�BŒA†A ƒ] ABD A HBE Ô4ø/èÿDL8ì40èÿ4BŒA†A ƒ… ABD | ABA 8(51èÿ½BŒA†A ƒ` ABI X ABM d5ˆ1èÿQDe G W„5È1èÿ˜5Ô1èÿ ¬5Ð1èÿ À5Ì1èÿ Ô5È1èÿ è5Ä1èÿ ü5À1èÿ 6¼1èÿ $6¸1èÿ 86´1èÿ L6°1èÿ `6¬1èÿ t6¨1èÿˆ6´1èÿœ6À1èÿ °6¼1èÿÄ6È1èÿØ6Ô1èÿì6à1èÿ7ì1èÿ7ø1èÿ(72èÿ<72èÿ P7 2èÿ%D` h7$2èÿ¸D | H U C Œ7À2èÿ 7¼2èÿ´7¸2èÿÈ7´2èÿÜ7À2èÿ#ð7Ü2èÿLDC83èÿ'DY 8,3èÿ'DY(88D3èÿQM†DƒK pAABÃÆ8d8x3èÿÕBŒD†A ƒF ABH J HDJ 4 84èÿŒBŒF†H ƒO ABF TDEØ8t4èÿì8€4èÿ9Œ4èÿ49˜4èÿáA†MƒH k AAE –AAL9P5èÿ`9\5èÿt9h5èÿ„BŒD†D ƒ\”9Ø5èÿB�BŽB �B(ŒA0†G8ƒGàË 8A0A(B BBBD bèIð\èBàô9ˆCèÿ Gà˜ : DèÿÀAƒJà³A$4:¨Dèÿ3A†OƒI IIC\:ÀDèÿtGà­ D x:$Fèÿ‘Gà‰$”:¨FèÿZA†LƒI°CA<¼:àFèÿàBŽB�B ŒK(†D0ƒz (A BBBJ Hü:€Gèÿ½PŒD†A ƒTEBHÃÆÌH ƒ†ŒS EBF UEB`H;ôGèÿZB�BŽB �E(ŒD0†A8ƒDP£ 8A0A(B BBBG ½ 8A0A(B BBBA H¬;ðIèÿžB�BŽB �B(ŒA0†D8ƒGP’ 8D0A(B BBBE lø;DOèÿ~B�EŽB �E(ŒA0†D8ƒDPÏXJ`WXAP] 8A0A(B BBBA D 8C0A(B BBBA 8h<TPèÿSRŒA†D ƒ_ ABG F HBH ¤<xQèÿ¸<tQèÿ $Ì<pQèÿnA†DƒD bAA<ô<¸Qèÿ~A†CƒG m AAF N AAH WGC 4=øQèÿaAƒG n AI (X=DRèÿjA†DƒG I FAD @„=ˆRèÿŠBŽH�E ŒD(†D0ƒG`~ 0A(A BBBD HÈ=ÔRèÿ>B�BŽB �B(ŒA0†A8ƒDPö 8A0A(B BBBA H>ÈSèÿ#B�IŽH �B(ŒA0†A8ƒD@Ò 8F0A(B BBBA t`>¬TèÿwB�BŽB �E(ŒD0†A8ƒD€‚ 8A0A(B BBBH NˆG�_ˆA€R 8A0A(B BBBE Ø>´Vèÿ-\ì>ÐVèÿyB�EŒA †D(ƒG0  (A ABBG H (A ABBB x (A ABBB `L?ðWèÿ�P�BŒA †C(ƒD0³ (A ABBA  (F ABBI bÃÆÌÍF0ƒ†Œ�`°?[èÿßB�NŽB �B(ŒA0†F8ƒD`š 8A0A(B BBBE  8A0A(B BBB@˜^èÿ9T`8,@À^èÿzB�BŒD †G(ƒD0n (A ABBI Th@_èÿùBŽB�E ŒD(†D0ƒG@· 0A(A BBBI \ 0F(A BBBG À@¬`èÿCIƒ\ K (Ü@à`èÿSA†DƒG i CAG Aaèÿ@HƒO I _(A4aèÿ@HƒO I _HATaèÿ@HƒO I _hAtaèÿ;IƒZ E „A˜aèÿOIƒe B ^¤AÈaèÿWIƒh G ^HÄAbèÿ|B�BŽE �B(ŒA0†A8ƒG@~ 8A0A(B BBBD dBéÿB�BŽE �B(ŒA0†A8ƒG`ÍhKpThA`D 8D0A(B BBBF 4D[¸EéÿABŒO†A ƒ AEN EAB|[ÐFéÿÑHƒ¸ H H€œ[�Géÿ÷BŽE�E ŒD(†D0ƒD@N 0C(A BBBH N 0C(A BBBH p 0C(A BBBF Ô 0C(A BBBJ x \ JéÿB�BŽB �B(ŒA0†A8ƒJ€€ 8C0A(B BBBH @ 8F0A(B BBBA L8A0A(B BBBLœ\ MéÿI B�BŽB �B(ŒA0†A8ƒD g 8A0A(B BBBA <ì\ Véÿäb�BŒA †A(ƒJ0’ (A ABBH ,]PWéÿY4@]œYéÿžBŒA†D ƒn CBF k CBH x]ZéÿeAƒZ\”]XZéÿìB�BŽB �B(ŒA0†D8ƒDP¯ 8A0A(B BBBF Q8A0A(B BBB4ô]èZéÿ A†AƒD0¡ AAG ä CAH 4,^ÐféÿŸB�EŒD †D(ƒS0v(A ABB`d^8géÿqB�DŽB �B(ŒA0†A8ƒDPç 8A0A(B BBBG L 8A0A(B BBBB `È^Théÿ8B�BŽB �E(ŒH0†A8ƒD Ü¨e°I¸FÀI ‘ 8A0A(B BBBD 8,_0léÿûB�BŒH †H(ƒG0@ (A ABBG h_ôléÿH|_méÿoB�BŽB �B(ŒA0†A8ƒDPÚ 8C0A(B BBBD DÈ_$néÿàB�BŽB �B(ŒA0†D8ƒF@¿8D0A(B BBBL`¼néÿÖB�BŽB �B(ŒA0†A8ƒGÐ 8A0A(B BBBA 0``Lséÿz[ŒA†A ƒM°P  AABB ”`˜téÿ”dk¬` uéÿMDHTÄ`XuéÿB�BŽE �B(ŒA0†A8ƒG`ÍhKpThA`D 8D0A(B BBBF 4a}éÿABŒO†A ƒ AEN EABTa(~éÿÑHƒ¸ H H€taè~éÿ÷BŽE�E ŒD(†D0ƒD@N 0C(A BBBH N 0C(A BBBH p 0C(A BBBF Ô 0C(A BBBJ xøad�éÿB�BŽB �B(ŒA0†A8ƒJ€€ 8C0A(B BBBH @ 8F0A(B BBBA L8A0A(B BBBLtbø„éÿI B�BŽB �B(ŒA0†A8ƒD g 8A0A(B BBBA <Äbø�éÿäb�BŒA †A(ƒJ0’ (A ABBH c¨ŽéÿY4cô�éÿžBŒA†D ƒn CBF k CBH Pc\‘éÿeAƒZ\lc°‘éÿìB�BŽB �B(ŒA0†D8ƒDP¯ 8A0A(B BBBF Q8A0A(B BBB4Ìc@’éÿ A†AƒD0¡ AAG ä CAH 4d(žéÿŸB�EŒD †D(ƒS0v(A ABB` 8D0A(B BBBH TH‡¹êÿPB�BŽB �B(ŒA0†I8ƒDPXD`jXDP©8D0A(B BBB8 ‡üºêÿB�BŒD †A(ƒD@Š (A ABBC 8܇лêÿœBŽB�B ŒD(†A0ƒ‚(D BBBxˆ4¼êÿÃB�BŽB �B(ŒA0†A8ƒDpÔ 8D0A(B BBBI l 8A0A(B BBBB |8A0D(D EBBd”ˆˆ¿êÿEB�IŽB �B(ŒD0†A8ƒD@¿ 8A0A(B BBBG w 8D0D(D BBBO üüˆpÇêÿs B�EŽB �E(ŒD0†D8ƒD�Á˜G B¨B°X�˜H ø˜B�j 8A0A(B BBBI $˜H W˜A�ý˜L f˜B�Z˜N ¬˜B�v 8A0A(B BBBE š˜H �˜A�D 8A0A(B BBBG D˜N �˜A�|ü‰ðÑêÿqB�BŽB �E(ŒA0†A8ƒDp÷ 8A0A(B BBBF g 8J0C(B BBBE L 8F0A(B BBBE L|ŠðÕêÿ¦ B�BŽB �B(ŒA0†A8ƒGàè 8A0A(B BBBA �ÌŠPßêÿ­B�BŽB �B(ŒD0†A8ƒGÀY 8C0A(B BBBG ?ÈÐSÈAÀ{ÈMÐVÈBÀ…ÈKÐTÈAÀ®ÈKÐSÈAÀ`‹lçêÿQNV D WH€‹¬çêÿiB�EŽB �E(ŒA0†A8ƒDp¶ 8A0A(B BBBD Ì‹Ðõêÿ,AƒfHè‹äõêÿÈB�EŽB �B(ŒA0†A8ƒGpj 8A0A(B BBBH (4Œhûêÿ¥A†DƒG Y AAI `Œìûêÿ/tŒüêÿ+ˆŒ$üêÿ@œŒ0üêÿoE�FŽB �B(ŒA0†A8ƒT0A(B BBB8àŒ\ëÿ›B�BŒD †A(ƒG0l (G ABBH `�ÀëÿÊB�BŽB �E(ŒD0†A8ƒGP¿ 8A0A(B BBBH i 8A0A(B BBBE 4€�,ëÿHB�EŒD †D(ƒGÐk(A ABBH¸�DëÿÌB�EŽB �H(ŒD0†A8ƒG°"‰ 8D0A(B BBBA ŽÈëÿ-Žäëÿ*H,Žëÿ–B�JŽM �E(ŒD0†A8ƒGxa8A0A(B BBB(xŽTëÿ:A†DƒG   GAJ `¤ŽhëÿþB�BŽB �E(ŒD0†A8ƒG@þ 8A0A(B BBBA i 8A0A(B BBBE 4�ëÿHB�EŒD †D(ƒGÐk(A ABBH@�ëÿÈB�EŽB �H(ŒA0†D8ƒG°"Œ 8A0A(B BBBE ,Œ� ëÿšBŒA†A ƒq ABH (¼�ëÿAF†DƒD gDÃAÆHè�4ëÿqB�BŽE �B(ŒA0†A8ƒDpŒ 8D0A(B BBBF P4�hëÿÖK�BŽE �L(ŒA0†D8ƒD@r 8A0A(B BBBE hÃÆÌÍÎÏLˆ�ôëÿrB�EŽE �B(ŒA0†A8ƒG N 8A0A(B BBBA Ø�$#ëÿ)ì�@#ëÿ7G o‘h#ëÿ-D‘„#ëÿ8,‘�#ëÿ›B�IŒG †A(ƒG0i (A ABBG h‘ô#ëÿ|‘$ëÿ�‘ $ëÿ<¤‘$ëÿõBŽD�B ŒA(†A0ƒÌ (A BBBC 䑨$ëÿ74ø‘%ëÿeBŒA†D ƒ@ ABF QABzRx � ƒ†Œ$P6æÿd’%ëÿ)$|’ %ëÿDA†AƒD {AA,¤’H%ëÿƒA†DƒD n AAG DÔ’¨%ëÿ]B�EŽE �E(ŒH0†H8ƒG@j8A0A(B BBB“À%ëÿPëë½ÑÅÑÍÑØÑâÑêÑóÑûÑÒFÑÒÒ°ªÒÒ#Ò+Ò2Ò8Ò<ÒEÒNÒTÒYÒ]ÒaÒfÒmÒqÒuÒQÒNÕyÒ}ÒVß�Ò„Ò‹Ò’Ò–ÒšÒžÒ¢Ò¦Ò‡Õ¬Ò°Ò¸Ò¾ÒÄÒÃÒÉÒÎÒÔÒÙÒÑâÒëÒñÒøÒ Ó"Ó3Ó@ÓRÓ\ÓrÓvÓzÓ‰Ó—Ó¯Ó»ÓÕÓìÓúÓÔ ÔÔ!Ô(Ô.Ô3Ô8Ô@ÔHÔQÔ\Ô`ÔfÔkÔrÔ~ÔzÔƒÔ‰Ô�Ô—Ô›Ô¤Ô¢ÔªÔ¶ÔÅÔÌÔÑÔØÔZÖîÔôÔûÔÕ”ÓÕ*ÕÕ"Õ1Õ;Õ{Ö)Ô@Õ#ÔIÕQÕYÕ_ÕhÕqÕ�ÓzÕ�Õ‹ÕÔ�Õ™Õ�ÕªÕ»ÕÈÕÍÕôÓÔÕÝÕíÕôÕúÕÖÖÖ(Ö3Ö;ÖOÖ`ÖÚòmÖ€Ö„ÖˆÖŒÖ�Ö”Ö˜ÖœÖǯ¤Ö­Ö¹Ö½ÖÍÖÑÖâÖõÖùÖ××,×8×I×M×ÁÖc×g×r×{×׃׎גמסץ×J¯©×¹×Ì×Ñ×ß×öרØ%Ø0ØBØTØo؂؇ؑؖ؛تؽØÄØÍØÖØÒàØëØ+°õØ ÙÙ'Ù,Ù1Ù=ÙIÙXÙhÙzقٕٲÙÄÙàÙ÷ÙÚÚÚÚ&Ú-Ú7ÚLÚYÚâ³iÚnÚsÚxÚ}Ú‚Ú‡ÚŒÚ‘Ú–Ú›Ú Ú¥Ú ÃªÚ°ÚÂÚ×ÚçÚóÚüÚ ÛÛÛÛ!Û+Û0Û5Û:ÛDÛTÛ]ÛoÛtÛ‡Û™ÛªÛ¾Ûµ°ÃÛÈÛÓÛÝÛäÛíÛøÛüÛÜa|©8‚ˆ©AA¶Ó„©˱bb·æ”•©ccæ§ ©¾©dd0”Á©dÄ© X”&+ee�³Û© ª¢Eí©ª£€”ªŸªšÕ 5ªPªffíѨ”ZªFFíÑØ”gaªiªGGÝå•pªµhwª0•‹ª›I€ªX•ˆªœˆ•S²ll­ªšªµªLLªÈ•̪�ð•mgßàªîªMM–øªnnÿª«NN@–«ôx–ö«ooæ§ «O5«J«žæ§U««m«t«†«‘« –•«¥À–š«¥À–ª«¥ð–¶«¥ —³«¥ —Æ«¥H—É«qqh—Õ«rrá«iý«RRæ§�— ¬ss¬&¬SS2¬M¬õÈ—J¬öð—]¬ttc¬ÑTTæ§t¬‡¬æ§–¬±¬ÒuuT­ ˜´¬ T­P˜Ĭèˬ€˜Ö¬ð˜µ°ÅvÙ¬Và˜ó¬xxÿ¬­XX™(­ð8™5­yyT­B­YYø X™[­((g­u­))­Ž­÷ˆ™‹­øÈ™«­Ö¨­×¹­Øš¶­Ù8ší–|©¨šÊ­—Ó­`×—ñ­—ý­¬È𮬮¬þ­¬®¹ðš®º›4®â8›1®ãh›F®Ö˜›C®×Л]®˜b®–§™®‘®ý¯š¡®œª®8œÄ®¡Ô® ¯Îí®¯Ϩœ?¿æT­¯3¯ÛØœG¯Ü�D¯Ý8�V¯Þ`�S¯߈�h¯à°�y¯áè�™¯¤Œ¯9¿åT­ž¯·¯¦æ§»¯̯òݯú¯§°#°¨ž2°ä@žB°êxž?°먞X°ìr°�°í¢°½°ḭ̂ê°ïàž±©Ÿ±ª@Ÿ+±­<±U±«pŸd±«s±ó Ÿ|±®·æ„±¢±¶±Ò±à±ö±¥ ý±ÿ  ²¯X ²°� ²±æ§È 2²²Yø ð 8²³Yø ¡;§´C²[²´2§ùH¡f²ùu²¶�²x¡™²¶¥²·²²°¡Á²ñÔ²à¡Ú²Ôè²¢ð²Óÿ²8¢³¸³,³éh¢8³»T­B³X³ˆ¢k³çy³‰³¦³¼�³«³dz½�³ͳê³¾�³ð³ ´¿�³´7´À�³G´e´Á�³t´‘´ú°¢»´Ä­´h£·´ÄôÆæ§�£Ò´ÇT­°£ê´Ë¤ü´É@¤µÊ+µIµÈæ§VµhµÌp¤tµ͘¤†µÐФ—µÑø¤¡µÒ ¥´µýX¥ȵþ€¥Úµû¸¥òµüà¥G±Õ¦ ¶ÚT­8¦¶T­`¦)¶˜¦4¶Ц>¶ Q¶l¶ |¶§eÚ°ª&æ)æ,æ/æ 2æ 6æ :æ =æ @æCæFæIæ3æ7æLæOægqÕÕ¸ÒÄÒÃÒÉÒÎÒÔÒÙÒ+zÓ3Ô;@Ô<·æ=QÔ>\Ô?`Ô@fÔBrÔAkÔC~ÔDzÔ‚Úò`@ÕERæFVæfZænÕ«$øÒ% Ó&"ÓNÅÔPÑÔ1ìÓåö ˜üù ’fù —ú ™ú P$ú �6ú ‘Jú “Gú ”Wú •dú –rú -oú .åö ˜üù ’fù —ú ™ú P$ú �6ú ‘Jú “Gú ”Wú •dú –rú -oú .åö ˜üù ’fù —ú ™ú P$ú �6ú ‘Jú “Gú ”Wú •dú –rú -oú .åö ˜üù ’fù —ú ™ú P$ú �6ú ‘Jú “Gú ”Wú •dú –rú -oú .åö ˜üù ’fù —ú ™ú P$ú �6ú ‘Jú “Gú ”Wú •dú –rú -oú .åö ˜üù ’fù —ú ™ú P$ú �6ú ‘Jú “Gú ”Wú •dú –rú -oú ..SSmT|T SmT]T`T’T�TšT¤T­T°T¾T-³T.ÈT/ è:gV0×T1ëT2üT3U4(U59U6QU7yù 8cU9mU;@)R~US�UT”U<”U<ŸU=²U>ÂU?Wú MÖUQñU@ùUA VB VC6VDMVEMVE[VFrVGŠVHœVI°VJÃVK×VLîVN WO`)P'WUAWV\WWlWXxWYƒWZŒW[™W\ W]¨W^²Wa½W_ºW`fù bRSÎWÖWÞWäW êW.SSmT|T SmT]T`T’T�TšT¤T­T°T¾T-³T.ÈT/ è:gV0×T1ëT2üT3U4(U59U6QU7yù 8cU9mU; +D@)V~UW�UX½WcºWd”U<”U<ŸU=²U>ÂU?Wú NÖUUñU@ùUA VB VC6VEMVFMVF[VGrVHŠVIœVJ°VKÃVL,+MîVO WP¸åS`)TJ+QB+R'WYAWZlW[xW\ƒW]ŒW^™W_ W`¨Wa²Wbfù eRSÎWÖWÞWäW êW‹ÕŽçÚò“çìò« œç¨ç²ò²ç ºçÃç `ç°ªäòËçÑòÒç¥òÙÒ è »òÚçäç «ò¨ñô ñô íñèR*ô÷ø Sô[ôcô>ô Hô RôZôbôjô uô—ñ~ô ˆô�ô˜ô ¢ô ­ô ¸ô¿ô ÉôÑôØô âô ïô rõŠõ –õžõ gö¬õ¾õÒõîõþõööó.ö?ö >ö JöQöYö rõ–õgöföó.ö¨ñô ñô íñèR*ô÷ø Sô[ôcô>ô Hô RôZôbôjô uô—ñ~ô ˆô�ô˜ô ¢ô ­ô ¸ô¿ô ÉôÑôØô âô ïô rõŠõ aý lý +|ý‘ýÀý§ýîõþõööó.ö?ö >ö JöQöYö rõ–õgöföó.ö” ž Æ Ð DÎð»ø»õþÿo�È ©  À·€+@Œ ûÿÿoþÿÿo +ÿÿÿoðÿÿo:)ùÿÿ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݆Ýè&@JøLÍø �M@Ms³  503@p?�=°:°Cð82°1P2€“à’€”pÉ´à* ,@/à1€4 7 <€@xO@b›òèPÍø ¿ø +Ýù #¨ø #´ø +äù +ìù #@óù �ô€€°€ðó0Àðü0€À~àåðÑ ß‹ú €`äàôÀãðÖðÔPÔÍø ¿ø +Ýù #¨ø #´ø +äù +ìù #@óù Ð2€€°€02pDÀ0;0€À~ $pÄþ Ñþ € " 3"PpÐÍø ¿ø +Ýù #¨ø #´ø +äù +ìù #@óù Ðp€€°€0pp‚À0y0€À~ b°NÁÍÊÍ€ ` q`pS°QQÍø ¿ø +Ýù #¨ø #´ø +äù +ìù #@óù ®€€°€`­ ¿À`¶0€À~PŸ°Œ‡‡€Ð�P®0�‘°��Íø ¿ø +Ýù #¨ø #´ø +äù +ìù #@óù 0뀀°€�êÐüÀ�ó0€À~€ÜàÉsl|l€Û€ë`Ú@ÎàÌ@ÌÍø ¿ø +Ýù #¨ø #´ø +äù +ìù #@óù `(€€°€À':ÀÀ00€À~°ãQìQ€0°(�p  p Íø àR+·T+¨ø #´ø ØV@žRˆV=TØV@ESàV)RèV*TðVÐSòVåSôVúSöVTøVŠSúV¦S WÂS(W ­R0WqS8WÇR@WYSHW÷W"WETÐf€€°€ÐeÀ[ÀÐ0€À~ [`VïWtRðZpt0LPrÀKpi X`D g@DPaÿÿÿÿÍø àR+·T+¨ø #´ø øX@žR¬X=TøX@ESY)RY*TYÐSYåSYúSYTYŠSY¦S@YÂSHY ­RPYqSXYÇR`YYShY÷WBYET°˜€€°€°— �ÀÐ0€À~à‚`ˆ^+ð*@‚`¦`~ ¤ð}›PŠPvЈ0v èxù è è  èÿÿÿÿÿÿÿÿtRR`tRûô` õõ õ$õ" ,õ;õ ! Iõ^õ! ÿÿÿÿÿÿÿÿð*ù*  õõõ$õ",õ;õ !Iõ^õ!ÐÉ]/usr/lib/debug/.dwz/x86_64-linux-gnu/binutils-x86-64-linux-gnu.debugñ·½%lZ™:CCḭ́.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.plt.data.bss.gnu_debugaltlink ¨¨ÄÄ !ää$4öÿÿoÀ> ÈÈÈF��©Nÿÿÿo:):)æ[þÿÿo + +`j€+€+@ŒtBÀ·À·~ÐÐy Ð Ðp „�Ý�Ý(�ÀÝÀÝ�ð“DÎDÎ ™ÐР/ ¡ ÿ ÿŒ¯00`“¹ð»ð«Åø»ø«Ñ¼¬€a Þ€€ ˆ��`ç Èðà&à@ ö D 4H û 4Yy4