/usr/lib/.build-id/3f
NameSizeModeActions
4bdc7756fb51a52d71b17a928a44f10b875ae2-0editdlrm
5edf17abdf0e46f0c11bf6d5632f285df0d12b-0editdlrm
7bbd9d67d3c480c6dc10504a7746d3ddc3890c156320755editdlrm
78fac9460e11f9982b044894ada1285f14d759196160755editdlrm
89f3e182bbb2ff95dbe2b00138cbf4ba794f22161280755editdlrm
005664f0d019bf432f48f0f3a5d5abc088475b-0editdlrm
7798e7470012e0f202a93ace4d54212c988be5-0editdlrm
7964176c738fa600c82c1c62be9a60dc9bcd37-0editdlrm
b70284cdfd634a8bc25ceaf0cacddecb75920e17916000755editdlrm
Edit: /usr/bin/ld.bfd (1791600B)
ELF>�@ðN@8 @@@@ØØè»è»ÀÀÀm…m…PPPÜZÜZð·ð·ð·~`™   88800hhhDDSåtd88800PåtdT?T?T?d d QåtdRåtdð·ð·ð·hh/lib64/ld-linux-x86-64.so.2 GNUÀ€ÀGNU?·„ÍýcJ‹Â\êðÊÍÞËu’GNUò$¡®–"´4€E �òóö÷ùûþ3Ä÷nmŸÿܺtöÍ@Ûæ“˜<­¶úëOŽýDø¡9ò‹L>¥ h �HÁ³÷>[³¢÷jšugUa�Çà`(Œ�cÿÔ`1Ï 1 ÚÑ€l7c É<UoÛ· Ö4 ê Š)¹ 2 ÜNf‚&xó8> Múï$ XÙ� �Ä }ç ž –#pùÀ Ñ…™²F«™ ŽËCÓ° w ¿ – íw å“Ûȼc Ë÷ «‡M�Ø Ï Î Õ Â@Õ� Ê ¿ ˵ ô áÏŸèqû Ú4¼ÖG¸ Tî Å  ‘ sck­ {0([ D 9 µ ìq æ -[ N�N > †?Þ ’v ‹ Ã� �è àáÑx‚W ¶ i¼§ 8ý Å U ‰ ¨ j1E AV^ ¶˜å Ê ·]  £N"]üÏ „ºà -  > HÊ ·ÀÇõ, *\ ¬ùJ| ç á£øK~6F"ÙÙ • ú~b Æ �† ó6g@6À/  ;U up´&ì  30²x ¹@;aà³…£;ú0;L ³7- 6)P²6:p²' 66_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTable__cxa_finalize__libc_start_main_bfd_std_section_sch_istabledcgettextbfd_set_error__sprintf_chk__stack_chk_failstrcmpstrpbrkfnmatchstrchrbfd_get_section_by_name_ifbfd_check_formatbfd_openr_next_archived_filebfd_hash_newfuncbfd_hash_allocatestrlenxmalloc_sch_tolowerstrstrbfd_openwbfd_set_formatbfd_set_gp_sizebfd_iterate_over_targetsbfd_get_errorstderrfwrite__fprintf_chkfputc__errno_locationfilenoisattyfreadferrorstdinstdoutxstrdupbfd_scan_vmastrcpybfd_hash_lookupbfd_get_section_by_namebfd_make_section_anyway_with_flagsmemcpybfd_arch_mach_octets_per_bytebfd_link_hash_lookupbfd_link_add_undefconcatlbasenamefilename_cmpbfd_get_archoptindopterrgetopt_long_onlygetopt_long__asprintf_chkoptargstrncmpstrcasecmpdlopenstrtoulfopenbfd_hash_table_initfclosexrealloccplus_demangle_name_to_stylecplus_demangle_set_stylexexit__printf_chkputchardlerrorxcallocbfd_hash_table_init_nbfd_target_listbfd_demanglecurrent_demangling_stylehtab_findhtab_hash_stringhtab_createhtab_find_slotstrtolbfd_cache_close_alldlcloseunlink_if_ordinarybfd_get_reloc_sizebfd_map_over_sectionsstrcspnmemcmpctf_link_writectf_file_closectf_errnoctf_errmsgbfd_section_already_linked_table_initctf_bfdopenctf_createctf_closebfd_section_already_linked_table_freebfd_set_error_handlerbfd_arch_get_compatiblebfd_printable_namebfd_get_section_contentsbfd_reloc_type_lookupbfd_link_hash_traversebfd_link_check_relocsctf_link_add_ctfctf_linkbfd_record_phdrbfd_hash_traversebfd_set_start_addressbfd_get_reloc_code_nameqsortbfd_arch_bits_per_addressdcngettextbfd_check_format_matchesfilename_ncmpbfd_closegetenvfputs_bfd_fix_excluded_sec_symsbfd_emul_set_maxpagesizebfd_emul_set_commonpagesizebfd_emul_get_commonpagesizebfd_emul_get_maxpagesizebfd_generic_link_read_symbolsbfd_errmsgfflushlrealpathbfd_get_reloc_upper_boundbfd_canonicalize_relocobjalloc_free_blockbfd_hash_table_freebfd_new_link_orderbfd_putl32bfd_getb32bfd_putl16bfd_getb16bfd_putl64bfd_getb64bfd_wrapped_link_hash_lookupbfd_octets_per_bytebfd_set_symtabmmaplseekbfd_allocbfd_use_reserved_idbfd_plugin_target_pbfd_createbfd_make_writablebfd_get_arch_infobfd_set_arch_infobfd_get_gp_sizebfd_plugin_open_inputbfd_make_readablebfd_close_all_donemunmapunwrap_hash_lookupbfd_hide_sym_by_versionmake_relative_prefixbfd_openrbfd_scan_archsetlocalebindtextdomainxmalloc_set_program_namefseekftellbfd_initbfd_set_error_program_namebfd_set_assert_handler_xexit_cleanupbfd_set_default_targetmemmovedlsymregister_ld_plugin_object_pgetpagesizebfd_get_unique_section_namebfd_make_section_anywayrewindbfd_hash_set_default_sizestrcat_bfd_elf_linker_x86_set_optionsbfd_elf_discard_info_bfd_elf_map_sections_to_segmentsbfd_find_targetbfd_set_section_sizebfd_set_section_contentsbfd_breadbfd_seek_bfd_pex64i_swap_debugdir_outbfd_bwrite__memcpy_chk_bfd_pex64i_write_codeview_recordbfd_get_target_infostrtoullbfd_set_filenamestrrchrmemsetbfd_set_archive_headtimebfd_get_next_section_by_name_bfd_pei_swap_debugdir_out_bfd_pei_write_codeview_record_bfd_elf_match_sections_by_typebfd_elf_set_dyn_lib_classbfd_elf_set_dt_needed_namebfd_elf_record_link_assignment_bfd_elf_strtab_str_bfd_elf_strtab_lenctf_link_add_strtabctf_link_shuffle_symsbfd_elf_get_bfd_needed_listbfd_elf_get_dt_sonamebfd_statbfd_elf_get_dyn_lib_classgetpwdstrncpyfgetsfeofglobglobfreefgetcungetcperrorobstack_alloc_failed_handlerstrtokgetrusage_obstack_begin_obstack_begin_1_obstack_newchunk_obstack_allocated_p_obstack_freeabort_obstack_memory_usedbfd_make_section_old_waybfd_set_section_flagsbfd_make_section_with_flagsbfd_elf_get_needed_listbfd_elf_add_dt_needed_tagbfd_elf_parse_eh_frame_entriesbfd_elf_get_runpath_listbfd_elf_size_dynamic_sectionsbfd_elf_size_dynsym_hash_dynstr_bfd_elf_tls_setupbfd_get_machlibbfd-2.35.2-72.el9.solibctf.so.0libc.so.6LIBCTF_1.0GLIBC_2.27GLIBC_2.14GLIBC_2.33GLIBC_2.3.4GLIBC_2.8GLIBC_2.4GLIBC_2.34GLIBC_2.2.5  µ p/�ËÁ‡‘– Ö”‘– ᳑–ìti ÷ii ii  ´‘–ui "ð·pø·0¸¸H¸s†P¸ˆm`¸„†ˆ¸{†�¸€† ¸ �ȸ¸ и¸mฑ†¹@„¹œ† ¹º†P¹èm`¹½† ¹À†ȹ@„йІà¹æ†ºn º5~Hº¿�Pºý†`º-‡�º‡ º*‡к8nàº<‡»`n »�nP»¸n`»Z‡�»]‡ »u‡лx‡à»“‡¼cü¼o ¼�‡H¼cüP¼@o�¼¤‡ ¼¬‡ȼvмho༳‡½º‡½˜o ½·H½ÇP½Ào`½ˇ�½ðo ½‘�Ƚð‡н݇à½ø‡¾ˆ¾0p ¾ˆP¾Xpˆ¾•�¾#ˆ ¾1ˆо€pà¾;ˆ¿Bˆ ¿\ˆP¿¨p`¿Yˆ�¿àp ¿9‰È¿@„пcˆÀxˆ À�ˆHÀ@„PÀ˜ˆ`ÀˆˆÀ°ˆ�À·ˆ ÀɈÈÀÔˆÐÀqàÀ؈Á(q Á݈PÁ(q`Áíˆ�ÁXq ÁùˆÐÁˆqàÁöˆÂˆq  ‰P°q` ‰�ÂÐq Â‰ÐÂ$‰ Ã@‰HÃ@„PÃøq`ÃM‰�ÃW‰ Ãi‰ÐÃu‰àÃ�‰Ä0r Ä�‰PÄXr`Ä ‰�Ħ‰ Ä°úÈÄ@„ÐÄ·‰àÄʉÅ@„ÅÙ‰ Åô‰`ÅŒ�ˆÅ—Š�ňr Å÷‰ÈÅ—ŠÐŸràÅŠÆŠÆèr ÆŠPÆs`Æó��ÆŠÐÆHsàÆ6ŠÇBŠ Ç\ŠPÇps`ÇkŠ�Ç s ÇxŠÈÇ—ŠÐÇ…ŠÈùÈÀs ÈžŠPȪŠ`ȸŠ�ÈŠ ÈÑŠÐÈðsàÈΊÉ0t ÉîŠ`É늠ÉüŠÐÉhtàÉùŠÊ t Ê‹HÊs†PÊu`Ê ‹�Ê‹ Ê4‹àÊ7‹ ËC‹PË0u`ËK‹ ËN‹àËD‹ ÌY‹PÌXu`Ìc‹�Ìxu Ìz‹ÐÌ uàÌw‹ÍÐu ÍŒ‹PÍv`͉‹�Í8v Í£‹Ðͨ‹àÍôƒÎÅ‹Î׋ Î;�HÎç‹PÎxv`Îð‹�Πv Î ŒÐÎŒàÎOŒÏ3Œ ÏLŒPÏw`Ï…ƒˆÏ—Š�Ï^Œ ÏyŒÐÏ@wàÏ�ŒÐpw ЊŒPРw`МŒ�ÐÈw Ð™ŒÐÐðwàЮŒÑx Ñ¿ŒPÑPx`Ñߌ�ÑÒŒ ÑƒÈÑ—ŠÐÑäŒàÑýŒÒ�Ò€x Ò �PÒ�`Ò8��ÒD� Òa�ÐÒ¸xàÒp�Óàx Ó€�PÓy`Ó}��ÓHy Ó–�ÐÓ°�àÓË�Ôà� Ôû�PÔ Ž`Ô(Ž�Ô€y Ô@ŽÐÔ¸yàÔQŽÕày ÕiŽPÕzŽ`Õ“Ž�Õz Õ¢ŽàÕ±ŽÖ@z ÖºŽHÖ¸ PÖÂŽ`ÖàŽ�ÖôŽ Ö�ÐÖ�àÖ4�× z ×;�P×Àz`×V��×øz ×S�Ð×0{à×\�Ø@„Øh{ Øp�HØùPØ�{`Øv�ˆØù�ظ{ Ø¡ƒÐØ��àØ™� Ù›ƒPÙè{`Ù¤� Ù³�ÈÙ¿�ÐÙ|àÙ×� Úã�HÚð�PÚP|`Úÿ�ˆÚ��Ú€| Ú�ÈÚ&�ÐÚ°|àÚ.�Û=�ÛØ| ÛF�PÛL�`Ûj��Û} Ûv�ÈÛ—ŠÐÛ€�àÛ–�Ü(} Ü©�HÜ·�PÜÇ�`Üä�ˆÜ¿��Üé� Ü‘ÈÜ¿�ÐÜ ‘àÜ(‘Ý¿�Ý.‘ ÝK‘HÝ¿�PÝY‘`Ýu‘ˆÝ¿��Ý…‘ Ý£‘ÈÝ¿�Ðݲ‘àÝÏ‘ÞP} Þù‘HÞë‘PÞ~`Þõ‘ Þ’ÈÞ@„ÐÞ0~àÞ’ß—ŠßP~ ß(’P߸~`ß:’�ßà~ ßO’Ðßi’à߇’à@„à”’ ঒Hà—ŠP༒`àØ’ˆà@„�à àó’Ðà0ààÿ’áX á“`á“ á$“àá>“ â;“`âP“ âM“àâf“ ãc“`ãx“�ã� ã‰“Ðã¸àã““äà 䦓Pä€`䳓 äÇ“ÐäH€àäٓ倀 åñ“P娀`å…Ž�åЀ å ”Èå—ŠÐå�à唿—Šæ(� æ(”Pæ`�`æ3”�æ˜� æ=”ÐæP”àæk”ç{”çÐ� ç„”Pç‚`ç�”�ç8‚ çʨçM°çÒ¸çáÀç÷ÈçÐçØçàç,èç9èíûèó‡(èS8èVHèYXè\hè_xècˆèg˜èj¨èm¸èpÈèsØèvèè`øèdéyé|(é8é HéˆXé*úhé)úxé$úˆéú˜éú¨éޏé—È馨é­èé¸ øéµêÀêÄ(êÊ8êÏHê×XêâhêÞxê±}ˆêç˜êð¨êô¸êøÈê‰Øêÿèêøê)ë:ëA(ëHH볪XëĪhëÖªxë媈ëĪ˜ëÖªÀë_©Ðëûªàë«ðë «ì«ì«@ì-«`ìŽ~€ì7« ìWîÀìã¬àìF«íZ« ík«@탫`í—«€í¨« íÀ«ÀíÁøàíÒ«îÜ« îÀ¥@îí«`îð«€î¬ î¬Àî¬àî!¬ï1¬ ïE¬@ïR¬`ïm¬€ïu¬ ï‡¬Ààﲬðɬ ðɬ@ð׬`ðð­ ð­Àð,­àð?­ñS­ ñj­@ñ†­`ñीñ£­ ñ½­ÀñØ­àñè­òô­ òÿ­@ò®`ò®€ò® ò$®Àò.®àò9®ó6® ó®ø@óJ®€ó²¦ ó_®Àó®øàóf®ô~® ô‡®@ô™®`ô­®€ôª® ôE¬Àôº®àôÈ®õÅ®@õ²¦`õ_®€õ®ø õf®Àõ~®àõ‡®ö™® ö­®@öª®`öE¬€öº® öÈ®ÀöÅ®÷²¦ ÷_®@÷®ø`÷f®€÷~® ÷‡®À÷™®à÷­®øª® øE¬@øº®`øÈ®€øÅ®Àø²¦àø_®ù®ø ùf®@ù~®`ù‡®€ù™® ù­®Àùª®àùE¬úº® úÈ®@úÅ®€ú²¦ ú_®Àú®øàúf®û~® û‡®@û™®`û­®€ûª® ûE¬Àûº®àûÈ®üÅ®@ü²¦`ü_®€ü®ø üf®Àü~®àü‡®ý™® ý­®@ýª®`ýE¬€ýº® ýÈ®ÀýÅ®þ³ªþĪ(þÖª8þåªHþĪXþÖª€þ_©�þûª þ«°þ «Àþ«Ðþ«ÿ-« ÿŽ~@ÿ7«`ÿWî€ÿ㬠ÿF«ÀÿZ«àÿk«ƒ« —«@¨«`À«€Áø Ò«ÀÜ«à/~À¥ í«@ð«`9®€6® ¬À¬à¬!¬ 1¬@E¬`R¬€m¬ u¬À‡¬àœ¬²¬ ɬ@ɬ`׬€î¬ ­À­à,­?­ ;~@j­`†­€È{ à¥ÀY~àQ~£­ ½­@è­`ô­€ÿ­ ®À®à®$® .®@®ø`J® ø}°û}Àm~Ðx~àu~ð~ˆ~‹~@VîPÀø`\îpbî€jî ží°ÃíÀ±}ÐÈíàÃ}ðTˆÑíÝí ‰}0çí@ïíPøí`íp󇀻}�î ¨}°îÀ|}ÐŽàuîð’} î î ‚}@ ®ø` f®  ø}° û}À m~Ð x~à u~ð ~ ˆ~ ‹~@ ÔúP ìú` õúp ôú€ a¨� ûÀ ÔúÐ ûà #ûð .û ~ >û Sû0 ˜@ iûP {û` ‹ûp ›û€ «û� a¨  û° ¼ûÀ »ûÐ Çûà Îûð Öû Ôú0 ìú@ õúP ôú` a¨p û  Ôú° ûÀ ìúÐ ãûà õúð ñû ü ü {û0 ‹û@ ›ûP «û` a¨p û€ ¼û� »û  Çû° ÎûÀ Öûà 3üè ;üð Cüø NüXü`üiüqü ê¨0xü`høp‰ü€Ò¨�è{ ”ü°ëìà½üðÅüÍü¨ü ²ü0¼ü@ÄüPÌü`Ôüpßü èü°ñüÀûüÐýà ýðý ý+ý 2ý0<ý@DýPKý`Uýpbý ê¨°xüàhøð‰üÒ¨è{ ”ü0ëì`½üpÅü€Íü�¨ü ²ü°¼üÀÄüÐÌüàÔüðßü èü0ñü@ûüPý` ýpý€ ý�+ý 2ý°<ýÀDýÐKýàUýðbý (= > p;( @>0 m†8 ±�@ àåH 0CP `CX Àí` `æh €)p Óx �æ€ €.ˆ ð)� €æ˜ �Ò  ¨ "° P.À ïÈ @Ûà  æè  è!Pî ! Ô(!ö@!0ÁH!0CP!`CX!0Ð`! Ph!€)p!�)x!@.€!€.ˆ!ð)�!@Ö˜!Ò !.¨!5°!0÷À! äÈ!`ÖÐ!Íà!ð°è!ÀÃð!Pzø!€‡"À)"Àå@"€=H"0CP"`CX"PL`"€Oh"€)p"�)x"@.€"€.ˆ"ð)�"°u˜"PM ">¨"F°"€�À"0¯È"PªÐ" Ià"@Íè" @ð" vø"°!#z#а@#àÃH#0CP#`CX#Àí`#@Æh#€)p#Óx#É€#€.ˆ#ð)�#ǘ#@¿ #Q¨#Z°#P.¸#pÅÀ#ïÈ#@Ûà#�Ìè#Ðø# !$Pî $ Ô($ö@$pÃH$0CP$`CX$Àí`$ Æh$€)p$Óx$É€$€.ˆ$ð)�$àÆ˜$м $e¨$n°$P.¸$@ÅÀ$ïÈ$@Ûà$àËè$@ø$�!%Pî % Ô(%ö@%ÃH%0CP%`CX%Àí`%Æh%€)p%Óx%ðÈ€%€.ˆ%ð)�%ÀƘ%`º %y¨%ƒ°%P.¸%ÅÀ%ïÈ%@Ûà%0Ëè%°÷ø%!&Pî & Ô(&ö@&�ÂH&0CP&`CX&Àí`&àÅh&€)p&Óx&àÈ€&€.ˆ&ð)�& Æ˜&ð· &�¨&˜°&P.¸&àÄÀ&ïÈ&@Ûà&€Êè&Ðéø& 'Pî ' Ô('ö@' ÂH'0CP'`CX'Àí`'ÀÅh'€)p'Óx'ÐÈ€'€.ˆ'ð)�'€Æ˜'€µ '£¨'°°'P.¸'°ÄÀ'ïÈ'@Ûà'ÐÉè'ÐÛø'À(Pî ( Ô((ö@(°ÁH(0CP(`CX(Àí`( Åh(€)p(Óx( Ç€(€.ˆ(ð)�(`Ƙ(³ (3¨(½°(P.¸(€ÄÀ(ïÈ(@Ûà( Éè(°Íø(`)Pî ) Ô()ö8) G@) EH)èDP)€E`)@(h)@'p)@&x)@%€)@$ˆ)@#�)@"˜)@! )@ À)@“È) FÐ)�HØ)Kà)°Kè)PNð)0Qø)S*ÐT* U*pU*pD *`B(*°‘0* °8*€ @*@`*Ix*P©ˆ*ÌJ *“ª°*IÈ*C©Ø* Ið*}ª+$I+jª(+(I@+ªP+*Ih+%ªx+,I�+:ª +.I¸+RªÈ+0Ià+Ê©ð+2I,æ©,DI0,ª@,HIX,°©h,PI€,—©�,XI¨,~©¸,`IÐ,f©à,hIø,«-FI -›ª€-L�-P© -N°-“ªÀ-LÐ-C©à- Lð-}ª.$L.jª .(L0.ª@.*LP.%ª`.,Lp.:ª€..L�.Rª .0L°.Ê©À.2LÐ.æ©à.DLð.ª/HL/°© /PL0/—©@/XLP/~©`/`Lp/f©€/hL�/« /FL°/›ªà/Ëì0ñ}@0©p0±ì 0¦ìà0Ëì1½ì@1~îp1±ì 1¦ì2…î02�î`2”î 2ËìÐ2ñ}3©03±ì`3¦ì 3�¢À35È3~à3À è35ð3ný4À 4}ý4…ý04@ 84Œý@4•ýX4@ `4�ýh4¬ý€4@ ˆ4ºý�4Ïý¨4@ à4Fè4(©5  5F5ãý(5  05}ý85…ýP5 X5Œý`5•ýx5 €5�ýˆ5¬ý 5 ¨5ºý°5ÏýÈ5 ° ¸ÀÈ3ÐVØ}àÖèçðê ù õ6666ò 6ÿ@6ó;ü ;ô0;ý@;úHPX`hpx€ˆ � ˜   ¨ °¸ÀÈÐØàèðø (0 8!@"H#P$X%`&h'p(x)€*ˆ+�,˜- .¨/°0¸1À2È3Ð4Ø5à6è7ð8ø9:;<= >(?0@8A@BHCPDXE`FhGpHxI€JˆK�L˜M N¨O°P¸QÀRÈSÐTØUàVèWðXøYZ[\] ^(_0`8a@bHcPdXe`fhgphxi€jˆk�l˜m n¨o°p¸qÀrÈsÐtØuàvèwðxøyz{|~ (€0�8‚@ƒH„P…X†`‡hˆp‰xŠ€‹ˆŒ��˜Ž �¨�°‘¸’À“ȔЕؖà—è˜ð™øš›œ�ž Ÿ( 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‹É_H…ÀtÿÐHƒÄÃÿ5Xòÿ%Xóúhòéáÿÿÿ�óúhòéÑÿÿÿ�óúhòéÁÿÿÿ�óúhòé±ÿÿÿ�óúhòé¡ÿÿÿ�óúhòé‘ÿÿÿ�óúhòé�ÿÿÿ�óúhòéqÿÿÿ�óúhòéaÿÿÿ�óúh òéQÿÿÿ�óúh òéAÿÿÿ�óúh òé1ÿÿÿ�óúh òé!ÿÿÿ�óúh òéÿÿÿ�óúhòéÿÿÿ�óúhòéñþÿÿ�óúhòéáþÿÿ�óúhòéÑþÿÿ�óúhòéÁþÿÿ�óúhòé±þÿÿ�óúhòé¡þÿÿ�óúhòé‘þÿÿ�óúhòé�þÿÿ�óúhòéqþÿÿ�óúhòéaþÿÿ�óúhòéQþÿÿ�óúhòéAþÿÿ�óúhòé1þÿÿ�óúhòé!þÿÿ�óúhòéþÿÿ�óúhòéþÿÿ�óúhòéñýÿÿ�óúh òéáýÿÿ�óúh!òéÑýÿÿ�óúh"òéÁýÿÿ�óúh#òé±ýÿÿ�óúh$òé¡ýÿÿ�óúh%òé‘ýÿÿ�óúh&òé�ýÿÿ�óúh'òéqýÿÿ�óúh(òéaýÿÿ�óúh)òéQýÿÿ�óúh*òéAýÿÿ�óúh+òé1ýÿÿ�óúh,òé!ýÿÿ�óúh-òéýÿÿ�óúh.òéýÿÿ�óúh/òéñüÿÿ�óúh0òéáüÿÿ�óúh1òéÑüÿÿ�óúh2òéÁüÿÿ�óúh3òé±üÿÿ�óúh4òé¡üÿÿ�óúh5òé‘üÿÿ�óúh6òé�üÿÿ�óúh7òéqüÿÿ�óúh8òéaüÿÿ�óúh9òéQüÿÿ�óúh:òéAüÿÿ�óúh;òé1üÿÿ�óúh<òé!üÿÿ�óúh=òéüÿÿ�óúh>òéüÿÿ�óúh?òéñûÿÿ�óúh@òéáûÿÿ�óúhAòéÑûÿÿ�óúhBòéÁûÿÿ�óúhCòé±ûÿÿ�óúhDòé¡ûÿÿ�óúhEòé‘ûÿÿ�óúhFòé�ûÿÿ�óúhGòéqûÿÿ�óúhHòéaûÿÿ�óúhIòéQûÿÿ�óúhJòéAûÿÿ�óúhKòé1ûÿÿ�óúhLòé!ûÿÿ�óúhMòéûÿÿ�óúhNòéûÿÿ�óúhOòéñúÿÿ�óúhPòéáúÿÿ�óúhQòéÑúÿÿ�óúhRòéÁúÿÿ�óúhSòé±úÿÿ�óúhTòé¡úÿÿ�óúhUòé‘úÿÿ�óúhVòé�úÿÿ�óúhWòéqúÿÿ�óúhXòéaúÿÿ�óúhYòéQúÿÿ�óúhZòéAúÿÿ�óúh[òé1úÿÿ�óúh\òé!úÿÿ�óúh]òéúÿÿ�óúh^òéúÿÿ�óúh_òéñùÿÿ�óúh`òéáùÿÿ�óúhaòéÑùÿÿ�óúhbòéÁùÿÿ�óúhcòé±ùÿÿ�óúhdòé¡ùÿÿ�óúheòé‘ùÿÿ�óúhfòé�ùÿÿ�óúhgòéqùÿÿ�óúhhòéaùÿÿ�óúhiòéQùÿÿ�óúhjòéAùÿÿ�óúhkòé1ùÿÿ�óúhlòé!ùÿÿ�óúhmòéùÿÿ�óúhnòéùÿÿ�óúhoòéñøÿÿ�óúhpòéáøÿÿ�óúhqòéÑøÿÿ�óúhròéÁøÿÿ�óúhsòé±øÿÿ�óúhtò顸ÿÿ�óúhuò鑸ÿÿ�óúhvòé�øÿÿ�óúhwòéqøÿÿ�óúhxòéaøÿÿ�óúhyòéQøÿÿ�óúhzòéAøÿÿ�óúh{òé1øÿÿ�óúh|òé!øÿÿ�óúh}òéøÿÿ�óúh~òéøÿÿ�óúhòéñ÷ÿÿ�óúh€òéá÷ÿÿ�óúh�òéÑ÷ÿÿ�óúh‚òéÁ÷ÿÿ�óúhƒòé±÷ÿÿ�óúh„òé¡÷ÿÿ�óúh…òé‘÷ÿÿ�óúh†òé�÷ÿÿ�óúh‡òéq÷ÿÿ�óúhˆòéa÷ÿÿ�óúh‰òéQ÷ÿÿ�óúhŠòéA÷ÿÿ�óúh‹òé1÷ÿÿ�óúhŒòé!÷ÿÿ�óúh�òé÷ÿÿ�óúhŽòé÷ÿÿ�óúh�òéñöÿÿ�óúh�òéáöÿÿ�óúh‘òéÑöÿÿ�óúh’òéÁöÿÿ�óúh“òé±öÿÿ�óúh”òé¡öÿÿ�óúh•òé‘öÿÿ�óúh–òé�öÿÿ�óúh—òéqöÿÿ�óúh˜òéaöÿÿ�óúh™òéQöÿÿ�óúhšòéAöÿÿ�óúh›òé1öÿÿ�óúhœòé!öÿÿ�óúh�òéöÿÿ�óúhžòéöÿÿ�óúhŸòéñõÿÿ�óúh òéáõÿÿ�óúh¡òéÑõÿÿ�óúh¢òéÁõÿÿ�óúh£òé±õÿÿ�óúh¤òé¡õÿÿ�óúh¥òé‘õÿÿ�óúh¦òé�õÿÿ�óúh§òéqõÿÿ�óúh¨òéaõÿÿ�óúh©òéQõÿÿ�óúhªòéAõÿÿ�óúh«òé1õÿÿ�óúh¬òé!õÿÿ�óúh­òéõÿÿ�óúh®òéõÿÿ�óúh¯òéñôÿÿ�óúh°òéáôÿÿ�óúh±òéÑôÿÿ�óúh²òéÁôÿÿ�óúh³òé±ôÿÿ�óúh´òé¡ôÿÿ�óúhµòé‘ôÿÿ�óúh¶òé�ôÿÿ�óúh·òéqôÿÿ�óúh¸òéaôÿÿ�óúh¹òéQôÿÿ�óúhºòéAôÿÿ�óúh»òé1ôÿÿ�óúh¼òé!ôÿÿ�óúh½òéôÿÿ�óúh¾òéôÿÿ�óúh¿òéñóÿÿ�óúhÀòéáóÿÿ�óúhÁòéÑóÿÿ�óúhÂòéÁóÿÿ�óúhÃòé±óÿÿ�óúhÄòé¡óÿÿ�óúhÅòé‘óÿÿ�óúhÆòé�óÿÿ�óúhÇòéqóÿÿ�óúhÈòéaóÿÿ�óúhÉòéQóÿÿ�óúhÊòéAóÿÿ�óúhËòé1óÿÿ�óúhÌòé!óÿÿ�óúhÍòéóÿÿ�óúhÎòéóÿÿ�óúhÏòéñòÿÿ�óúhÐòéáòÿÿ�óúhÑòéÑòÿÿ�óúhÒòéÁòÿÿ�óúhÓòé±òÿÿ�óúhÔòé¡òÿÿ�óúhÕòé‘òÿÿ�óúhÖòé�òÿÿ�óúh×òéqòÿÿ�óúhØòéaòÿÿ�óúhÙòéQòÿÿ�óúhÚòéAòÿÿ�óúhÛòé1òÿÿ�óúhÜòé!òÿÿ�óúhÝòéòÿÿ�óúhÞòéòÿÿ�óúhßòéññÿÿ�óúhàòéáñÿÿ�óúháòéÑñÿÿ�óúhâòéÁñÿÿ�óúhãòé±ñÿÿ�óúhäòé¡ñÿÿ�óúhåòé‘ñÿÿ�óúhæòé�ñÿÿ�óúhçòéqñÿÿ�óúhèòéañÿÿ�óúhéòéQñÿÿ�óúhêòéAñÿÿ�óúhëòé1ñÿÿ�óúhìòé!ñÿÿ�óúòÿ%=IDóúòÿ%5IDóúòÿ%-IDóúòÿ%%IDóúòÿ%IDóúòÿ%IDóúòÿ% IDóúòÿ%IDóúòÿ%ýHDóúòÿ%õHDóúòÿ%íHDóúòÿ%åHDóúòÿ%ÝHDóúòÿ%ÕHDóúòÿ%ÍHDóúòÿ%ÅHDóúòÿ%½HDóúòÿ%µHDóúòÿ%­HDóúòÿ%¥HDóúòÿ%�HDóúòÿ%•HDóúòÿ%�HDóúòÿ%…HDóúòÿ%}HDóúòÿ%uHDóúòÿ%mHDóúòÿ%eHDóúòÿ%]HDóúòÿ%UHDóúòÿ%MHDóúòÿ%EHDóúòÿ%=HDóúòÿ%5HDóúòÿ%-HDóúòÿ%%HDóúòÿ%HDóúòÿ%HDóúòÿ% HDóúòÿ%HDóúòÿ%ýGDóúòÿ%õGDóúòÿ%íGDóúòÿ%åGDóúòÿ%ÝGDóúòÿ%ÕGDóúòÿ%ÍGDóúòÿ%ÅGDóúòÿ%½GDóúòÿ%µGDóúòÿ%­GDóúòÿ%¥GDóúòÿ%�GDóúòÿ%•GDóúòÿ%�GDóúòÿ%…GDóúòÿ%}GDóúòÿ%uGDóúòÿ%mGDóúòÿ%eGDóúòÿ%]GDóúòÿ%UGDóúòÿ%MGDóúòÿ%EGDóúòÿ%=GDóúòÿ%5GDóúòÿ%-GDóúòÿ%%GDóúòÿ%GDóúòÿ%GDóúòÿ% GDóúòÿ%GDóúòÿ%ýFDóúòÿ%õFDóúòÿ%íFDóúòÿ%åFDóúòÿ%ÝFDóúòÿ%ÕFDóúòÿ%ÍFDóúòÿ%ÅFDóúòÿ%½FDóúòÿ%µFDóúòÿ%­FDóúòÿ%¥FDóúòÿ%�FDóúòÿ%•FDóúòÿ%�FDóúòÿ%…FDóúòÿ%}FDóúòÿ%uFDóúòÿ%mFDóúòÿ%eFDóúòÿ%]FDóúòÿ%UFDóúòÿ%MFDóúòÿ%EFDóúòÿ%=FDóúòÿ%5FDóúòÿ%-FDóúòÿ%%FDóúòÿ%FDóúòÿ%FDóúòÿ% FDóúòÿ%FDóúòÿ%ýEDóúòÿ%õEDóúòÿ%íEDóúòÿ%åEDóúòÿ%ÝEDóúòÿ%ÕEDóúòÿ%ÍEDóúòÿ%ÅEDóúòÿ%½EDóúòÿ%µEDóúòÿ%­EDóúòÿ%¥EDóúòÿ%�EDóúòÿ%•EDóúòÿ%�EDóúòÿ%…EDóúòÿ%}EDóúòÿ%uEDóúòÿ%mEDóúòÿ%eEDóúòÿ%]EDóúòÿ%UEDóúòÿ%MEDóúòÿ%EEDóúòÿ%=EDóúòÿ%5EDóúòÿ%-EDóúòÿ%%EDóúòÿ%EDóúòÿ%EDóúòÿ% EDóúòÿ%EDóúòÿ%ýDDóúòÿ%õDDóúòÿ%íDDóúòÿ%åDDóúòÿ%ÝDDóúòÿ%ÕDDóúòÿ%ÍDDóúòÿ%ÅDDóúòÿ%½DDóúòÿ%µDDóúòÿ%­DDóúòÿ%¥DDóúòÿ%�DDóúòÿ%•DDóúòÿ%�DDóúòÿ%…DDóúòÿ%}DDóúòÿ%uDDóúòÿ%mDDóúòÿ%eDDóúòÿ%]DDóúòÿ%UDDóúòÿ%MDDóúòÿ%EDDóúòÿ%=DDóúòÿ%5DDóúòÿ%-DDóúòÿ%%DDóúòÿ%DDóúòÿ%DDóúòÿ% DDóúòÿ%DDóúòÿ%ýCDóúòÿ%õCDóúòÿ%íCDóúòÿ%åCDóúòÿ%ÝCDóúòÿ%ÕCDóúòÿ%ÍCDóúòÿ%ÅCDóúòÿ%½CDóúòÿ%µCDóúòÿ%­CDóúòÿ%¥CDóúòÿ%�CDóúòÿ%•CDóúòÿ%�CDóúòÿ%…CDóúòÿ%}CDóúòÿ%uCDóúòÿ%mCDóúòÿ%eCDóúòÿ%]CDóúòÿ%UCDóúòÿ%MCDóúòÿ%ECDóúòÿ%=CDóúòÿ%5CDóúòÿ%-CDóúòÿ%%CDóúòÿ%CDóúòÿ%CDóúòÿ% CDóúòÿ%CDóúòÿ%ýBDóúòÿ%õBDóúòÿ%íBDóúòÿ%åBDóúòÿ%ÝBDóúòÿ%ÕBDóúòÿ%ÍBDóúòÿ%ÅBDóúòÿ%½BDóúòÿ%µBDóúòÿ%­BDóúòÿ%¥BDóúòÿ%�BDóúòÿ%•BDóúòÿ%�BDóúòÿ%…BDóúòÿ%}BDóúòÿ%uBDóúòÿ%mBDóúòÿ%eBDóúòÿ%]BDóúòÿ%UBDóúòÿ%MBDóúòÿ%EBDóúòÿ%=BDóúòÿ%5BDóúòÿ%-BDóúòÿ%%BDóúòÿ%BDóúòÿ%BDóúòÿ% BDóúòÿ%BDóúòÿ%ýADóúòÿ%õADóúòÿ%íADóúòÿ%åADóúòÿ%ÝADH‹% º1ÿH�5ð9ècôÿÿH‰îH‰Ç1Àèvf·% €äþf‰%  ¸ér©1ÀéŒb1Àé-æÿsUHÇCL‰,% èœñÿÿè—ñÿÿ€óúAWAVA‰þAUATUH�-U/SH‰óH�ì8‰<$H‰t$HdH‹%(H‰„$(1Àè.ÓH�5Ùž¿H‰D$xèxúÿÿ1ÿH�5ÁžèjúÿÿH�5�2H‰ïèkóÿÿH‰ïèãòÿÿH‹;H‰=)_è„õÿÿAƒþŽg&H‰\$A¿ÇD$ÇD$Ðéf.„ƒl$„Á&H�oH�´$�H‰ïèq÷ÿÿ…Àˆñ‹„$¨%ð=@„g&H‰ïH�5ªè³úÿÿH‰ÅH…À„¿1öºH‰Çè8ùÿÿƒøÿtsH‰ïèûöÿÿI‰ÆHƒøÿtb1Ò1öH‰ïèùÿÿƒøÿtQI�~èˆôÿÿL‰òH‰é¾H‰ÇH‰D$@è€ñÿÿH‰ÂI9Æ„„H‰ïH‰D$ èÇðÿÿH‹T$ …À„jf.„H‰ïèòÿÿD‰|$AƒÇD;<$}0H‹D$McçJ�åL�,I‹}€?@„èþÿÿD‰|$AƒÇD;<$|Ðè4õÿÿ=0t1ÿºH�5ÏFèúñÿÿH‰Ç1ÀèdH‹=™]èùÿÿH�=]ÍèûÿÿH�=qÍH‰‚cè5õÿÿHƒ=�ZH‰fc„~H‹©Hƒ{�AHcCH� „Ú�P‰SH‰LË$ƒøŽËH‹L$ƒèE1öH�k0L�iH�lÁf�M‹eº H‰ÞL‰çIƒÄ èïÿÿ…ÀMDôIƒÅL9íuÙM…ö„~A€>/„iL‰5�]A€>…SH‹NgH…Û„æ H‰ßè-ñÿÿ‰3g…À~HcÐH�Tÿ€:/„IH�-æ/H‰ïè£ïÿÿ…À„ßH�=ç/Æ™]:H¸ÇE]Ç—]ÿÿÿÿHÇ”]ÿÿÿÿH‰]ÇC]Ç™]Ç×]ÿÿÿÿH‰È^ÆÉ^ÿè íÿÿH�=w›Hº hÇ)^H…ÀHÇ#^ÿÿÿÿ”Àƃ]:Ç^ÿÿÿÿ¶À‰>]H�GH‰x]H�±]H‰²]H�*/H‰Ä]H�"/H‰¾]H¸ÿ÷ÿ߇uþÿH#]ÇÃ]H ÐH‰ ]ÇÇ]èªÌH�=æ.èNìÿÿH‰ÅH…À„gƒ<$ŽßA¿H‰l$H�ã.L�%ã.D‰ýL�-à.L‹|$ë2fD‹$ƒè9Å�Ê I‹D7ƒÅH‰D$DƒÅ9,$Ž~HcÅM‹4ÇH�4ÅA€>-ußA€~muØA€~t±H‰ÞL‰÷èÞòÿÿ…ÀtÂL‰æL‰÷èÏòÿÿ…Àt³L‰îL‰÷èÀòÿÿ…Àt¤H�5W.L‰÷è­òÿÿ…Àt‘H�5K.L‰÷èšòÿÿ…À„zÿÿÿH�5;.L‰÷èƒòÿÿ…À„cÿÿÿH�5,.L‰÷èlòÿÿ…À„LÿÿÿH�5.L‰÷èUòÿÿ…À„5ÿÿÿH�5.L‰÷è>òÿÿ…À„ÿÿÿH�5.L‰÷è'òÿÿ…À„ÿÿÿH�5ö-L‰÷èòÿÿ…À„ðþÿÿH�5é-L‰÷èùñÿÿ…À„ÙþÿÿI�FH‰D$éËþÿÿH‹D$@H� Ä.ÆH‰Â¶„ÀuéA�¶BHƒÂ„À„0öA@uêL‹t$@L‰÷èííÿÿH�xè”ïÿÿL‰òE1ÉE1ÒH‰D$ E1ö1ÀH� j.D‰|$TI‰ÀE‰÷H‰\$`H‰ÓH‰l$hD‰ÕL‰l$pE‰ÍHÇD$(L‰d$Xë €HƒÃ¶öA@uóH‹t$(L�$õE…í„A�Eÿ9ðŽK�4 ¶H‹|$ „Àuëg€ˆE1öHƒÇ¶CHƒÃ„ÀtK¶ÐöQ@t‰êD òD ú„ E…öuÏ<\„E…ÿ„†<'„æHƒÃˆHƒÇ¶„ÀuºDÆH‹|$ L‰D$8H‰t$0èÑîÿÿH‹t$0L‹D$8H� `-H‰KÇD ¶3H‰ðöq@t„¶SHƒÃH‰ÐöQ@uïHƒD$(„À…õþÿÿH‹|$ D‹|$TL‰D$(L‹d$XH‹\$`H‹l$hL‹l$pèYéÿÿH‹L$HH9L$„ŸH‹D$(Hƒ8„ÔE1ö€IƒÆJƒ<ðN�õuíI‹}L‰D$ Môè éÿÿHc$H‹|$I�tI‰ÅHÁæèÒìÿÿD‰êD)úH�tI‰ÇH‰D$HcÒJ�<àHÁâèßòÿÿI�<H‹\$(H‹T$ H‰Þè)ðÿÿC�D5ÿH‰ß‰$è©èÿÿH‹|$@èŸèÿÿD‹|$éùÿÿDA¾éFþÿÿD…ít<"…vþÿÿ1íé.þÿÿD<'td<"…^þÿÿ½éþÿÿf�M…Àt[EíL‰ÇIcõHÁæèìÿÿH� Ò+I‰ÀK�4 HÇéÂýÿÿ€E1ÿéÑýÿÿE1ö1íE1ÿéþÿÿA¿é¶ýÿÿD¿@A½è�ìÿÿH� y+I‰Àë¥@¿èvìÿÿH‹L$HH‰D$(HÇH9L$…DH‹L$1Ò¸Hƒ9tH‹L$‰ÂHƒÀHƒ|Áøuò�zE1íHcÿHÁçè ìÿÿI‰ÆH‹D$H‹8H…ÿt.H‰\$I‡íH‰ÃDèKìÿÿI‰.HƒÅH‹<+H…ÿuêH‹\$L‡íKÇ.M�,L‰t$éÓýÿÿºH�5Ø>1ÿèÙéÿÿH‰îH‰Ç1Àèì[¿è¢ñÿÿL‰÷èZéÿÿH‰ó_陸ÿÿH‹l$€}gI‰í„ÂH‹¥@L�%ž@H…Ûué� @I‹\$IƒÄH…Û„y H‹s`L‰ïèBíÿÿ…ÀuÞH‰çTH‹àTH‹t$‹<$ÿPHH‹ ¾61Ò¾èL‹�6H�=YTH‰ZSèýȹ=H�1Rº¸H�5å.H�=®SH‰Ç6è"ìÿÿ…À„KH‹³61ÿ¾HÇH‰@H�ºSH‰»SH�œSH‰�SH�ÎSHÇ“SHÇxSHÇ­SH‰®Sè11öºH�=X(H‰[è÷ZH� °Nº(H�5¤[H‰H8¹ H�=4ZH‰MQH�ZHÇZH‰|]èOëÿÿ…À„¤H‹ Sÿ‹<$H‹t$ÇüRèŠH‹=øTH…ÿ…jH‹¨SH…À„¿1ÒDH‹H ‰ÖH‹H9ñGÑH…Àuì�zL�%BFHƒÇM�|$DL�5NEHÁçèyéÿÿH�=Ï$H� Û·H‰ÃL�hH��¡DA‹$A‰Eøƒøw Ic†Lð>ÿà¾ègZH�`¡H� ™·H�=$f�IƒÄIƒÅM9üu»L‹=ôRL�«L�% 'L�5 'M…ÿ„‰H‰l$f„I‹L‰æèDïÿÿH‰ÅH…À„ I‹WL‰èH…Òt@H‹JH‹ÇHƒÀH‰HøH…ÒuæÇH‰ßÇ@L‰=oXÿÕHÇbX…À…ŠM‹?M…ÿuŠH‹l$¶ÏSH‹5çS¹"H�=Û[‰ÂƒÈH‰5W\ó¥ƒâH� “>ˆžSH�=ƤH�¯[‰9\H‰ ò[H‰›Sè†ãÿÿèaïÿÿH˜H‰x[H‹¡QH‹€�H…ÀtÿÐHƒ=[R„§ ƒ=:R…E ƒ=aT¸u¶#Sƒà<•ÀÁà‰Â¶Sƒàß Ðƒ=+TˆþR…V H‹p3¿èFjƒ<$HÇÇ@ H‹SH‰H‹V3H‰CH‰P„| ö¹Rt¶¨Rƒà<…Ń=FP…M‹ŠQ ¬S„1ÿèíÿÿH� ´I‰Eé×ýÿÿH�°œI‰EéÇýÿÿAÇEëéºýÿÿI‰Mé±ýÿÿH‹Ê2I‰Eé¡ýÿÿI‰Ué˜ýÿÿH�žI‰EéˆýÿÿH�ñ›I‰EéxýÿÿH�ñRI‰EéhýÿÿH�AžI‰EéXýÿÿH�´I‰EéHýÿÿH�¡˜I‰Eé8ýÿÿH�1˜I‰Eé(ýÿÿH�Á—I‰EéýÿÿH�Q—I‰Eéýÿÿ¶‘Qƒà<„#¾„Àt 1ö,@”ƃÆA‰uéÙüÿÿAÇEéÌüÿÿ@I‹oL‰ö1ÿº‰D$èñãÿÿ‹T$H‰îH‰Ç1ÀèVéIýÿÿI‹H�5»#èìÿÿH‰ÅH…À…×üÿÿèÊàÿÿM‹W1ÿºH�5XzH‰D$L‰T$è™ãÿÿH‹T$H‹t$H‰Ç1Àè¥Ué˜üÿÿ1ÿºH�5Á"èmãÿÿH‰Ç1ÀèƒUé&ôÿÿ¿èÔèÿÿH…À„ÂñÿÿH‰H‰ÃÇ@H‰7:é“ñÿÿH�ëªH‰ôKéoñÿÿÇQYÿÿÿÿé.òÿÿ1ÿºH�5d#èýâÿÿH‰Ç1ÀèUƒ=8O…‰H‹oNÿPH‹-µOH…ít,H�5ЏH‰ïè¡æÿÿ…À…dH‹bFH‰“O€ üOè�ö¶èOƒà<H‹,PH‰D$0„ƒHD‹ÓOöÂtH‹t$0‹FD‰Á€Ì@�É@ƒúDÁ‰FD1ÿè?äÿÿƒ=ˆLuTH‹MH…Àt>f.„D‹€ŒE…ÀxH‹P8H…ÒtHÇ‚HÇ‚ H‹@ H…ÀuÌÇ2LH‹5 KH�=”jèoSƒ=ÐNÿuHƒ=ÎNÿ„�H‹aO‹ˆ H‰D$0H‹€�‰L$@H‰D$(H…À„öƒ|$@L�=áN„äÇ„$ˆH‹D$(H‹H0H‹¨H‰L$8H…í„OH‹D$(E1äE1í1ÛHÇD$I‰îH‰D$ ëA€‹ $A� 9Ðv{H‹D$HD$H;NshH‰D$A‰Ôf�I‹L‰óH…À„ñI‰ÆA¶A‹Vƒàƒú„ê<„*HÇD$ÇD$Ç$H…Û„¨‹³MA9Å‚zÿÿÿH‹D$ ºH�5&!H‹(H‰ïèfÞÿÿ…À…^H‰ïè¶àÿÿH�5σèH�|èRäÿÿ…À„QH‹D$(L‹(L‰ïèŠàÿÿ�P‰ÅH‰×H‰T$è(âÿÿH‹T$L‰îH‰ÇI‰ÄèÕäÿÿë"�EÿH�=ö H‰ÂLà¶0öw„ƒ‰Õ…íuÝH‹D$0H‹@‹@ƒèƒàýuGL‰çè!àÿÿHƒøv9ºH�5d L‰ïè§Ýÿÿ…À„H�5a L‰ïè ãÿÿ…À„ïAÆD$H‹|$0H�”$ˆL‰æè½åÿÿI‰ÅH…À„H‹|$0H‰Æè„æÿÿH‰ÅH…À„L‰îE1À¹ºH‹=ÙLèlâÿÿI‰ÅH…À„ÛL‰çèxÜÿÿI‰m(H‹|$0H‰éIÇE0AÆEL‹l$ A‹E(L‰î‰E(I‹E0H‰E0A¶E,ˆD$‰Â¶E,ƒâƒàþ ÐH‰úˆE,I‹E8HÇE@H‰E8I‹EhH‰mpH‰EhA‹ExHÇ…ˆ‰ExH‹GÇ…�ÿ�PI‹… I‹NL‰µHL$8H‰… I‹E@H‰ÊI‰� H‰D$H)ÈHÇH‰E@H‹D$8I‰M@H‰E0H‰E8L‰ðë@H‹PH)ʃxH‰Pu H‹p H‰npH‰VhH‹H…ÀuÛH‹D$D‹$$H‰l$ L‰óD‹l$H‰D$I‹H…À…ýÿÿ@H‹D$(ƒl$@H‹@H‰D$(H…Àt ‹|$@…ÿ…düÿÿH‹…KH‰D$0H‹|$0L‰þH‹Gÿ�Ø…À„!Hƒ=¦J„Ö L‹%ÑH1ÒH�-¸M…äuéŒfDM‹d$@M…ä„xI‹D$(÷@D@uäAöD$Xu܃=�JtÓH‹˜�H…ÛuëžH‰ßè$ºH‹[H…ÛtªH‹CpH…ÀtH‹ ÒJH9ˆøtÞ÷C(0uÕ…Òu¿H‰î1ÿºè ÝÿÿH‹=îI¾H‰Â1Àè—æÿÿ똺1ÿH�52èâÜÿÿL‰îH‰Ç1ÀèõNºH�5—1ÿèÂÜÿÿH‰Ç1ÀèØNH‹=¡Eèì:H�=>1Àè¾NéBóÿÿƒèƉÉRé¦ëÿÿ1ÿºH�52èuÜÿÿH‰Ç1Àè‹Né÷ÿÿƒ`Dýéàùÿÿ1ÿºH�5ÇèJÜÿÿH‰îH‰Ç1ÀèMLéRùÿÿ„H�5´H‰ïèàÿÿ…À…¯ûÿÿH‹L$D$$HL$éöúÿÿfDÇ$I‹V A÷€u ‹ŠÈ‰ $ÇD$<u ‹‚�‰D$AÅH‹B@H‰D$éòúÿÿ@ƒê1ÀÇ$HÇD$ƒú–À‰D$AÅéÇúÿÿ�ƒý„zûÿÿ@€þ.…pûÿÿÆéhûÿÿ1ÿºH�5‡1èbÛÿÿH‰Ç1ÀèxML‰4% H‹=JH…ÿt'¾èè«ÇKè Hƒ=�G…&õÿÿH‹¤FH�¼$ˆÿPXƒ¼$ˆI‰Ä…­ ºH�5û1ÿèåÚÿÿºL‰çH‰Æè5IÇ»Jè¦ ƒ= G„ÑôÿÿHƒ=GºH�5ét ºH�5½1ÿL�%Þ/è‰ÚÿÿH‰Ç1Àè�J1ÀL‰çè…JHƒ=ÍF„ñ ¿ H�Qè6ÜÿÿH‹=¯FI‰Åè'ÛÿÿëDAÆDL‰îH‰ß1Àè=JH‹ †Fº ¾L‰ïèÙÿÿH…ÀuÏH‹=hFèãÚÿÿL‰ïè+×ÿÿL‰ç1ÀèJéôÿÿƒ=5F„wôÿÿé¬ôÿÿ€}l…4ðÿÿ€}d…*ðÿÿL�mé!ðÿÿA€~…ŒèÿÿH�Í„H‰FéŠèÿÿ1ÿºH�5aXèŒÙÿÿH‰Ç1Àè¢Ké“ðÿÿèÈäÿÿéŒñÿÿ1ÿºH�55Xè`ÙÿÿH‰Ç1ÀèvKé:ñÿÿèÌUH�=H‰Æ1ÀèKIé�óÿÿE1ÀE1öé>íÿÿH�-ƒ<$I‰í��éÿÿévïÿÿºH�5Ê1ÿèÿØÿÿL�5¬ÿL�-$H‰Ç1ÀèG˜ºH�5·1ÿèÔØÿÿºH�5¯1ÿI‰Äè¾ØÿÿºH�5 1ÿH‰Åè¨ØÿÿºH�5‘1ÿH‰Ãè’ØÿÿI‰éI‰Ø¾RH‹=gEH‰ÁH�oAT1Àè âÿÿH‹=CY^H�¬$�H…Û„Èf�H‹ H‹=.EH�k1À¾èÓáÿÿL‹C L‰ñH‰ïºd¾1ÀèxãÿÿH‰îL‰ï1Àèk—H‰ïè3ØÿÿA‰ÄHƒøw%f.„H‹5ÑD¿ AƒÄè+ÚÿÿAƒüuåH‹s(1ÀH�=×è#—Hƒ{Htƒ{H…ƒ{L…ÞH‹5‰D¿ èçÙÿÿH‹[H…Û…:ÿÿÿ1ÿºH�5¼-èw×ÿÿH‹=XD¾H‰Â1Àèáÿÿ€=®Dx6L‹±$H‹ Ê$1Ò¾èH�=ŒAè·H‹=¨D1ÒH�5—®è¢ÝÿÿH‹;@ƒ0@ÇZ@H‹-@H…ÛtfDH‰ßH‰îèÝ H‹H…ÛuíH‹nBH‹€ØH…ÀtH‹³CH‹=dDL‰þÿЃ=E„äH‹-“CH…í„ͺH�5Ò1ÿè�Öÿÿ¾H‰ïH‰Â1ÀèàÿÿºH�5Æ1ÿèjÖÿÿH‰îI‰ÄH‰Çè¬×ÿÿL‰çè„Öÿÿ‰Ãƒø1DH‰î¿ ƒÃè(Úÿÿƒû2uë1ÿºH�5�è Öÿÿ¾H‰ïH‰Â1Àè®ßÿÿƒ=?L„ÔH‹LH�<ÅèÍ×ÿÿH�”$ˆH�5¾‚H�=çKI‰ÆH‰„$ˆè‡ÔÿÿH‹„$ˆL)ðHÁøH;¹K…JH‹5¬KH� ý,ºL‰÷L�-7ýè)ÔÿÿH‹ŠKI�ÆH‰$I9ƃ£�M‹&H‹=ÞB1É1ÒA¸I‹t$èbØÿÿH…À„=€x„*‹aB…À„ÀI‹L$¾H‰ï1ÀH�÷ýè¶ÞÿÿI‹|$è<ÕÿÿD�xI‹\$ H…Ûuéf„H‹H…ÛtCöCtòAƒÿ1@H‰î¿ AƒÇè·ØÿÿAƒÿ2uéH‹SL‰îH‰ï1ÀE1ÿè=žH‹H…Ûu½I‹\$ H…Ûué±fDH‹H…ÛtCöCtòAƒÿ1@H‰î¿ AƒÇèWØÿÿAƒÿ2uéH‹SL‰îH‰ï1ÀE1ÿèÝ�H‹H…Ûu½I‹\$ H…ÛuëTf„H‹H…ÛtCöCuòAƒÿ1@H‰î¿ AƒÇè÷×ÿÿAƒÿ2uéH‹SL‰îH‰ï1ÀE1ÿè}�H‹H…Ûu½E…ÿ…™IƒÆL94$‡^þÿÿHƒ=†Ft>ƒ=õIt51ÒH�5Ò�H�=»IèfÒÿÿH‹¿>ëöCYtH‰ßèß‚H‹[@H…Ûuéƒ=ûA…ÕH�=bEè�ÔÿÿH�=>è‘ÔÿÿH‹=J@H…ÿ„·H�5G“èÛÿÿH‰ÅH…À„öH‹ !H�>H‰ï1À¾L�%›èµÜÿÿH‹ÆEH…Ût'f„H‹KL‰â¾H‰ï1ÀèŠÜÿÿH‹H…ÛuâH‰î¿ L�%\èÕÿÿH‹EH…Ût f�H‹KL‰â¾H‰ï1ÀèJÜÿÿH‹H…ÛuâH‰ïèZÒÿÿ‹(? ?…÷ƒ=Í>…‡¿èQÚÿÿI‹L$¾H‰ï1ÀH�7ûèöÛÿÿI‹|$è|ÒÿÿD�xé;ýÿÿ1ÿºH�5™‚è0ÒÿÿºéH�5OH‰Ç1Àè:Dé9þÿÿH‹@(Hƒxp„*þÿÿH‹€øH…À„·üÿÿö@D@„­üÿÿI‹D$ ëH‹PöBD@„˜üÿÿH‹H…ÀuêéîýÿÿH�=ü1Àè‘‹{Lè´JéúÿÿH‹5�>¿ èîÓÿÿ‹{Hè–JéßùÿÿH‹=*?è¥Ùÿÿ…À„ð¶Æ>ƒà<„;ƒ=¼?„.H‹-7L�%>¨H‰ïèxÑÿÿH‰Ãƒø~8H˜L�%%¨H�lüL‰æH‰ïè§Îÿÿ…À„ïH�5U}H‰ïè�Îÿÿ…À„Ø¿èÞÒÿÿ�{HcÿH‰ÅèÐÒÿÿL‹-ÉI‰ÆH‰ÇL‰îèÛÎÿÿL‰æL‰÷èàÙÿÿL‰ïH�5�ˆè�ØÿÿH�5·�L‰÷I‰ÄèoØÿÿI‰ÅM…䄱M…턃H�"ëIc×L‰é¾H‰ïèÚÿÿA9Ç…­L‰áº¾H‰ïèPÏÿÿI‰Ç…ÀÈL‰çèÐÿÿL‰ïè ÐÿÿƒÀ„ØL‰÷èhÍÿÿH‰ïè`Íÿÿƒ=í<…#HÇøéåêÿÿ1öéêëÿÿM‹|$1ÿºH�5ÉèôÏÿÿH‰ÇL‰þ1ÀèBé£úÿÿƒ=7>„üÿÿH‹-~3é'ùÿÿ1ÿºH�5«%è¶ÏÿÿL‰îH‰Ç1ÀèÉAéLôÿÿ1ÀH�5û%¿è�ÖÿÿL‹-b:Iƒ}„üÿÿH�-æL�%æë €¿ èÎÌÿÿM‹mIƒ}„ÖûÿÿI‹UH‰îI‹]8¿I+] 1Àè$ÖÿÿH‰ßè\ßI‹}(èSßI‹E(H…Àt²H…Ûx:fïÀòH*ÃòYÜ-H…Àx?fïÉòH*Èò^ÁL‰æ¿¸èÐÕÿÿésÿÿÿH‰ÚƒãfïÀHÑêH ÚòH*ÂòXÀë´H‰ÂƒàfïÉHÑêH ÂòH*ÊòXÉë¯è`Ðÿÿ…À„üÿÿ1ÿºH�51è…ÎÿÿH‰Ç1Àè›@é°ðÿÿH‹ÿ9H�¼$ˆÿPXH‰Ç1Àèj>éZôÿÿH�5KŽH‰ïèÖÿÿH‰';H…À…‹ëÿÿ¿èÐÿÿH‹-;1ÿºH�5ß#èÎÿÿH‰îH‰Ç1Àè%@éUëÿÿèk­H‹=¤1H+D$xH‰ÃèwÓÿÿ1ÿºH�5q%L‹%‚9èÍÍÿÿ¹@B¾H‹=¬6I‰ÂH‰ØH™H÷ùL‰áI‰ÑI‰ÀL‰Ò1Àè>×ÿÿH‹=‡6è"ÓÿÿéjýÿÿH‹-&;1ÿºH�5€$èsÍÿÿH‰ÇH‰î1Àè†?éäûÿÿ¾‰H�=€ è`@é ÷ÿÿ¾H‰Çèî�édòÿÿL�=‚:éAïÿÿ1ÿºH�5�èÍÿÿ¾H‰ïH‰Â1Àè¨Öÿÿé5ùÿÿH‹D$HH‰D$éÛÚÿÿH‹-Í1ÿºH�5¯#èÚÌÿÿH‰ÇH‰î1Àèí>éMúÿÿH‰Þ1ÿºè¹ÌÿÿL‰öH‰Ç1ÀèÌ>é2üÿÿL�=ð9é»îÿÿH‹D$H�/!H‹H‹=u5¾1ÀèÖÿÿéùùÿÿH‹H�Ú ëÜ1ÿºH�5èUÌÿÿL‰öH‰Ç1Àèh>éüÿÿL‹%,91ÿºH�5Î"è)ÌÿÿH‰ÇL‰æ1Àè<>éÞøÿÿ1ÿºH�5i#èÌÿÿL‰öH‰Ç1Àè>éXûÿÿL‹=Ë1ÿºH�5 #èØËÿÿH‰ÇL‰þ1Àèë=é#ûÿÿfDóú1íI‰Ñ^H‰âHƒäðPTE1À1ÉH�=¡×ÿÿÿôf.„H�=1/H�*/H9øtH‹æH…Àt ÿà€Ã€H�=/H�5ú.H)þH‰ðHÁî?HÁøHÆHÑþtH‹ÅH…ÀtÿàfDÀóú€= 4u+UHƒ=¢H‰åt H�=®°èÉÕÿÿèdÿÿÿÆå3]ÃÀóúéwÿÿÿ€H‹a<L‹B<AWAVD‹Ç:AUATUSH‰D$øI9ƒÒ1íL�=ÊáL�cÄD‰ÚH�=ù¬L� 2ÓH�ËÒA¶„À„¬H�5Õï¶ ‰ÎHcÒ¸fAƒH‹€ØH�5 vL‰çH‹(ÆèÌÿÿH…ÀuiH‰îL‰çè®ÉÿÿE1À…À¶3A”Àˆ[D‰À]A\A]A^ÃL�nH�5ÅuL‹rL‰ïèÉËÿÿH…Àu4L‰öL‰ïèiÉÿÿ…À„XÿÿÿE1À[]D‰ÀA\A]A^Ãf�1ÒH‰îL‰çèóÆÿÿë“�1ÒL‰öL‰ïèãÆÿÿëÈ�H…ÿ„òAVAUATL�%ZuUH‰õSH‰ûë,L‰ïèØÅÿÿH‰ÆH…Àt+H‰êL‰ïèÕþÿÿ…ÀuyH‹[H…Û„¤¾5W2L‹+@„öuÅL‰æL‰ïL‹uèËÿÿH…ÀuaL‰öL‰ïè¶Èÿÿ…Àt:H‹E(H…Àt¸H‹€ØH…Àt¬L‹+L‰æL‹0L‰ïèÜÊÿÿH…Àu7L‰öL‰ïè|Èÿÿ…Àu‡[¸]A\A]A^Ãf.„1ÒL‰öL‰ïèÆÿÿë›�1ÒL‰öL‰ïèóÅÿÿëÅ�[1À]A\A]A^Ã1ÀÃf�óúAWAVAUATUSHƒìH‹F(L‹wPH‹˜�H…Û„›H‰ýI‰÷I‰ÕI‰Ìf.„H‹I‹F¶2@80ui¶z@8xu_¶J8HuV¶J8HuM¹ëfD¶< HƒÁ@8÷u3¶4@€þ*uéI‹~L‰þèeþÿÿ…ÀuH‹MxM‰áM‰øH‰ÚL‰öH‰ïAÿÕH‹[H…Û…{ÿÿÿHƒÄ[]A\A]A^A_Ãff.„�óúAWAVAUATUSHƒìH‹F(H‰$H‹˜�H‰L$H…Û„¹I‰üH‰õM‹t$ M…öuIë|@L‰îL‰ÿèýÆÿÿ…Àu,I‹~H‰îè½ýÿÿ…ÀuI‹L$xL‹L$I‰èH‰ÚH‹$L‰öL‰çÿÐM‹6M…ötPM‹~M…ÿtÃH�5õrL‰ÿL‹+èúÈÿÿH…Àt�1ÒL‰îL‰ÿèHÄÿÿë™fDI‹L$xL‹L$I‰èH‰ÚH‹$1öL‰çÿÐH‹[H…Û…PÿÿÿHƒÄ[]A\A]A^A_Ãf„ATUSƒÿw}H‰Õ‰ÿH�«„H‰óHcºHÐ>ÿàfD‹Ex+Fxu&H‹uH‹;[]A\éÆÿÿH‹uH‹;èÆÿÿ…Àu‹Ex+Cx[]A\ÃDH‹>èxêH‹}A‰Äèlê‰ÂD‰à Ðx³D‰à)ÐuÒëªH�ÓŒ¾ìH�=ûqè2"f�óúAWAVI‰ÎAUI‰ÕH� øÿÿATI‰üUH‰õSHƒì(L‹PH‹~(dH‹%(H‰D$1ÀH‰áHÇ$I‹wÇD$èw¾ÿÿ‹D$H‹$…Àu{H…ÛtNI‹H‰îè üÿÿ…Àu>H‹D$dH+%(…�I‹L$xHƒÄ(M‰ñI‰èH‰ÚL‰þ[L‰ç]L‰èA\A]A^A_ÿàH‹D$dH+%(uGHƒÄ([]A\A]A^A_Ãf„H‹D$dH+%(uHƒÄ(L‰ñL‰êH‰î[L‰ç]A\A]A^A_éQýÿÿèüÀÿÿff.„�óúAWAVAUATI‰üUH‰õSHƒì8L‹PH‹_XH‰$H‹~(H�ÑöÿÿH‰L$I‹wH�L$dH‹%(H‰D$(1ÀÇD$HÇD$èM½ÿÿ‹D$L‹l$…À…ÔH‹E(L‹°�M…öu%ëbf.„H‹{I‹6è”öÿÿ…ÀupM‹vM…öt?M9îuâI‹H‰îè¦úÿÿ…ÀuâL‰òI‹L$xL‹L$I‰èH‹$L‰þL‰çÿÐM‹vM…öuÆDH‹D$(dH+%(…~HƒÄ8[]A\A]A^A_ÃDH‹{H‰îèDúÿÿ…Àu€I‹L$xL‹L$I‰èL‰òH‹$H‰ÞL‰çÿÐé_ÿÿÿ€H‹D$(dH+%(u"H‹L$H‹$HƒÄ8H‰î[L‰ç]A\A]A^A_éÆûÿÿèq¿ÿÿ�óúAWAVAUATI‰üUH‰õSHƒìHL‹wPH‹_XH‰T$L‹`H�PõÿÿH‰L$H‹~(H�L$ I‹vdH‹%(H‰D$81ÀÇD$(HÇD$ èÈ»ÿÿH‹D$ H‰D$‹D$(…À…H‹E(L‹¨�M…íu@é�DH‹{H‰îè<ùÿÿ…ÀuI‹L$xL‹L$I‰èL‰êH‹D$H‰ÞL‰çÿÐM‹mM…ítbL;l$„I‹uH‹{èÊôÿÿ…Àu®I‹è½ôÿÿ…ÀtÎI‹H‰îèÝøÿÿ…Àu¾L‰êI‹L$xL‹L$I‰èH‹D$L‰þL‰çÿÐM‹mM…íu¡H‹D$8dH+%(…HƒÄH[]A\A]A^A_ÃDI‹~H‰îè|øÿÿ…À…YÿÿÿI‹L$xL‹L$I‰èL‰êH‹D$L‰öL‰çÿÐé7ÿÿÿf�H‹D$8dH+%(u#H‹L$H‹T$H‰îL‰çHƒÄH[]A\A]A^A_éýùÿÿ訽ÿÿ„óúAWL�=£óÿÿAVAUI‰ÍATI‰ôUH‰ýSHƒìXH‹_XL‹w`H‰T$H‹WhH�L$0dH‹%(H‰D$HH‹GPH‹~(H‰T$ L‰úH‰\$H‰L$H‹pH‰D$(HÇD$0ÇD$8èá¹ÿÿ‹T$8H‹\$0H‹L$…Ò…«H‹D$I‹|$(L‰úH‹pHÇD$0謹ÿÿH‹D$0H‰D$‹D$8…À…vI‹D$(L‹¸�M…ÿ„¹L‰èM‰ýI‰Çë9fDI‹~L‰æè÷ÿÿ…ÀuH‹MxH‹D$M‰ùM‰àL‰êL‰öH‰ïÿÐM‹mM…ítuL9ë„ÔL9l$„‰I‹uI‹~èœòÿÿ…Àu¨H‹D$ H‹xèŠòÿÿ…ÀtÀH‹D$ L‰æH‹xè¥öÿÿ…Àu«L‰êH‹MxH‹t$ M‰ùH‹D$M‰àH‰ïÿÐM‹mM…íu�@H‹D$HdH+%(…ÅHƒÄX[]A\A]A^A_ÃDH‹D$L‰æH‹xè?öÿÿ…À…AÿÿÿH‹MxH‹T$M‰ùM‰àH‹t$H‹D$H‰ïÿÐéÿÿÿ@H‹D$(L‰æH‹xèÿõÿÿ…À…ÿÿÿH‹MxH‹t$(M‰ùM‰àH‹D$H‰ÚH‰ïÿÐéàþÿÿfDH‹D$HdH+%(u!H‹T$HƒÄXL‰éL‰æ[H‰ï]A\A]A^A_é÷ÿÿè*»ÿÿf.„AWI‰÷AVI‰ÎAUI‰ÕATI‰üUH‹@èrõÿÿ…À…†I‹(H…ÿt¾èWÄÿÿ…Àu#AöGXuh]I‹D$HL‰ñL‰êL‰þL‰çA\A]A^A_ÿàI‹(1öè5ÄÿÿH‰ÅH…Àt9DH‹µH…ötöFXuL‰ñL‰êL‰çAÿT$HI‹(H‰îèüÃÿÿH‰ÅH…ÀuÌ]A\A]A^A_Ãf.„óúUH‰õHƒìH…ÿ„«H‰îè³¹ÿÿH‰ÂH…À„ºH�pH�x HÇ@HƒçøH‰ñHÇ€°1ÀH)ù�Á ÁéóH«H�B(ÇB H‰B0H‹~HÇB(Ç‚ H‹HH‰1Hƒ=m$H‰pH‹j$tH�HàH‰J@H‰0H�B8H‰R$HƒÄH‰Ð]Ã�H‰ï¾¸H‰T$è½ÿÿH‹T$H…ÀH‰Ç…2ÿÿÿHƒÄ1À]ÃDAVAUI‰õATUSH‰ûèM¹ÿÿH�xèôºÿÿL‰ïI‰Äè9¹ÿÿH�xèàºÿÿH‰Å¶„À„jH�KL‰âH�5´û@¶HƒÁHƒÂˆBÿ¶Aÿ„ÀuéÆA¶EI�MH‰ê„Àt%H�5û€¶HƒÁHƒÂˆBÿ¶Aÿ„ÀuéÆL�5ÃhL‰çL‰öè¬ÃÿÿH…Àu ëDˆHƒÀ¶P„ÒuòÆL�-¨hL‰çL‰îè}ÃÿÿH…ÀuëfDˆHƒÀ¶P„ÒuòÆL‰öH‰ïèTÃÿÿH…Àu ëDˆHƒÀ¶P„ÒuòÆL‰îH‰ïè,ÃÿÿH…Àu ëDˆHƒÀ¶P„ÒuòÆA¶$:UuU¸ëfDA¶A‰ÅHƒÀ:Tÿu�Hÿ„ÒuçD�,‰EíL‰çèдÿÿH‰ïèÈ´ÿÿ[D‰è]A\A]A^Ã@L‰âé·þÿÿE1íëÓff.„óú‹ê%ATUH‰õSH‰ûƒø„»ƒø„š‹E9C…‡L‹#H�5jgL‰çè »ÿÿ…ÀtqH�5agL‰çèùºÿÿ…Àt^H�5XgL‰çèæºÿÿ…ÀtKH�5RgL‰çèÓºÿÿ…Àt8Hƒ=(t'H‹uL‰çè©ýÿÿH‹uA‰ÄH‹(H‹8è“ýÿÿA9Ä~H‰ï'[1À]A\à „\ÿÿÿ[1À]A\À‹G …ÀuÚ‹E9CuÒéFÿÿÿ@óúATUS‹GH‰ûƒø tƒø u H‹GH‰… []A\ÄHƒ=è#t)ºH�5žf1ÿè3¶ÿÿº• H�5KfH‰Ç1Àè=(H‹5Ö!H‹kH…ö„)D‹†$H‰5»!E…À…BH‰ïèʼÿÿH‰ƒ#H‰ÇH…À„Çí¾è#ºÿÿ…À„£H‹=T#H‹Å‹5»H‹Gÿ��…À„UH‹=.#H‹Gÿ�¸H‰õ"H…À„ôH‹= #‹5è¼ÿÿH‹ë ÿP@H‹ ñ"‹=Û!‹QD…ÿtD¶�"ƒà<t6€Î‰QD‹5ê!‰Ð$…öt‰Ð €‰Â€Ì€æûöd"D‰AD[]A\Ã@€æþ‰QD‹5´!‰Ð$…ötΉР€ëÈfDH‹5H95 t H…ö…¾þÿÿèâòH‰Æé±þÿÿf.„H�=Iîÿÿ褺ÿÿH‰ÆH…À„È1Àƒ=#•À;F „³H‹–hH…Òt ;B „FH�=÷üÿÿèbºÿÿH‹“%H…ÀtcH‹0H‰5 éUþÿÿ€1ÿºH�5Ú2è-´ÿÿH‰îH‰Ç1Àè@&é†þÿÿ1ÿºH�5Š2è´ÿÿH‰îH‰Ç1Àè&é8þÿÿ1ÿºH�5í1èà³ÿÿH‰Ç1Àèö%fDH‹5‰éÒýÿÿ@è{µÿÿƒøt^ºH�521ÿ裳ÿÿH‰îH‰Ç1Àè¶%H‹=/!é³ýÿÿf.„1ÿºH�5B2èm³ÿÿH‰Ç1Àèƒ%éêýÿÿfDL‹%1ÿºH�5Ãcè>³ÿÿH‰ÇL‰æ1ÀèQ%évÿÿÿ@H‹2H‰5Þé'ýÿÿf„óúHƒ=<t*H‹‹H‹€àH…ÀtHƒìÿÐ…ÀuHƒÄé¬Ã@ÀHƒÄÃff.„óúATH‹ £º UH‰õ¾SH‰ûH�=5cè%¼ÿÿH9ëw2L�%.cf„¿ H‹=fL‰â1À¾HƒÃè¼ÿÿH9ÝsÞH‹5G[¿ ]A\é™´ÿÿf„óúATI‰üUHƒì‹`#…ÀuX‹R#ƒèƒøw*H˜H�¡"1öH‹ ÂHƒÄL‰â1À]H�=£bA\é$HƒÄL‰â1ö1À]H�=šbA\éö#fD‹J"H�ó!H�5´0ƒøƒÐÿ1ÿH‹,º覱ÿÿH‰ÇH‰î1Àè¹#élÿÿÿ@óúAUATUH‰õSH‰ûHƒìè¯ÿÿD‹(I‰ÄH…Û„ØH‹CÇCÆH‹CÆ@H‹SH‹G!ÇC(H‰SÇC8H…ÀtXH‹ !!H;Èt[H‰+ÇC4H;ÈtHÇC,1ÀH…ítH‰ïè ¶ÿÿ‰Ç襯ÿÿ…ÀŸÀ¶À‰C$E‰,$HƒÄ[]A\A]ÃH‰+ÇC4ë¹@‹sH‰V"H‰7"‰5!"H‹3H‰5¯ ¶ˆ2"évÿÿÿf„H‹‰ H‰,%Ç%4H‹ g H…À…MÿÿÿéNÿÿÿ�óúPXH�ë¾1ÀHƒìH‰ùH‹=.èÙ¹ÿÿ¿诹ÿÿff.„@USHƒìH‹= H…ÿtnH‹o!H�PÿH;ôv HƒÄ[]ÃH�XH�,ÝH‰îè|¶ÿÿH‰ÕH…ÀthH�D(ÀfïÀH‰(!@@ @0HƒÄ[]Ãf.„¾¿èA³ÿÿH‰ŠH…ÀtHÇâ HÇgHƒÄ[]ÃH�=™.èüþÿÿff.„�UH‰ýSHƒìH‹@H…Àt[H‹,H�ÐH‹;H…ÿtHH‰îè�ýÿÿH‹‹B‰„ H‹BH‹H‰ž H‰ H‰¶ˆƒ HƒÄ[]Äè»þÿÿH‹ÌH‹ÍH‹=ÎH�Ðè�ÎH‹=¶H‰H‹¤H…ÿuH�Åérÿÿÿf.„H�ÇH‹;é\ÿÿÿ@AWAVAUATUSHƒìH‹cH‹dH‹=ÝL�$ÐHcÂH‹ãM‹,$I‹uH�TH9ЇèA‹M4H‰ÂH)ú…É„«�jÿ…í~#D�Bþ1ÒfD¶ ˆ H‰ÑHƒÂI9ÈuíM‹,$Aƒ}8uAéíDA‹u…öŽŒöA‰uƒÆHcöèk´ÿÿI‰EH…Àt7HcÛM‹,$HØH‰I‰êI‹}÷ÒAU…ÒaH)øH‰ÃA‹E …Àu«IÇEH�=,-èýÿÿ€E1äHƒúA•ÄAƒÄHƒÄD‰à[]A\A]A^A_À�FIÆÁøÆéfÿÿÿH‹9H…À„°¸ÿÿH‹ !H‹ÈHƒ8„›H‹ H…É„‹¸ ¾9ÂNÂHcÐHcÅHÇH‰ÓèÛ«ÿÿI‰ÇA‰Å9Ã�0H‹ÎH‹ÏD‰=8E1äH�ÐL‹3E‰~I‹~DíA;n}‰-HcíÆ/H‹H‹@ÆD(H‹H‹@H‰éÿÿÿ�ÇæÇ@…턇H‹XH‹YA¼D‹-¼H�ÐL‹3DíAÇF8I‹~A;n~ƒAÑýAíIcõè²ÿÿI‰FH‹H‹xH…ÿ„ÍAƒíD‰héTÿÿÿ�ÇfAÇEézÿÿÿf„H‹=áA¼è~üÿÿH‹¿H‹ÀD‹-)H�ÐL‹3éóþÿÿH‹=®èñ©ÿÿ…Àu1H‹ŽH‹�E1äH�ÐL‹3D‰=îE‰~E…ÿ…·þÿÿéýþÿÿ1ÿºH�56+èY«ÿÿH‰Ç1Àèoë°H�=¶*èáúÿÿH�=:+èÕúÿÿDUSHƒìH‹»¶°ˆ„Àu"H‹H‹H‹ÐHcmHBH9Ãs$H�S¶ÆH‰{¶SˆmHƒÄ[]Ãf�H�CH‹-EH‰Vè9üÿÿ‰Â1Àƒút׃út…Òt'H‹8ëªfDH‹=™‰D$ è8ûÿÿ‹D$ ë©f�H)ëHcÛHóézÿÿÿff.„Hƒì@è#ÿÿÿƒø*t…Àt:ƒø uíƒþè ÿÿÿƒø*uæ@èûþÿÿƒø*töƒø/t7ƒø t×…ÀuÀë fDƒø*tÛ1ÿºH�5ÈZèø©ÿÿHƒÄH‰Ç1Àé XÄóúSH‰ûè³ùÿÿH‹ ÌH…É„“H‹´H�ÁH‹0H9ÞtwH‰ÂH…öt;H‹9¶5.@ˆ2H‹H‰P‹ú‰PH‹xH�ÅH�HmH‰H‹‹B‰ÎH‹BH‹H‰èH‰ÉH‰J¶ˆÍ[ÀH…ÛtòH‹HÁàH‰Âë®ff.„óúAWAVAUATUSHƒì(‹  …É…†ÇŽ‹ð…Ò„ÀHƒ=Ø„ÊHƒ=b„ØH‹µH…À„H‹�H‹ÐH…À„û‹P‰ÿH‹PH‹H‰H‰‚¶H‰ðˆþ‹T…À…ŒH�%¢L� ~¿E‰ÅH�-´ŠL�%í°L�5†°H‹5Ƕ ¼H‰t$ˆ‹=+Hc×E1ÀA»¿SL�qÍfAƒÿàHc¶H‹5§A¿Aë°Hƒ=Ç…6þÿÿH‹¹ Hƒ=‘H‰ò…(þÿÿH‹� H‰véþÿÿ�Ƕƒèƒø‡íH�3ÍD‹$‚HƒÄ(D‰à[]A\A]A^A_ÃD‰D$èsöÿÿH‹„H‹…H‹=†H�ÐèEÆH‹fD‹D$H‰H‹_H‹Ðé¾ýÿÿ‹Ðƒè‰Ç…!Ç÷E1ä냃ëéðýÿÿÇìiA¼iébÿÿÿÇ×YA¼YéMÿÿÿÇÂXA¼Xé8ÿÿÿÇ­€A¼€é#ÿÿÿǘWA¼Wéÿÿÿǃ A¼ éùþÿÿÇn2A¼2éäþÿÿÇYA¼éÏþÿÿÇDPA¼PéºþÿÿÇ/NA¼Né¥þÿÿÇ~A¼~é�þÿÿÇ}A¼}é{þÿÿÇð|A¼|éfþÿÿÇÛ9A¼9éQþÿÿÇÆ8A¼8é<þÿÿDZ7A¼7é'þÿÿÇœ6A¼6éþÿÿLJ)A¼)éýýÿÿÇr*A¼*éèýÿÿÇ](A¼(éÓýÿÿÇH'A¼'é¾ýÿÿÇ3:A¼:é©ýÿÿÇMA¼Mé”ýÿÿÇ LA¼LéýÿÿÇôKA¼KéjýÿÿÇßA¼éUýÿÿÇÊA¼é@ýÿÿǵA¼é+ýÿÿÇ A¼éýÿÿÇ‹A¼éýÿÿÇvJA¼JéìüÿÿÇaIA¼Ié×üÿÿÇLHA¼HéÂüÿÿÇ7.A¼.é­üÿÿÇ",A¼,é˜üÿÿÇ GA¼GéƒüÿÿÇøOA¼OénüÿÿÇã#A¼#éYüÿÿÇÎ"A¼"éDüÿÿǹ!A¼!é/üÿÿǤA¼éüÿÿÇ�/A¼/éüÿÿÇz0A¼0éðûÿÿÇe-A¼-éÛûÿÿÇPUA¼UéÆûÿÿÇ;QA¼Qé±ûÿÿÇ&;A¼;éœûÿÿÇ\A¼\é‡ûÿÿÇüSA¼SérûÿÿÇçRA¼Ré]ûÿÿÇÒTA¼TéHûÿÿǽ=A¼=é3ûÿÿǨ<A¼<éûÿÿÇ“AA¼Aé ûÿÿÇ~>A¼>éôúÿÿÇi1A¼1éßúÿÿÇT+A¼+éÊúÿÿÇ?@A¼@éµúÿÿÇ*sA¼sé úÿÿÇ?A¼?é‹úÿÿÇfA¼févúÿÿÇëgA¼géaúÿÿÇÖFA¼FéLúÿÿÇÁEA¼Eé7úÿÿǬdA¼dé"úÿÿHc5BH‹ cºH‹=7èBªÿÿL� Û·épøÿÿH‹5H�=ŒQè3ÙÿÿL� ¼·éQøÿÿH‹5H�=bQèÙÿÿL� �·é2øÿÿƒ-Õy ÇeH‹ÎD¾ é–ùÿÿH‹¾ƒ«D¾ éùÿÿH‹§D¾ éoùÿÿH‹—ÇÇwD¾ éKùÿÿH‹sÇùD¾ é1ùÿÿH‹=YA¼uèþ¡ÿÿH‰—éùÿÿH‹=;A¼vèà¡ÿÿH‰yéõøÿÿÇjxA¼xéàøÿÿÇUwA¼wéËøÿÿH‹óD¾ 黸ÿÿH‹ãA¼H�xè„¡ÿÿH‰ÇH‰ÃH‰èrŸÿÿI‰ÀHc°HƒèL9ÀIGÀÆéuøÿÿH‰ùH‹=š€?/…Ú €*…Ð ¶”H‰ yÇgˆH�AH‰z¶AÆAˆhèoôÿÿL� øµé�öÿÿ¶PL‹5H‰òˆH‹©L)ÂL‹—ƒêN‹ÐA‹B8…À„4 HcõIBH9†z H‰t$H‰|$‰T$èáïÿÿH‹|$H‹t$L� €µƒøH� ²`„ HcT$ƒø„½ …À…ôõÿÿL‹£I�4L‰D$H‰5«H‰t$è9ÓÿÿH‹t$L‹D$L� (µ‰ÇL‰D$¶éÎõÿÿ¶vHckI‰øˆH‹5WL‰ÇéVöÿÿH‹@A¼H�xèáŸÿÿH‰z éööÿÿH‹=A¼èßÿÿH‰\ éØöÿÿH‹=A¼襟ÿÿH‰> éºöÿÿH‹âA¼H�x胟ÿÿH‰ é˜öÿÿH‹=ÀA¼èeŸÿÿH‰þ ézöÿÿH‹=¢A¼èGŸÿÿH‰à é\öÿÿH‹=„A¼è)ŸÿÿH‰ é>öÿÿdz `A¼`é)öÿÿÇž _A¼_éöÿÿlj ^A¼^éÿõÿÿÇt tA¼téêõÿÿÇ_ sA¼séÕõÿÿÇJ rA¼réÀõÿÿÇ5 hA¼hé«õÿÿÇ eA¼eé–õÿÿÇ dA¼dé�õÿÿÇö VA¼VélõÿÿÇá aA¼aéWõÿÿÇÌ mA¼méBõÿÿÇ· lA¼lé-õÿÿÇ¢ kA¼kéõÿÿÇ� ]A¼]éõÿÿÇx A¼éîôÿÿÇc VA¼VéÙôÿÿÇN cA¼céÄôÿÿÇ9 `A¼`é¯ôÿÿÇ$ _A¼_éšôÿÿÇ ^A¼^é…ôÿÿÇú tA¼tépôÿÿÇå rA¼ré[ôÿÿÇÐ hA¼héFôÿÿÇ» eA¼eé1ôÿÿǦ ZA¼ZéôÿÿÇ‘ iA¼iéôÿÿÇ| aA¼aéòóÿÿÇg mA¼méÝóÿÿÇR lA¼léÈóÿÿÇ= kA¼ké³óÿÿÇ( ]A¼]éžóÿÿÇ A¼é‰óÿÿƒñ A¼bÇñ bémóÿÿÇâ �A¼�éXóÿÿÇÍ {A¼{éCóÿÿǸ [A¼[é.óÿÿÇ£ ‚A¼‚éóÿÿÇŽ cA¼céóÿÿÇy BA¼BéïòÿÿÇd DA¼DéÚòÿÿÇO CA¼CéÅòÿÿÇ: &A¼&é°òÿÿÇ% %A¼%é›òÿÿÇ $A¼$é†òÿÿÇûA¼éqòÿÿÇæPA¼Pé\òÿÿÇÑA¼éGòÿÿǼA¼é2òÿÿǧyA¼yéòÿÿÇ’NA¼NéòÿÿÇ}5A¼5éóñÿÿÇh4A¼4éÞñÿÿÇS3A¼3éÉñÿÿÇ>;A¼;é´ñÿÿÇ):A¼:éŸñÿÿÇ(A¼(éŠñÿÿÇÿ)A¼)éuñÿÿÇê{A¼{é`ñÿÿÇÕ}A¼}éKñÿÿÇÀ=A¼=é6ñÿÿÇ«<A¼<é!ñÿÿÇ–%A¼%é ñÿÿÇ�/A¼/é÷ðÿÿÇl-A¼-éâðÿÿÇW+A¼+éÍðÿÿÇB*A¼*é¸ðÿÿÇ-?A¼?é£ðÿÿÇ!A¼!éŽðÿÿÇ~A¼~éyðÿÿÇî|A¼|édðÿÿÇÙ&A¼&éOðÿÿÇÄ,A¼,é:ðÿÿǯ>A¼>é%ðÿÿÇšA¼éðÿÿÇ… A¼ éûïÿÿÇp A¼ éæïÿÿÇ[A¼éÑïÿÿÇFA¼é¼ïÿÿÇ1A¼é§ïÿÿÇA¼é’ïÿÿÇA¼é}ïÿÿÇòA¼éhïÿÿÇÝA¼éSïÿÿÇÈA¼é>ïÿÿdzA¼é)ïÿÿÇžA¼éïÿÿlj A¼ éÿîÿÿÇt A¼ éêîÿÿÇ_ A¼ éÕîÿÿÇJ[A¼[éÀîÿÿÇ5=A¼=é«îÿÿH‹=ÓA¼èx—ÿÿH‰é�îÿÿÇ+A¼+éxîÿÿÇí-A¼-écîÿÿÇØ]A¼]éNîÿÿH‹=v1Ò€?$u HƒÇº1öè/’ÿÿH‹XHc IHÇžH‰�¶L ÿƒá߀ùM„#€ùK„€:0A¼…çíÿÿ¶BƒàßAUL�-u>ATL�%TUH‰ýSH‰óH‰ßÿÕƒ{w‹CIc„Là>ÿà„ƒ»Œÿt H‹sH‰ïè›ÿÿÿH‹H…ÛuÃ[]A\A]A^Ãf.„H‹5ùøH‰ïèqÿÿÿH‹H…Ûu™ëÔ€H‹s0H‰ïèTÿÿÿH‹H…Û…xÿÿÿ볺L‰ö1ÿè§�ÿÿºL‰îH‰Ç1ÀèµÿH‹H…Û…Iÿÿÿë„€Ãff.„@óúAWL�=ø1ÉAVA‰ÖAUI‰ýATUS‰óH‰þL‰ÿHƒìèò‘ÿÿI‰ÄH…À„æH‹hH�û~”ÁH…ítMAöÆ„¤„É„œ1ÿH‰êL‰þˆL$èáÒÿÿ¶L$H…À„ÍóAo$I‰íI‹T$H‰PI‰$I‰ÄA¶„$°ÁáM‰l$H‰ÊA‰œ$¤ƒà ÐAˆ„$°IƒÄHƒÄL‰à[]A\A]A^A_Ãf„…Àx…ÛtÙI‹$H…ÀtH;hHuI‰ÄA‹„$¤9ØuÚ비E…ö…EÿÿÿE1äë§f�E…öt 1ÿºH�5¥ è8ŒÿÿL‰îH‰Ç1ÀèKþé{ÿÿÿºH�5‚ 1ÿE1äèŒÿÿH‰îH‰Ç1Àè#þéSÿÿÿff.„óúAW‰ðA‰÷AV%I‰þAUI‰ÍATUSHƒìH‰$‰D$ fDH�™öH‹H‹X H…Û„ I‰Ü1í@I‹t$8E‹„$�H…öt+D‹F(M…ít"D‰D$I‹–øL‰ñH‹=ùAÿÕD‹D$…Àt#E1øI‹D$ A�à@uH…À„ÜL‰åI‰Äë¡�M‹d$ M…äu–H…í…½D‰øƒàƒø„‹D‰øƒà ƒø „D‰ø%=„ŒD‰ø%@=@„ùD‰ø%=„¦AöÇ„t1íH…Û„A�H‹s8D‹£�H…öt!D‹f(M…ítI‹–øH‹=9øL‰ñAÿÕ…Àt?E1üH‹C Aƒäu2H…À„dH‰ÝH‰ÃH‹s8D‹£�H…öu³E1üH‹C AƒätÔfDH‹[ H…Ûu‡H…í•ÂM…íHÇ$”ÀE1íЄhþÿÿI‰ìHƒÄL‰à[]A\A]A^A_ÃH‹C H…À„îH‰ÝH‰ÃH‹s8D‹£�H…öt!D‹f(M…ítI‹–øH‹=v÷L‰ñAÿÕ…ÀtD‰àD1ø© @t¯% A�ä@D àtžH‹C H…Àu¥éYÿÿÿH‹[ H…Û„LÿÿÿH‹s8D‹£�H…öt!D‹f(M…ítI‹–øH‹= ÷L‰ñAÿÕ…ÀtÂE1üH‹C A�ä@u²H…À„4H‰ÝH‰ÃH‹s8D‹£�H…öu°ëÏ�H…Û„§1íDH‹s8D‹£�H…öt!D‹f(M…ítI‹–øH‹=™öL‰ñAÿÕ…Àt?E1üH‹C A�ä@u/H…À„ÁH‰ÝH‰ÃH‹s8D‹£�H…öu°E1üH‹C A�ä@tÑH‹[ H…Ûu‡é[þÿÿf�D‰øƒàƒøtD‰øƒà ƒø …wýÿÿfD1Ò1íé6þÿÿ€H…Û„JD‰ùE‰ú1öE1ä�ÉAƒâë"¨u E…Ò…þÿÿI‰Ü¾H‹[ H…Û„ þÿÿH‹C8H…Àt%‹@(‰Â1Ê÷ÂtÆ…ö…éýÿÿ�âLDãëÇf�‹ƒ�ëÖ„H…Û„gÿÿÿ1íë‹D$ …ÀuZH‹C H…À„¶H‰ÝH‰ÃH‹s8D‹£�H…öt!D‹f(M…ítI‹–øH‹=>õL‰ñAÿÕ…ÀtD‰àD1ø©t¯A�ä@užH‹C H…Àu­é)ýÿÿI‰ìH‹$H…À„;ýÿÿL‰ é3ýÿÿE1äH…Ûu"é&ýÿÿ‹@(D1øöÄ LDãH‹[ H…Û„ ýÿÿH‹C8H…ÀuÝ‹ƒ�ëØE1äéðüÿÿI‰Üéèüÿÿff.„f�óúS‰ûƒçuöÃu*öÃu8öà uFƒãuT[ÃfD1ÀH�=�2è*FöÃtÖ1ÀH�=×ÄèFöÃtÈ1ÀH�=s>èFöà tº1ÀH�=“FèñEƒãt¬H�=À71À[éÝEff.„f�óúUH�-dLSH‰ûHƒìƒ{w)‹CHcD…Hè>ÿà„H‹{èÇÿÿÿH‹[ ƒ{v×HƒÄ[]ÃfDH‹[ë¾f.„‹=At -CƒøwÐH‹{1Ò1öè€øÿÿH…Àt¾Hƒx8u·HƒÄ1öH‰Ç[]ë'€H‹{èWÿÿÿH‹{ èNÿÿÿH‹[(éYÿÿÿDóúATA‰ôUH�-À6SH‰ûH‹0H‰îèo‰ÿÿ…À„'€»˜‰šH‹C8H…À„ªH‹{XH‰@pHÇ@hH‰˜°H…ÿtèÜþÿÿH‹{`H…ÿtèÎþÿÿH‹{hH…ÿtLH�þ«HÇÆÿÿÿÿèb1Hƒøÿ„Ý1ÉHƒøv ºëf„H…Òt HÒƒÁH9ÐwðH‹C8‰Hx[]A\Ã@H‹s0H‹=uòèP‡ÿÿH‰C8H…À…VÿÿÿH‹s0H‹=XòD‰âèЃÿÿH‰C8H…À…6ÿÿÿH‹<òL‹c0º1ÿH�5BH‹@H‹(è~„ÿÿL‰âH‰ÇH‰î1ÀèŽöH‹C8éøþÿÿD1ÿºH�5âèM„ÿÿH‰îH‰Ç1Àè`öé´þÿÿ¹ÿÿÿÿéAÿÿÿ�óú€?„œAVAUL�-C5ATI‰üUSë[€¿I‰ÞèÛ…ÿÿM)æH‰ÅH‹îI�~H‰EèÁ…ÿÿL‰òL‰æH‰EH‰ÇèoˆÿÿBÆ0H‰-óí€;t.€{L�ct$L‰îL‰çèÙ‰ÿÿH‰ÃH…Àu™L‰çèɃÿÿI�ë‹[]A\A]A^ÃÃfDóúH‹5ïH…ÀtÀH‹‰íH9’ítH…ÀuãénÁff.„óúH‹ÕðÇ;íH‹@ƒxu H…ÿtöG+@u~HƒìH‹5#í‹=íè€�ÿÿƒøv$‹5í�V¨u&fDÑè‰ÑƒÂ¨tõ‰ çìƒøu HƒÄÃDºH�5 31ÿ赂ÿÿºÂ H�5Í2HƒÄH‰Ç1Àé»ôÀóúUH‰þH‹=ùï1ÉA¸ºè…ÿÿH‰ÅH…ÀtO€}u1·EH‹=ÎïHÇE(f%þf ƒ@f‰EtH‰î]é3…ÿÿ]ÃfD€Ml H‰î]é…ÿÿ1ÿºH�5è‚ÿÿH‰Ç1Àèôë’f„óú‹Fó…À„.AWƒèAVAUATUSHƒìƒøwpH‰ýL�-ì2L�5ë2H…ÿt*‹Eƒø „†w4ƒøtƒøu H‹}è¡ÿÿÿH‹mH…íuÖHƒÄ[]A\A]A^A_Ãf„ƒøuÚH‹=tìèoÿÿÿëÌDºH�5°11ÿèE�ÿÿHƒÄºËH�5Y1[H‰Ç]1ÀA\A]A^A_éAó�H‹] D‹=uòH…Ûuézÿÿÿ…Àtt@H‹H…Û„cÿÿÿL‹cL‰îL‰çèÅ„ÿÿ…ÀtáL‰öL‰çè¶„ÿÿ…ÀtÒ‹Cƒøt"ƒøu½Aƒÿu¿ÇCë¶fDÀAƒÿu¢ÇCë™f„D‰{ëŠf.„óúAWAVAUATUSHƒìH‹/H…í„NI‰üI‰ýE1ÿ1ÛL�5´0ë%fDƒø„�ƒøtjM‹mI‹mH…í„Ñ‹EƒøuÙM…ÿt+I9o t%ºL‰ö1ÿè€ÿÿº¥H�50H‰Ç1Àèò¸þÿÿÿ+…ŒH…ÛI‰ï‰…ŒHDÝëš@ö!í…H‹}1Ò1öèFòÿÿH‰ÇH…À„Á‹M…É…­M…ÿ…öèq¶ÿÿI‹UI‹ $H‹I‰$H‹I‰UH…Ò„òM‰åH‰E1ÿI‹mH…í…3ÿÿÿ@H…Ût?¸þÿÿÿ+ƒŒ‰ƒŒL9ût)ºþÿÿÿëfD‰Ð+ƒŒ‰ƒŒL9ût H‹[ H…ÛuäHƒÄ[]A\A]A^A_ÃD‹—Œ…Ò‰SÿÿÿH‹(H…ÿuéH‹mH�5f1ÿºèÒ~ÿÿHƒÄ[H‰ÇH‰î1À]A\A]A^A_é×ð€H�}è'þÿÿéhþÿÿf�H‹S(I‹G H‰B H…À„+H‰P(H‹G I‰G H‹G H…À„L‰x(H‰{(1ö1ÒA¹þÿÿÿH‰_ @D‰È+ƒŒ‰ƒŒH‹C8H…ÀtHƒ¸øt H…ÒH‰ÆHDÐI9ßt H‹[ H…ÛuÆ1ÛH…ö„}þÿÿH‹G8H…À„¶1ÛH9Æ„eþÿÿL‹J H‹NM…É„ÙI‰IH‹NH…É„îL‰I H‹HH‰NH‹HH…É„ÂH‰q H‰B 1ÛH‰PéþÿÿD1ÿºH�5ºþè•}ÿÿH‰Ç1Àè«ïéÃýÿÿfDL‰-¡æéþÿÿ@I�G H‰MèéòþÿÿHƒÂ H‰=èéÉþÿÿH‹_(H…Û„­ýÿÿ‹ƒŒ…ÀxH‹C8H…ÀtHƒ¸ø…ÿÿÿH‹[(H…ÛuÖé{ýÿÿL‹ªêI‰Š�éÿÿÿH‹ —êH‰±˜é/ÿÿÿH‹ „êL‰‰˜éÿÿÿ„óúHƒìƒ=æt=H‹5ÈåE1ÉE1À1É1ÒH�=Ç僼åÇæåÇ4æèWfèr|H‹[çH…À„§D¶½éL‹ êAƒâ@€‹�Œ…ÒxvH‹P8H…ÒtmHƒzHuf‹r(÷Æ u[H‹zH…ÿ„®H;W uHH‹ŠH…ÉuT¶ˆ˜öÁu ƒÉˆˆ˜�΀‰r(H‹R H…Òt]H‰zH…ÿt`H‰W Aƒ© H‹@ H…À…sÿÿÿHƒÄÃfDD‹A(A÷À€uA�àuÒE„ÒuÍH‹‰H…ÉuÙ냀I‰¹�H…ÿu I‰‘˜ë›I;‘˜u—H‹ŠH…É„Kÿÿÿë�ff.„f�óúH‹•æH‹†æSH‰ûH‰ÑH)ÁH9ÏwOL‹hæHØL9ÀtlH‹ yæ[HÈH÷ÑH!ÈH‰ÑH+ =æH‰ÆH+53æH9ÎHFÐL‰ÀH‰2æH‰#æÃf�H‰þH�=æèñZH‹æL‹æH‹ æHØL9Àu”€ -æë‹ff.„AVºAUATI‰üUH‰õSH‰ïHƒìdH‹%(H‰D$1ÀH‰æè¾wÿÿI‰ÅH‹$€8…–H‹ßåI�l$H…Ûué°„H‹H…Û„œH‹{H‰îè~ÿÿ…ÀuäL‰k¿(èÆþÿÿH�?ê¿(ÇH‰Å‹{êƒøƒÐÿH‹ÂL‰mHÇE H‰E‹›éÇE‰EL‹-šÇèuþÿÿÇ@HÇI‹UH‰I‰EL‰`H‰hH‰X é°¿ è>þÿÿ¿(H‰hI‰ÆL‰hÇ@H‹øäI‰L‰5îäèþÿÿH�Šé¿(ÇH‰Ã‹ÆéƒøƒÐÿH‹ÂL‰kHÇC H‰C‹æèÇC‰CH‹-åÆèÀýÿÿÇ@HÇH‹UH‰H‰EL‰`H‰XL‰p H‹D$dH+%(u8HƒÄ[]A\A]A^ÃfD1ÿºH�5búèµxÿÿH‰îH‰Ç1ÀèÈêéEþÿÿèÞxÿÿff.„óúAWAVI‰ÖAUI‰ÍATUH‰ý¿hS‰óHƒìL‹=7ÆÇ]ãèýÿÿfïÀHÇI‰ÄÇ@I‹GL‰ ·çM‰gf%èAD$HAD$XIÇD$ M‰t$PfA‰D$XAD$(AD$8ƒû‡ºH�>HcšHÐ>ÿà€A€L$YI‰l$I‰l$H‹ÁâL‰ I�D$HH‰²âHƒÄL‰à[]A\A]A^A_ÄfA�L$XI‰l$I‰l$ë¼@A€L$XI‰l$I‰l$ë¦fDI‰l$I‰l$ë”@I‰l$I‰l$M…ít€}/uCfA�L$Xénÿÿÿ€}:txI‰l$1ÒH‰îH�=a(1Àè€xÿÿfA�L$XI‰D$é>ÿÿÿfDL‰ïè@zÿÿH‰ÃI9ÅrëfDHƒëI9ÝtG€{ÿ/tñI9Ýtÿàf.„H‹=9Þ‰îè¢ÿÿÿf�H‹H…ÛuËöâá…{H‹D$(dH+%(…ÖHƒÄ8[]A\A]A^A_Ä@öÅu&H‹{H…ÿtH�5ê"H‰<$èñxÿÿH‹<$H…À„H‹{0‰îè)ÿÿÿH‹H…Û…PÿÿÿëƒH‹CH‰µÜH‹H…Û…4ÿÿÿédÿÿÿ@H‹{‰îèíþÿÿH‹H…Û…ÿÿÿéDÿÿÿ@¶CY¨„ÄH‹mÜH‰SP‰Âƒâ…í…ÔH�t$H‹ ÝHÇD$H‰t$„Ò…ŠHƒ{(„°¨u{H‰ßH‰ $è§°H‹ $…Àu ÇyÞHƒ|$tUH9 ¾Ü„L‹CºH�5ˆó1ÿL‰$èµqÿÿH‹4$H‰Ç1ÀèÇãH‹p¿H‹L$H‹PH‰ H‹T$H‰PH9‰Û…[þÿÿHÇxÛH‹H…Û…þÿÿéGþÿÿ€H‹ÉÞA‰íL‹5OÛAƒÍL‹`0ë DI‰ÆI‰ÌH‹{D‰îè¦ýÿÿH‹—ÞH‹H0H‹ÛL9áu×L9ð„æýÿÿHƒ=þÚuÄH‹H…Û…£ýÿÿéÓýÿÿH‹{ƒ„ºýÿÿH�#×Ç!ÚHÇNÚHÇKÚH‰LÚè—ÿH‹H…Û…Nýÿÿé~ýÿÿfDH‹D$(dH+%(…[HƒÄ8H�=®!1À[]A\A]A^A_é€â@öÅtHƒ=ZÚ…þÿÿ„Ò„ÎH‹S(H…Ò„¯þÿÿ¶JHƒáƒù„ùƒù…–þÿÿöBD@„Œþÿÿ€{X‰‚þÿÿH‹Bƒx…tþÿÿH‹‚ö€Œ @„`þÿÿ¶CYH�t$HÇD$H‰t$H‹ ²ÚƒàíƒÈˆCYéµýÿÿ@H‹D$H‹H‰H‹D$H‰éþÿÿ¶óÜ„Àt¾ðè=pÿÿH‹<$H…À…ÌüÿÿèëøÿÿéÂüÿÿH�t$H‹ RÚHÇD$H‰t$éEýÿÿH‰ßH‰t$H‰ $è&MöCYH‹ $H‹t$…Nýÿÿé+ýÿÿ¨„>ÿÿÿé™ýÿÿè\oÿÿff.„�óúAUATUSHƒìH…ÿ„AL‹-ÊÙI‰ü‰õM…ít-L‰ëDH‹;L‰æèµrÿÿ…À„ÍH‹[H…ÛuäM‹mM…íuÓ…íu5H�5ðL‰çèˆrÿÿ…Àt"ºH�5Øð1ÿè‘nÿÿL‰â1öH‰Ç1Àè¢à¿Xè(óÿÿL‰çI‰Åè�pÿÿIÇEI‰EH‹¼IÇEIÇEIÇE IÇE(ÿÿÿÿIÇE0IÇE8IÇE@IÇEHAÇEPL‰(I�EH‰Ä»ëf�…íuHƒÄL‰è[]A\A]ÃfDºH�5äï1ÿèÕmÿÿL‰â1öH‰Ç1ÀèæßHƒÄL‰è[]A\A]ÃE1íë·óúAWAVI‰þAUI‰ÕATI‰ôUH‰ÍSHƒì‹^(H‹(Û‰ßH‰D$èœH‹}0H�5’A‰ÇèIqÿÿE…ÿ…0…À„(M…ít$H‹D$L‰âL‰îH�=‘ÚH‹@ÿ�ø…À„M‹|$pM…ÿ„«¶rÚ¨„óH�[ÓI9ׄãL‹m8M9ï„Ö¨ tM…í…8„‰Ø%=„N¶Ú‰Ú�ãûýñÿ€æýƒà<DÚ‹…”ƒø„E‰ÚƒâþƒøDÚM…í„‘A¶U,‰ØƒÈ÷A#E(ö„‰Ú‰Áƒâ÷1Ñ�á€u!÷À„EA‹Œ$ÌA9�Ì„0%ÿÿþ�ã÷ÿþ ØA‰E(éf�Iƒ|$ptöyÙ u/HƒÄ[]A\A]A^A_ÃH�YÒI‰D$pHƒÄ[]A\A]A^A_ÃDM‹¬$øºH�5Tî1ÿèÕkÿÿHƒÄL‰â1ö[H‰Ç]L‰éA\1ÀA]A^A_éÕÝDI‹Œ$øºH�5„î1ÿH‰L$è�kÿÿH‹L$M‰éM‰øH‰ÇL‰â1ö1Àè–ÝL‹m8é�þÿÿDƒÊ ØL�¬ØL‰éAˆU,H‹îØL‰æA‰E(I‹¼$øH‹Bÿ�H÷ÀtA‹”$ÌH‹E8‰�Ì�ã…ÏH‹E8A‹T$x;Pxv‰Px‹8ÕI‰D$p…Òu2H‹� L‰  IÇ„$I‰”$ H…Ò„ÜL‰¢¿ècïÿÿÇ@HÇI‹VH‰I‰FL‰`HƒÄ[]A\A]A^A_À‰Ø�ãûýóÿ%ûýñÿö½× EØé°ýÿÿ@H‹ù×H‹@ƒxt?ƒãü€Ïéªýÿÿ@I‹¼$øèsoÿÿƒø%…ÿÿÿÇ…ˆ€é ÿÿÿ‰ÓéÔýÿÿ��ãýþÿÿ€Ïéhýÿÿf�‰ÞH‰ïèFäÿÿL‹m8é\ýÿÿDL‰ éÿÿÿff.„�óúAUI‰ÕATI‰üUH‰õH‹vH…ötèàÿÿÿH‹uI�|$0L‰é1ÒèíûÿÿH‹uH…öt L‰êL‰çè¹ÿÿÿH‰ï]A\A]é¬fÿÿff.„�óúAWAVAUM‰ÅATI‰ôL‰ÎUH‰ýSH‰ËHƒì8dH‹%(H‰D$(1ÀL‹|$pH…ÉtFH‹·H�L$H�=bÕHÇD$H‰L$H9øƒÃH�xH‰=ضH‹=ɶH‰8H‰ ¿¶¶8Öƒà<„ýöE(„ój1ÉL‰çE1ÉRE1À1ÒL‹5¤ÓèÇzM…ÿY^I‰ÄH�@H‰îLDøL‰á1ÒL‰ÿèçúÿÿH…Û„.öE(„H‹C@H�5¹H…ÀtH‹0H‹KHH…ÉtH‹ H‹“€1ÿèç¥H‹(¶H�9ÔH9ІýH�PøH‹@øH‰ ¶H‰úµI‹D$8H…À„ I‹u I‹U1ÿH…ö@”ÇH…Ò„H‹ ›ÕH‹H…Ò„¯L‹AAƒx„pH9ÐtHL‹B L9Àt?L‹H L‹PM…É„AM‰QM…Ò„$M‰J L‹B L‰@ H‰PH‰B M…À„÷I‰@HƒÀHƒ|$I‰EtsL‹T$…ÿ…nH‹I‰H‹D$H‰I‹](H‹-µH‹|$H‹PH9:„kI‹H�SàM‰U IÇH‰P(H‹H‰P H…ÒtH‰B(H‰HƒÀ Iƒ>I‰E(„@H‹D$(dH+%(…�HƒÄ8L‰à[]A\A]A^A_Ãf.„¿(‰T$è‚ëÿÿH� ûÖ‹T$ÇH‰Æ‹8׃øƒÐÿH‹ÁHÇFHÇF H‰F‹TÖÇF‰Fé²ýÿÿD1É1ÒH�5µ1ÿèþ£éþÿÿf„1É1ÒH�5•1ÿèÞ£é9ÿÿÿf„H‹P L‹@H…Ò„¿L‰BM…À„ÚI‰P H‹‘˜HÇ@H…Ò„¦H‰P H‰BH‰�˜é_þÿÿf�H9ÉÐtWH‹S8H…ÒtH9ÐtIHƒÂI‰UéÊýÿÿ@H‹K(H…Ét/€‹‘Œ…ÒxH‹Q8H…Òt Hƒºøu½H‹I(H…ÉuÚf�H‹ )ÓH�‘�I‰Ué~ýÿÿf„L‹…øM‹@Aƒx…zýÿÿL‹…èE‹@Aƒø„%L‹ŠèAƒy…SýÿÿöB(„IýÿÿAƒø„×Hƒ=WÖ„�L‹BL� VËM9Èu)ë,€M‹�èAƒzu Aö@(IEÐM‹@M9ÈtM…ÀuÛAºI‰Øf.„M‰ÁM‹@ E…Ò„xI9Q8„vM…ÀuáI‰Ùë@I9Q8„^M‹I(M…É„œE…ÒuäM‹A I9P8uäL‰Ë¿E1ÒH;B „ÊüÿÿL‹@ L‹HM…À„~M‰HM…É„eM‰A H…ÒtrE…Ò„}üÿÿL‹BH‰P L‰@H‰BM…À„þÿÿI‰@ éxüÿÿH‰ßHƒÃ èÜšÿÿH‹I‰H‹T$H‰I‰](é�üÿÿDL‰PL‹T$é‡üÿÿf�L‰5±Îé´üÿÿH‹‘�HÇ@ H…Ò„BH‰PH‰B @H‰��éüÿÿ@L‰‰˜éØûÿÿ@L‰‘�é·ûÿÿ@L‰��é9ýÿÿ@HÇ@ H‰��éNýÿÿ@H‰‘˜é%ýÿÿ@M…À„ŽþÿÿI9P8…eþÿÿé®þÿÿöE(„ÑýÿÿL‹��L� XÉHÇ=ÔM…ÀA•ÃM9ÈA•ÂE ÓDˆ\$tcH‰T$E1ÛE1ÒE1ÿë$DM…Ò…+M‹@M…À„§M9È„žL9ÀtÜI‹�èƒzuÏAö@(tÈM…Ò„å‹UxA9PxMCøë»H9ЄæúÿÿH;B „ÜúÿÿL‹@ L‹HM…À„¨M‰HM…É„�M‰A é˜úÿÿöE(„ýÿÿé#ÿÿÿf„L‰Ë¿AºH;B…»ýÿÿé€úÿÿH‹T$E„Ût‡L‰BÓM…Ò„wÿÿÿM…ÿ…šL‰ÒE1ÒéýÿÿE…Ò„rýÿÿë²L‰�˜é“ýÿÿL‰‰�ézýÿÿL‰�˜éúÿÿL‰‰�éPÿÿÿD¶\$M‰Âé ÿÿÿL‰úE„ÛuM…ÿ…¸üÿÿAºé#ýÿÿL‰¹ÒL‰ÒM…ÿt„ë"èªaÿÿHÇ@H‰�˜é¶ýÿÿM…Ò„ËþÿÿL‰úë´è#sèþtff.„óúAWAVAUATM‰ÄUH‰õL‰ÎSH‰ûH‰×HƒìHH‰T$H‰L$L‰L$dH‹%(H‰D$81Àè{Ðÿÿ…Àt'H‹D$8dH+%(…vHƒÄH[]A\A]A^A_Ã@‹K…ÉuH…í„‹U…Ò„õL‹{0M…ÿ…¸éãH‹€ØH…À„¼ÇD$L‹0I‹GH‹�øH‹‚ØH…À„êÇ$L‹(L‰îL‰÷èu_ÿÿ…ÀY…ñ‹L$‹4$‰È ðt.…É„¶M‹t$…ö…©L‰îL‰÷è>_ÿÿ…À"…º@H…ít‹}…ÿt ƒÿ…‹M‹?M…ÿt0Aƒuñ‹C…ÀtÒI‹D$(H…À…4ÿÿÿÇD$M‹t$é=ÿÿÿf�H‹D$8dH+%(…?H‹L$H‹T$H�{0H‹t$HƒÄH[]A\A]A^A_éÆñÿÿfDÇ$L‹*éÿÿÿ�I‹WH‹t$èâœÿÿ…À‰bÿÿÿH‹L$H‹T$H�|$ HÇD$ H‹t$H‰|$(èsñÿÿL‹d$ M…ä„.þÿÿIƒ<$t)ºH�5f1ÿèû^ÿÿº/ H�5H‰Ç1ÀèÑH‹C0H�k0I9ÇtXL�-5H�îë„H‹mH‹EL9øt3H…ÀuîºL‰î1ÿèŸ^ÿÿº4 H‰ÞH‰Ç1Àè­ÐH‹mH‹EL9øuÍM‰<$L‰eéŒýÿÿI‹GH‹€øL‹(éDþÿÿè˜^ÿÿ„óúU1ÀH‰ý¿SHƒì 5fÇ•À‰]ÇèØâÿÿH‰ïH‰ÃH‹»ÉH‰H‰±Éè<`ÿÿHƒ=¤ËH‰CtHƒÄH‰Ç[]é`ÛÿÿHƒÄ[]Ãf„óúAWAVA‰þ¿<AUATUSH‰óH�ìdH‹%(H‰„$1ÀHÇD$Hè_ÿÿ¿àH‰D$`èp_ÿÿ¿àH‰D$Xèa_ÿÿ1ɺaE1ÀH‰D$PH‹D$`E1ÒL� ³r¿Æ-I��€Ðÿÿ@„ÒtL‹\$`Hc÷Aˆ3‹p�WD�^ÿAƒûv@‰×H…Ét&ƒx8tcfoIcÒAƒÂHÁâHT$XfoHJHƒÀ@I9Átc¶P H‹ë¡�L‹\$`HcÒAÆ:�Wƒþu«H‹t$`HcÒƒÇÆ:ëœf.„foIcÐHƒÀ@AƒÀHÁâHT$PfoXÐZI9Áu�H‹T$`HcÇÆIcÂHÁàHD$XHÇIcÀHÁàHD$PHÇH‹îÇH‹€ H…ÀtH�L$XH�t$`D‰ÒL�L$PÿÐAƒþvhH‹sH�S¿L�s L� íœD¶ƒè-u ¶FƒèGu¶F�O…ÀuA9Îv‰ÈH‹4öAöAuL‰ûA9Ά‰ÈH‹4ÉÏë¸ÇD$ A¼ÿÿÿÿL�l$DÇD$$HÇD$ÇD$@‹b¿D9àt-H‹ÇH‹’˜H…Ò„†H‰ÞD‰÷ÿÒ…ÀuÒD‹%3¿H‹L$XH‹T$`M‰èH‰ÞÇ.ÄD‰÷è6^ÿÿ‰Åƒý?tOH‹ÈÆH‹€¨H…Àt‰ïÿÐ…Àu„ƒýÿ„Â�ý‡„H� €!Hc©HÈ>ÿàfDA‰Äë‹H‹L$PM‰èH‰ÞD‰÷H�œ0D‰%œ¾èO[ÿÿ‰ÅëŒA�FþH‰ÕL�= L�dÃëfDHƒÅI9ì„ÓþÿÿH‹}€?-uê€luä€tÞè¹ZÿÿH�xè`\ÿÿL‰ùHƒÊÿ¾I‰ÅH‹EL‰ïL�@1Àè¿eÿÿL‰më©L‹%2ÇM…ät3A€<$…ÙºH�5&ô1ÿè/ZÿÿH‰Ç1ÀèEÌHÇúÆH‹£ÈH…Àt €8„…‹L$D‹d$H�-åÅH�†ô…ÉtOf.„ºH‰Þ1ÿèÑYÿÿH‰Ç1ÀèçËH‹˜§H9è†1H�PøH‹@øH‰€§H‰q§Aƒìu»H‹D$H‰ÅH…ÀuëD@Æ€}…mH�h¾:H‰ïèZÿÿH…ÀuÝ€}t ¾H‰ïèâ(H‹|$èxVÿÿ·“Æf©€uf%þ€Ìf‰Æ¶yƨu ƒàùƒÈˆiƶ_ÆL‹D$H‰Ðƒà<„ûM…À„;I‹8öÂ…UH‹5ÇH…ö„>H‰øDH‰ÁH‹H…ÀuõH‹H‰H‰>ƒ|$ u€ ÿÅ€ ýŃâ€útNHƒ=?Çt1ÿºH�5_óè‚XÿÿH‰Ç1Àè˜ÊHƒ= Çt1ÿºH�5hóè[XÿÿH‰Ç1ÀèqÊ‹›Å‰Â�â€�ú€„yH‹„$dH+%(…K/H�Ä[]A\A]A^A_þH‰ïH‰D$èŒ'H‹D$éwþÿÿIcÄH�-ølL‹<Ãëf�H� ©=H�EÀH9é„$H‰Åƒ}uãH‹uH…ötÚ‹}8Lÿè�[ÿÿ…Àu˺H�5 1ÿè˜WÿÿL‰þH‰Ç1Àè«É1ÿºH�5ýÚèxWÿÿH‰Ç1ÀèŽÉéÉûÿÿH�t$pL‰çè¬[ÿÿ…Àˆ:ýÿÿ‹„$ˆ%ð=@…#ýÿÿ1ÀH�|$hL‰á¾L‹¥H� è«Zÿÿ…Àˆâ-H‹D$hH‰çÃéèüÿÿ€=cňÜM…Àt7I‹8H‹H…ÛuëH‰ÃèTÿÿH‹H‰ßH…ÀuíL‹D$HL‰ÇèðSÿÿ¶ Ä‹D$ ƒø„÷ýÿÿƒø„õýÿÿ‰Ðƒà<…÷ýÿÿ‹D$$ƒø„ƒø…/þÿÿH¸H ¿ÃéþÿÿH‹3º€%´ÃýH‰ÝÄé°úÿÿ€ ™Ãé¤úÿÿD9%º„#¶€Ã¨t7ƒàH�-rº<H�^H�5íHEè1ÿèVÿÿH‰ÇH‰î1Àèȶ>À%·ÄßÇyÂÇcƒàüdžƒȈ ÃéúÿÿH‹�¹€8uH‹5ÄH…Òt €:…ÍH‰ Äéëùÿÿ€ Ù ¶Í¨t7ƒàH�-¿º<H�«H�5RìHEè1ÿèOUÿÿH‰ÇH‰î1ÀèbǶ‹Â€%ÄßÇÆÁǰÁƒàüÇÓÁƒÈˆZÂéeùÿÿH‹=θH�t$pèDYÿÿ…À‰¦H‹}ÃL‹=®¸H‰D$8L‰ÿH…À„¤èøTÿÿL‹D$8D‰d$(H‰Å¾�ÁL‰l$0M‰ÅˆD$A‰ÄDH‰êL‰îL‰ÿèbRÿÿ…ÀuA¶D-„À„ë:D$„ðD‰æL‰ïèUÿÿH…À„3L�hë¼H‹=%¸¾èûo馸ÿÿƒ|$„]H‹ ¢H�ÀH9ІŒ+H�PøH‹@øƒl$H‰è¡H‰Ù¡édøÿÿè?gƒD$éUøÿÿ€ DÁ@éIøÿÿH‹²·H‰ËÀé6øÿÿ€ 'Á é*øÿÿ€ ÁéøÿÿÇÔÀéøÿÿÇÅÀéøÿÿÇÂéñ÷ÿÿH‹-Z·H�5WH‰ïèûPÿÿ…À„rH�5FH‰ïèäPÿÿ…À…åÇþ¿é­÷ÿÿL‹=·¾L‰ÿèéôÿÿ¿èß×ÿÿL‰ÿH‰ÅH‹ú¾H‰EèY]ÿÿH‰EH‰-æ¾éi÷ÿÿÇ{ÁéZ÷ÿÿ€ HÀ€éN÷ÿÿH‹=¿ÁH…ÿ„Eóo/)-£ÁèþOÿÿé)÷ÿÿ¿èŸTÿÿfo%‡Á H‰…Áé÷ÿÿH‹5q¶H�=ê¿è%ÆéðöÿÿÇþÀéáöÿÿH‹J¶H‰3ÁéÎöÿÿHƒ=¶ÃH‹-/¶„f€}-u'€}-„H�}º H�5*èPÿÿ…À„Œöÿÿ¿èTÿÿH‹cÃH‰hHÇH‰QÃH‰H‹OÃHƒ@ éUöÿÿ¿HL‹=¹µH‹-ª½è½Sÿÿ¹¾I‰À1ÀL‰ÇL‰D$ó«M‰xL‰ÿè¸UÿÿL‹D$I‰@H…À„àH…í„uI‹@ë€H‹mH…í„[H;Euíº1ÿL‰D$H�5èeQÿÿL‰þH‰Ç1ÀèxÃH‹|$è~Nÿÿé©õÿÿ€ –¾€Hƒ=B¾…”õÿÿHÇ1¾ýé„õÿÿ€ t¾ éxõÿÿ¶e¾ƒàçƒÈˆY¾é`õÿÿ€%L¾÷éTõÿÿ€ @¾éHõÿÿH‹-±´H�5CH‰ïè²Tÿÿ…À„çH�57H‰ïè›Tÿÿ…À…y·þ½f%ø€Ìf‰ð½éùôÿÿƒ=*½„þ¶Õ½ƒà<„¶ýƒàüƒÈˆ·½éÂôÿÿÇľé³ôÿÿǵ¾é¤ôÿÿ€%޽÷é˜ôÿÿ€ ‚½éŒôÿÿÇâ¼Ç¨¼ésôÿÿÇÕ¼édôÿÿ¿èJ¯H‹=óÇ9¼Ç+¼Ç‰�þÿÿÿH…ÿ„,ôÿÿ1ÒH�t$hè`XÿÿH‰ÅH‹D$h€8…œ1ÀƒíŸÀ‰é»éüóÿÿH‹=5¾L‹=^³H…ÿ„Øè°OÿÿL‰ÿH‰Åè¥OÿÿH�|èKQÿÿL‹¾H� \D¾ 1¼VH‰ÇH‰ÅHƒÊÿÿ5³¾1Àè˜ZÿÿH‹=ѽè\Lÿÿ_AXH‰-½é}óÿÿ‹g¼L‹=à²%€=„H�5ÃL‰ÿè±VÿÿH‰ÅH…À„&¿(è»PÿÿH‹5LœºH‰ÇH‰E¼è Xÿÿ…À„¸¿dèŽPÿÿH‰ïH‰D$è‘YÿÿHÇD$(dA‰ÀAƒøÿtCA¶ÀH�5T�öF@„zf.„H‰ïèXYÿÿH�=1�¶ÐöW@uèA‰Àƒøÿ…L÷’»€……H‹|$èbKÿÿ‹|»H‰ï%ÿþÿ ‰i»èÔMÿÿéoòÿÿÇm»é`òÿÿH‹=ɱèô*éOòÿÿ€ =»éCòÿÿH‹5¬±H�=Sè0Óÿÿé+òÿÿH‹5”±H�=+èÓÿÿéòÿÿH‹5|±H�=èÓÿÿéûñÿÿH‹5d±H�=hèèÒÿÿéãñÿÿH‹5L±H�=ÖgèÐÒÿÿéËñÿÿH‹54±H�=³gè¸Òÿÿé³ñÿÿÇD$$é¦ñÿÿǺé—ñÿÿH‹-±H�5LH‰ïèQÿÿ…À„'H�5êsH‰ïèêPÿÿ…À…XÇX¾éSñÿÿH‹-¼°H…í„'H�5'H‰ïè´Pÿÿ…À„H�5H‰ïè�Pÿÿ…À…ÆÇg¹éñÿÿƒ=7¹„-¶â¹ƒà<„·Ò¹€ ɹf©€u f%þ €f‰¸¹¶²¹¨…·ðÿÿƒàùƒÈˆž¹é¦ðÿÿÇð¸é—ðÿÿÇÕ¸éˆðÿÿÇθéyðÿÿÇǸéjðÿÿǸ¸é[ðÿÿÇ‘¸éLðÿÿdž¸é=ðÿÿH‹=¦¯H‹-/¸1öèxH�D$HH‰-¸H‰õ·Ç›»è†zéðÿÿH‹=j¯èÅMÿÿ1É1Ò1ÿH‰ÆèUH‹L$HH‰ÅH…É„îfDH‰ÂH‹H…ÀuõH‹H‰H‰)é·ïÿÿÇD$ éªïÿÿL�=Ðþ1ÉH�5Ëþ1ÿL‰úè°T1ÉL‰úH�5ÈþH‰ÇèœTH‹ E¹H‰ÅH…É„zf„H‰ÂH‹H…ÀuõH‹H‰H‰)ƒ|$ „AïÿÿÇD$ é4ïÿÿL�=Zþ1ÉH�5vþ1ÿL‰úè:T1ÉL‰úH�5nþH‰Çè&TH‹ ϸH‰ÅH…É„-H‰ÂH‹H…ÀuõH‹H‰H‰)ƒ|$ „ÑîÿÿÇD$ éÄîÿÿH‹=-®1öH‹-´¶èÿH�x¸H‰-¡¶Ç'ºH‰p¶è yƒ|$ „€îÿÿÇD$ ésîÿÿH‹Ü­H‰½¸é`îÿÿH‹-Y¶H‹=­1öè›H‰-D¶Çʹèµxé0îÿÿ€ !·é$îÿÿH‹=�­1Ò1öèTRÿÿ‰®·é îÿÿ¶ô¶ƒàùƒÈˆè¶éñíÿÿ€ ß¶éåíÿÿ€ ζ éÙíÿÿ€%ȶþéÍíÿÿ€ »¶@éÁíÿÿ¶­¶ƒàùƒÈˆ¡¶é©íÿÿ¶•¶ƒàùƒÈˆ‰¶é‘íÿÿH‹=Ú¬èŧ1ÿèžRÿÿL‹=ç¬M…ÿ„e H‹-_ºH…ítH‹}L‰þèÖLÿÿ…À„NíÿÿH‹mH…íuã¿è»JÿÿL‰ÿH‰ÅèKÿÿH‰EH‹ºH‰-ºH‰EéíÿÿH‹~¬¾=H‰×H‰T$èLIÿÿH‹T$H…ÀH‰Å„N€:L�}t€}u1ÿºH�56áèiHÿÿH‰Ç1ÀèºL‰úH+%¬HcÊH‰T$(H‰ÏH‰L$è JÿÿH‹T$(H‹5¬H‰ÇH‰ÅƒêHcÒèÃLÿÿH‹L$H�t$hL‰ÿºÆD ÿèWEÿÿH‰D$H‹D$h€8…Ü ¿(èšÌÿÿH�¸¿(ÇI‰Ç‹O¸ƒøƒÐÿH‹ÂIÇG AÇGI‰G‹k·A‰GH‹D$H‹k•I‰GH‰T$è=ÌÿÿH‹T$Ç@HÇH‹JH‰H‰BH‰hL‰xHÇ@ éºëÿÿH‹#«H‰,µé§ëÿÿH‹«H‰µé”ëÿÿ·´f%þ€Ìf‰q´ézëÿÿÆ{µénëÿÿÆoµébëÿÿH‹=˪1Ò1öè’OÿÿH…À„Ç H‰ê³é=ëÿÿ€ &´€é1ëÿÿ€%!´ïé%ëÿÿ€ ´éëÿÿ€%´¿é ëÿÿ€ ö³@éëÿÿÇï´éòêÿÿHƒ=´H‹-Sª„pH‹=´¹ºH‰îèKÿÿH…À…»êÿÿ1ÿºH�5MßèHFÿÿH‰Ç1Àè^¸é™êÿÿ€%µé�êÿÿ€ ö´€é�êÿÿ€%ê´¿éuêÿÿ€ Þ´@éiêÿÿ€ Ó´é]êÿÿH‹=Æ©H…ÿ„41Ò1öè4CÿÿH‰ݲé8êÿÿH‹=¡©H…ÿ„1Ò1öè_Nÿÿ‰±²éêÿÿH‹}©H‰N´éêÿÿH‹=J´H…ÿ„G1ÒHƒ?H‰øtfDHƒÀƒÂHƒ8uó�jHcíHÁåH‰îèqFÿÿH‹*©H‰´H‰T(ðHÇD(øé éÿÿH‹ ©ÇǰH‰аéƒéÿÿ€ o²@éwéÿÿH‹à¨Ç¾°H‰ß’éZéÿÿ€%óßÇ©±Ço±é:éÿÿH‹=£¨1öè|`é'éÿÿÇ ³ééÿÿH‹=�¨1öèZÇ�´è{séöèÿÿH‹-_’¿L‹=S¨è.ÉÿÿÇ@ HÇH‹UH‰H‰EL‰xé¼èÿÿH‹-%¨H�5‰H‰ïè&Hÿÿ…À„1H�5ˆõH‰ïèHÿÿ…ÀtH�5¹H‰ïèüGÿÿ…À…€ ݲ éhèÿÿH‹-ѧºH�5Æ÷H‰ïè½Aÿÿ…Àu HƒÅH‰-®§H‹|$èAÿÿH‹=�§èøEÿÿH‰D$éèÿÿ¶ ±ƒàùƒÈˆý°éèÿÿ¿èì¢Çâ¯éíçÿÿH‹æ¯H‹=O§¾H‰˯èÇT³è?rHǬ¯é¯çÿÿ€%Ÿ°ýé£çÿÿ€ “°é—çÿÿf� „°€é‰çÿÿ·x°f%þ€Ìf‰j°éoçÿÿ€%^°Ïécçÿÿ¶R°ƒàσȈF°éKçÿÿ¶:°ƒàÏƒÈ ˆ.°é3çÿÿ€%"°¿é'çÿÿ‹°%ÿþÿ€Ì€‰°éçÿÿH‹=w¦1Ò1öè>KÿÿH…À¶ë¯•ÂÁâƒà÷ ЈÚ¯éÞæÿÿ€%G±ßÇ-¯Çó®龿ÿÿH�H‰0¯髿ÿÿH‹=¦¾èÊ长ÿÿH‹=þ¥1ÒH�t$hèÂJÿÿ‰Ô�H‹D$h€8„næÿÿH‹-×¥1ÿºH�5¤óèôAÿÿH‰ÇH‰î1Àè´éBæÿÿÇ,°é3æÿÿÇM°é$æÿÿÇ>°éæÿÿH‹=~¥èÙCÿÿH‰°éýåÿÿ€ î®éñåÿÿH‹=Z¥Ç¨®H…ÿ„×åÿÿè’>ÿÿ‰Å…À„� ‰ïè±@ÿÿé¼åÿÿ‹º²H‹=¥H�5êò�P‰£²蚯ÿÿÇ ±è pé†åÿÿ€ p®Çq¯épåÿÿ€ Ù¯ édåÿÿH‹-ͤH�5eüH‰ïèÎDÿÿ…À„FåÿÿH�5^òH‰ïè·Dÿÿ…À„/åÿÿH�5UòH‰ïè Dÿÿ…À„åÿÿH�5IòH‰ïè‰Dÿÿ…À„åÿÿ1ÿºH�5sÄèŽ@ÿÿH‰îH‰Ç1À衲éÜäÿÿHƒ=ü­H‹-=¤„ H‹=è­¹ºH‰îèþDÿÿH…À…¥äÿÿ1ÿºH�57Ùè2@ÿÿH‰Ç1ÀèH²éƒäÿÿ€ n­éwäÿÿ1ÿè`ŸÇV¬éaäÿÿH‹=Ê£¾è áÿÿéKäÿÿƒL¬é?äÿÿ� %­€é0äÿÿÇ>¬é!äÿÿÇ®éäÿÿÇ®éäÿÿ€%ï¬ßé÷ãÿÿǵ¬éèãÿÿH‹Q£H‰Z¬éÕãÿÿ€%¾¬ïéÉãÿÿÇǬéºãÿÿH‹#£H‰ «é§ãÿÿ€%®þé›ãÿÿ€%®ßé�ãÿÿH‹|$8D‹d$(L‹l$0èK?ÿÿH�|èñ@ÿÿHƒìÿ5×¢D¾ Û«L‹�­HÇÂÿÿÿÿH‰ÇH‰ÅH� ãñ¾1Àè8JÿÿH‹=i­èü;ÿÿXZH‰-[­éãÿÿ%ÿþÿ€Ì€‰¬¶û«¨…jæÿÿƒÈˆê«é\æÿÿ‹D$$ D$ „˜çÿÿé˜åÿÿºH�5ÜØ1ÿèm>ÿÿH‰Ç1À胰HÇè¬éNäÿÿÇD$$é¦âÿÿ‹„$ˆ%ð=@„CéÿÿH‹=ø¡¾èÎYéyâÿÿÆz¬éçÿÿ€%Ö¬ßéaâÿÿÇ£ªéRâÿÿÇH¯éCâÿÿ·.«f%øf €f‰«é(âÿÿǶª€éâÿÿHÇ®ªé âÿÿÇgªéúáÿÿL‰ëéÒäÿÿ1ÿºH�5±ðè{=ÿÿH‰Ç1À葯éÌáÿÿ1ÿºH�5rðèY=ÿÿH‰Ç1Àèo¯éªáÿÿ¿è ?ÿÿH‹ ¡H‰â«H‰HÇ@é‚áÿÿ1ÿºH�5tÖè=ÿÿH‰Ç1Àè%¯é`áÿÿ1ÿºH�5JÔèí<ÿÿH‰Ç1Àè¯é&îÿÿ1ÿºH�5øÕèË<ÿÿH‰Ç1Àèá®é�èÿÿÇn©é áÿÿL‰ÿèÕ>ÿÿH‰>«éùàÿÿºH�5Öèˆ<ÿÿH‰Ç1Àèž®éÙàÿÿH‹¢ªƒÊˆ¹©H…À„¹ãÿÿH‹8ë H‹èƒ9ÿÿH‰ßH…ÿuðH‹=tªèo9ÿÿ¶ˆ©HÇ]ªé�ãÿÿH‹é‰L‰j­L‰Û‰L‰IƒÀL‰M­é`àÿÿE1ÿD‰d$0D‰ÀL‹d$(H‰\$8M‡ýH‰ëH‹l$ë#fDH‰ßèÀFÿÿH�5™|¶ÈöN@u&ƒøÿt!BˆD-IƒÅM9ìwÕMäH‰ïL‰æè¯<ÿÿH‰ÅëÂH‰îM‡ï¹ºBÆ>H‹=þ¨L‰d$(D‹d$0H‰l$H‰ÝH‹\$8‰D$0è@ÿÿD‹D$0H…À…»ìÿÿºH�5ÄÒ1ÿè=;ÿÿH‰Ç1ÀèS­D‹D$0é”ìÿÿèT=ÿÿH‰µ©éxßÿÿ1ÿºH�5²¼è;ÿÿL‰þH‰Ç1Àè­éÿòÿÿ1ÿºH�5¬íèà:ÿÿ1ÿºH�5¥íH‰›¦èÆ:ÿÿH‰Ç1Àèܬéßÿÿ1ÿºH�5YÒè¤:ÿÿH‰Ç1À躬éYìÿÿD‹d$(L‹l$0éæÞÿÿD‹d$(L‹l$0é×ÞÿÿH�5PVH‰ïèè7ÿÿ…À„§H�58îH‰ïèÑ7ÿÿ…À…öÇë¦éšÞÿÿH�5²ìH‰ïè >ÿÿ…À„yH�5²ìH‰ïèô=ÿÿ…À…”·W§f%ø€Ìf‰I§éRÞÿÿ¿è8™1ÿèÁAÿÿL‹%Š¥ºH�5”ë1ÿèÇ9ÿÿ¿L�5»H‰ÆL‰â1ÀE1äè›@ÿÿºH�5‚ë1ÿè˜9ÿÿ¿H‰Æ1Àèy@ÿÿë€AƒÄIƒÆ@A�ü¾„AI‹H‰D$H…ÀtÞH�5£b1ÀE‰åE‰ç¿»H�-Uíè)@ÿÿ1Òé½H�ÈvH‰î¿1Àè @ÿÿ¸IÁçÃH�ÚºLøL‹x(M…ÿtVƒxt ¿ ƒÃèV6ÿÿºL‰þ1ÿè×8ÿÿH�5Æa¿H‰Â1Àè±?ÿÿºL‰þ1ÿè²8ÿÿH‰ÇèÚ8ÿÿºÃAƒÅA�ý¾„êE‰ïH�5XL‰øHÁàHƒ|0…ÍL‰øH� ;HÁàHȾH „Ét¹ƒx8t³…Ò…ÿÿÿH�iãH‰î¿1Àè(?ÿÿ¸éÿÿÿH‹=—¤€?„6þÿÿèY6ÿÿé,þÿÿIcÄ1ÿºH‹,ÃH�5×Îèú7ÿÿH‰ÇH‰î1Àè ªé±áÿÿ1ÿºH�5ÏèÕ7ÿÿH‰Ç1Àèë©éÆèÿÿL‰D$(èÌ4ÿÿºH�5`Î1ÿH‰D$è¤7ÿÿH‹T$L‰þH‰Ç1À販L‹D$(éâåÿÿ¾(¿èYBÿÿH�5ÒH‰(H‰p H‰D$HéÁÛÿÿ¿(è79ÿÿ¹=ºH‹5¾„H‰ÇH‰Ĥèg:ÿÿ…À…Èöÿÿ1ÿºH�5yÎè7ÿÿH‰Ç1Àè2©é¦öÿÿ¿(èã8ÿÿ¹=ºH‹5j„H‰ÇH‰x¤è:ÿÿ…À…^ðÿÿ1ÿºH�5%ÎèÈ6ÿÿH‰Ç1ÀèÞ¨é<ðÿÿÇ[£é Ûÿÿ·õ£f%øf €f‰æ£éïÚÿÿ¾(¿è`AÿÿH�5ÙH‰(H‰p H‰›¤ézëÿÿ¾(¿è7AÿÿH�5°H‰(H‰p H‰r¤éÁëÿÿºH�5ÁÎ1ÿè*6ÿÿH‰Ç1Àè@¨H‹é™é‰íÿÿ1ÿºH�5¾¹è6ÿÿH‰îH‰Ç1Àè¨éOÚÿÿ1ÿºH�5 ÎèÜ5ÿÿH‰îH‰Ç1Àèï§é*Úÿÿ1ÿºH�5¤Íè·5ÿÿH‰Ç1ÀèͧéÚÿÿD‰d$ E‰çL‰t$é½fDM‰ð¿1À½H�sH�5‚éè^<ÿÿL‰÷DíIÁçè�5ÿÿØ�\H�"N‹l8(M…ít@ºL‰î1ÿè95ÿÿH�5·v¿H‰Â1Àè<ÿÿºL‰î1ÿè5ÿÿH‰Çè<5ÿÿ�\ºAƒÄA�ü¾„ˆE‰çH� ¸L‰øHÁàHƒ|0uoL‰øH� ŸHÁàHÈL‹0M…öt½‹@8ƒøtµƒèE1íH� l ƒøH�ÃßHGÈA–Å…Ò…ÿÿÿM‰ðH�©ß¿H�5Šè1À½è_;ÿÿéüþÿÿD‹d$ L‹t$ƒû:H‹5˜¿ ƒÃè48ÿÿƒûuçH‹t$1ÿºè.4ÿÿH‰Çèf2ÿÿé¡úÿÿ¿ 1Ûè…1ÿÿë»L‹=Ü—1ÿºH�5©åèù3ÿÿH‰ÇL‰þ1Àè ¦é8äÿÿL‹=°—1ÿºH�5Ú·èÍ3ÿÿH‰ÇL‰þ1Àèà¥éSòÿÿºH�5 çé Üÿÿ1ÿºH�5üËè—3ÿÿH‰îH‰Ç1À誥éå×ÿÿ1ÿºH�5oÊèr3ÿÿH�5»äH‰Ç1Àè�¥éÕæÿÿ1ÿºH�5FÊèI3ÿÿH�5ŒäH‰Ç1ÀèX¥é¹âÿÿH�}éåàÿÿºH�5 å1ÿ»è3ÿÿ¿H‰Æ1Àèó9ÿÿH‹5¬–¿ èâ6ÿÿƒëuêºH�5Öä1ÿèÚ2ÿÿ¿H‰Æ1Àè»9ÿÿL‹%tžº1ÿH�5Ãäè±2ÿÿL‰â¿L�%'tH‰Æ1Àèˆ9ÿÿè34ÿÿH‰ÅH‰ÃëL‰æ¿1ÀHƒÃèh9ÿÿH‹H…ÒuåH‰ïè˜/ÿÿ¿ èÎ/ÿÿL‹%ž1ÿºH�5mäèD2ÿÿL‰â¿H‰Æ1Àè"9ÿÿH‹=Û•èf�¿ èŒ/ÿÿ1ÿL‹%Ã�ºH�57¶è2ÿÿL‰â¿H‰Æ1Àèà8ÿÿº1ÿH�5!äH‹-‹•èÖ1ÿÿ¿H‰Æ1Àè·8ÿÿ1ÿºH�5¶è´1ÿÿ¾H‰ïH‰Â1ÀèB;ÿÿ1ÿºH�54¶è�1ÿÿ¾H‰ïH‰Â1Àè;ÿÿ1ÿºH�5¶èj1ÿÿ¾H‰ïH‰Â1Àèø:ÿÿ1ÿºH�5’¶èE1ÿÿ¾H‰ïH‰Â1ÀèÓ:ÿÿ1ÿºH�5õ¶è 1ÿÿ¾H‰ïH‰Â1Àè®:ÿÿ1ÿºH�5·èû0ÿÿ¾H‰ïH‰Â1Àè‰:ÿÿ1ÿºH�5·èÖ0ÿÿ¾H‰ïH‰Â1Àèd:ÿÿ1ÿºH�56·è±0ÿÿ¾H‰ïH‰Â1Àè?:ÿÿ1ÿºH�5a·èŒ0ÿÿ¾H‰ïH‰Â1Àè:ÿÿ1ÿºH�5|·èg0ÿÿ¾H‰ïH‰Â1Àèõ9ÿÿ1ÿºH�5§·èB0ÿÿ¾H‰ïH‰Â1ÀèÐ9ÿÿ1ÿºH�5Ú·è0ÿÿ¾H‰ïH‰Â1Àè«9ÿÿ1ÿºH�5¸èø/ÿÿ¾H‰ïH‰Â1Àè†9ÿÿ1ÿºH�5H¸èÓ/ÿÿ¾H‰ïH‰Â1Àèa9ÿÿ1ÿºH�5ƒ¸è®/ÿÿ¾H‰ïH‰Â1Àè<9ÿÿ1ÿºH�5¾¸è‰/ÿÿ¾H‰ïH‰Â1Àè9ÿÿ1ÿºH�5ñ¸èd/ÿÿ¾H‰ïH‰Â1Àèò8ÿÿ1ÿºH�5$¹è?/ÿÿ¾H‰ïH‰Â1ÀèÍ8ÿÿ1ÿºH�5g¹è/ÿÿ¾H‰ïH‰Â1Àè¨8ÿÿ1ÿºH�5¢¹èõ.ÿÿ¾H‰ïH‰Â1Àèƒ8ÿÿ1ÿºH�5Õ¹èÐ.ÿÿ¾H‰ïH‰Â1Àè^8ÿÿ1ÿºH�5ºè«.ÿÿ¾H‰ïH‰Â1Àè98ÿÿ1ÿºH�53ºè†.ÿÿ¾H‰ïH‰Â1Àè8ÿÿ1ÿºH�5Vºèa.ÿÿ¾H‰ïH‰Â1Àèï7ÿÿ1ÿºH�5iºè<.ÿÿ¾H‰ïH‰Â1ÀèÊ7ÿÿ1ÿºH�5|ºè.ÿÿ¾H‰ïH‰Â1Àè¥7ÿÿ1ÿºH�5—ºèò-ÿÿ¾H‰ïH‰Â1Àè€7ÿÿ1ÿºH�5ººèÍ-ÿÿ¾H‰ïH‰Â1Àè[7ÿÿ1ÿºH�5Õºè¨-ÿÿ¾H‰ïH‰Â1Àè67ÿÿH‰éº¾H�=Òßè 7ÿÿ1ÿºH�5çºèj-ÿÿ¾H‰ïH‰Â1Àèø6ÿÿ1ÿºH�5:»èE-ÿÿ¾H‰ïH‰Â1ÀèÓ6ÿÿ1ÿºH�5e»è -ÿÿ¾H‰ïH‰Â1Àè®6ÿÿ1ÿºH�5�»èû,ÿÿ¾H‰ïH‰Â1Àè‰6ÿÿ1ÿºH�5ë»èÖ,ÿÿ¾H‰ïH‰Â1Àèd6ÿÿ1ÿºH�5¼è±,ÿÿ¾H‰ïH‰Â1Àè?6ÿÿ1ÿºH�5A¼èŒ,ÿÿ¾H‰ïH‰Â1Àè6ÿÿ1ÿºH�5l¼èg,ÿÿ¾H‰ïH‰Â1Àèõ5ÿÿ1ÿºH�5�¼èB,ÿÿ¾H‰ïH‰Â1ÀèÐ5ÿÿ1ÿºH�5¢¼è,ÿÿ¾H‰ïH‰Â1Àè«5ÿÿ1ÿºH�5ͼèø+ÿÿ¾H‰ïH‰Â1Àè†5ÿÿ1ÿºH�5ð¼èÓ+ÿÿ¾H‰ïH‰Â1Àèa5ÿÿ1ÿºH�5 ½è®+ÿÿ¾H‰ïH‰Â1Àè<5ÿÿ1ÿºH�5&½è‰+ÿÿ¾H‰ïH‰Â1Àè5ÿÿ1ÿºH�5I½èd+ÿÿ¾H‰ïH‰Â1Àèò4ÿÿºH�5¦½1ÿè?+ÿÿ¾H‰ïH‰Â1ÀèÍ4ÿÿºH�5ɽ1ÿè+ÿÿ¾H‰ïH‰Â1Àè¨4ÿÿºH�5ì½1ÿèõ*ÿÿ¾H‰ïH‰Â1Àèƒ4ÿÿºH�5¾1ÿèÐ*ÿÿ¾H‰ïH‰Â1Àè^4ÿÿºH�5B¾1ÿè«*ÿÿ¾H‰ïH‰Â1Àè94ÿÿºH�5m¾1ÿè†*ÿÿ¾H‰ïH‰Â1Àè4ÿÿºH�5˜¾1ÿèa*ÿÿ¾H‰ïH‰Â1Àèï3ÿÿ¶œ—ºH�5¬¾ƒà<tH�5î¾1ÿè'*ÿÿ¾H‰ïH‰Â1Àèµ3ÿÿºö]—…ýH�5¿1ÿèõ)ÿÿ¾H‰ïH‰Â1Àèƒ3ÿÿºH�57¿1ÿèÐ)ÿÿ¾H‰ïH‰Â1Àè^3ÿÿH‹=g�èRˆ¿ è'ÿÿºH�5òÛ1ÿè•)ÿÿ¿H�á¿H‰Æ1Àèo0ÿÿ1ÿèX1ÿÿ1ÿºH�5ê¿èe)ÿÿH‰îH‰Ç1Àèx›é³Íÿÿ1ÿºH�5ýÂè@)ÿÿH‰Ç1ÀèV›é‘ÍÿÿºH�5UÃ1ÿè)ÿÿH‰Ç1Àè4›HÇD$héóÑÿÿH�5·¾1ÿèø(ÿÿ¾H‰ïH‰Â1Àè†2ÿÿºH�5â¾éþþÿÿè)ÿÿ¿è¶*ÿÿL‰þH�=ÂÛ1ÀèÕšéÍÿÿH�©ó¾9H�=ÁØèøˆèS<óú¶Gƒè<v ¸ÃUSH‰ûHƒìH‹W(H‹‚øH9ý•„¢H…À„™H‹ª°H…í„ÖHƒ}„ûH‹œ’H‹�’H‰ÑH)ÁHƒùvyH‹ r’HƒÀH9È„�H‹5~’HðH÷ÖH!ðH‰ÖH+5C’H‰ÇH+=9’H9÷HFÐH‰;’H‹EH‰(’H‰H‰HƒÁHƒEH‰MHƒÄ¸[]Ãf„¾H�=ä‘è¯H‹ð‘H‹ñ‘écÿÿÿ@€ ’égÿÿÿ@¿è¬ÿÿH‰ÅH‹C(H‰¨°H‰mHÇEé ÿÿÿ€H‰méüþÿÿf.„DóúH‹H‹¸ÿÿÿÿH‹r8H9q8r¸w‹B9Aºÿÿÿÿ—À¶ÀBÂÃff.„óúH‹H‹¸ÿÿÿÿH‹r0H9q0r¸w‹B9Aºÿÿÿÿ—À¶ÀBÂÃff.„Hƒ=è˜t/UH‰ýS1ÛHƒìH‹Á˜H‹<ØHƒÃÿÕH9À˜wæHƒÄ[]ÃÃfDóú·Wf�âÿfƒúu6H‹O€9.t4H‹Ý“H‹w(H‹RH‹vp€zH‰w(•¶҃ÂHcÒ€<ot7ÃfD€yiuóH‹W(‹ �H�5IŒH‹R@H‰w(HÓêH‰W0Ãf„H‹V@‹ æ�HÓêH‰W0Ãff.„óúÃff.„óú‹G(…Àt�J( H…öt H‹FH‰‚Ãff.„f�óúH‹BpH…ÀtH‹ “H9ˆøtÃf�ö@)€u÷‹B(¨tð%=täHƒz@tÝAÇÄUH‰ýSH‰óHƒìH‹H9t¾7H�=4Õè˜H‹CH‹H‰H‹UH‰SH‰EHÇHƒÄ[]ÀSH‹H‰øH…Ût‹Sƒút;wƒút4ƒúu[ÃfDH�{0ƒú u èÊÿÿÿHƒ8uäH‰ØH‹H…ÛtÙ‹SƒúuÅH�{ëÜff.„óúÇ‘ÿ%$–ff.„�óú‹‘…Àt ÇÜ�ÿ%ò•f�AUI‰ùATUSHƒìH‹n8H‹F H‹~(H9År I‰èI)ÀI9øv^HøH9èuH…ÉuQH…ÒtEI‹A8H‹º1ÿH�5ˆML‹(L‹ øèá#ÿÿHƒÄI‰ØH‰î[H‰Ç]L‰éL‰â1ÀA\A]éá•�‹FP…ÀtHƒÄ[]A\A]ÃfDI‹A8L‹.ÇFP1ÿºH�5lML‹ H‹¨øè}#ÿÿHƒÄL‰é[H‰ÇL‰âH‰î1À]A\A]逕AVI‰öAUI‰ýATM‰ÄUH‰ÍSH‰ÓH…ÿtH�]ŒH9Çt ƒ „ŽI‹EH…Àtƒx to¿0èŧÿÿI‹UM…öH‰H�d•LDòI‰EÇ@ H‰h L‰p(H‹U0L‰áH‰XH)ÑH‰HöE)u‹ ߌHÓëLãH)ÓHÓãH‰]@[]A\A]A^ÃfDH9h u‹ë»„H‰øH9O …eÿÿÿë¤�SH‰û¿è2§ÿÿH‹C�H‰XH‰[H‰4�Ãff.„óúHƒìH‹vH‹è+&ÿÿ…À”ÀHƒÄ¶ÀÃff.„óúA¹E…À…€H‰ÐH…ÒtuUSH‰ËHƒìH…ÉtW‹ÕŽ…Òt ‹P(3Q(ƒâu4H‹81Ò1öèv”ÿÿH‹;1Ò1öH‰Åèg”ÿÿH…ít"H…ÀtE1ÉH‹@@H9E@A•ÁHƒÄD‰È[]Ã@HƒÄE1ÉD‰È[]ÃE1ÉD‰ÈÃf„HƒìH‹5•Š1ÒdH‹%(H‰D$1À‰=½ŠH�L$H‹=�ŠƒvŠÇD$HÇg“ÇU“è˜JH‹D$dH+%(uHƒÄÃè^!ÿÿff.„H‹©ŽSH‰òH‰þH�=KŽH‹@ÿ�8H…Àt)H‹55“H;5&“H‰ÃH‹=“tH�FH‰÷H‰“[Ã�HƒÆH�6HÁæH‰õ’è¸!ÿÿH‹5ñ’H‰Ú’H‰ÇëÃDóúöG…¢AUATUH‰ýSHƒìH‹W(L‹% ŽH‹BpL‹*H…Àt L9 øt}L‰îL‰çèÊ"ÿÿH…ÀtEH‹˜H…Ût9H‹E(L‹ ë H‹›H…Ût$H‹3L‰çèù#ÿÿ…ÀuåH‰](HƒÄ[]A\A]ÃfDÆEHÇE(HƒÄ[]A\A]Ãf„ÀH‹0L‰ïè­#ÿÿ…ÀtÕéoÿÿÿ@óúAVAUATUSHƒì@dH‹%(H‰D$81À€…eH‹G(‹HŒH‰ûH‹o0‹ƒú„rƒú„yH‹= �L‹`H‰ÚH�5¬ŒH‹Gÿ�(…À„ÚHƒ=*Œ„ ‹r‘…À„FH‹sH‹=ÃŒºèy&ÿÿI‰ÆH…À„uL�-üGH‰Æ1ÀL‰ïèYÞL‰÷è!ÿÿL‰÷‰Ãèÿÿƒû�žfDH‹5¹‹¿ ƒÃè!ÿÿƒûuç1ÀH�=lGI‰æèÞH‰èI‰èH� QEHÁè tH� HEº2¾L‰÷1Àèà)ÿÿL‰öL‰ï1ÀèÓÝL‰÷è›ÿÿ‰ÃHƒøwH‹5A‹¿ ƒÃèœ ÿÿƒûuçI‹´$øH�=áE1Àè‘ÝH‹D$8dH+%(…õHƒÄ@¸[]A\A]A^Ã;ƒ�þÿÿëÍfD;†þÿÿë½fDºH�5pD1ÿèÕÿÿH‰Ç1Àè+ݺH�5H1ÿè¸ÿÿH‰Ç1ÀèÝÇà�éqþÿÿ€H‹sL�-ƒF1ÀL‰ïèãÜH‹{èªÿÿ‰ÃéŒþÿÿL‹k1ÿºH�5vGèYÿÿH‰ÇL‰î1Àèl�éýýÿÿ€H‹5!Š¿ 1Ûè}ÿÿéPþÿÿècÿÿH…ÿtkUH�-c÷ÿÿSH‰ûHƒì‹Cƒø tCw)ƒøtƒøu H‹{èÎÿÿÿH‹H…ÛuÛHƒÄ[]ÀƒøuåH‹=܇è§ÿÿÿë×D1ÒH‰îH‰ßè#§ÿÿëÃ�Ãff.„@óúAWAVI‰þ¿ÿÿÿÿAUATUSH‰ÓI‰ÝHƒì8D‹%1€H‰t$dH‹%(H‰D$(1Àè¯ÿÿH‹=ø‰1ÒH‰Þè®#ÿÿD‰çH‰ÅH…ÀHDëèŒÿÿA‹F¨…Ȩ…˜I‰ÜI‹~H…ÿt8H‹D$H…À„æ¶@¨„RÀèƒà<„d<„ü„À„¼H‹D$H…Àt ö@„ M‹~ë0f.„A¶GL‰æƒà8< t <H‰îIDõ1Òè1ÿÿ…Àt%M‹?M…ÿ„ùI‹H…ÿtë€?*uÀu½DH9ÝtH‰ïè›ÿÿI9ÝtL‰ïèŽÿÿI9ÜtL‰çè�ÿÿH‹D$(dH+%(…¾HƒÄ8L‰ø[]A\A]A^A_ÃA‹F¨…=¨…ب„(ÿÿÿI‹~H�t$L‰d$è$ÿÿI‰ÇH…Àu%éÿÿÿ@A¶Gƒà8< „`ÿÿÿM‹?M…ÿ„èþÿÿI‹L‰æè ÿÿ…ÀtÔéÓþÿÿ€H‹D$L‹8M…ÿ…ÿÿÿ€E1ÿéÿÿÿH‹=)ˆºH‰ÞèÜ!ÿÿI‰ÄH…À…KþÿÿéCþÿÿH‹=ˆºH‰Þè´!ÿÿI‰ÅA‹FM…í…þÿÿI‰Ýé þÿÿI‹~H�t$L‰l$èI#ÿÿI‰ÇH…Àu!ë/€A¶Gƒà8<„�þÿÿM‹?M…ÿtI‹L‰îèÔÿÿ…ÀtØA‹F¨„þÿÿéÓþÿÿH�t$H‰l$èð"ÿÿI‰ÇH…Àu ë6fDA¶Gƒà8<„8þÿÿM‹?M…ÿtI‹H‰îè|ÿÿ…ÀtØ„A‹F¨„pþÿÿéCÿÿÿèºÿÿf.„óúH‹é£ÿÿAWAVAUATUSH‰ûHƒìL‹M…Àt8‹OL‰Â1ÿ€¶BH‹‰Æƒæ@€þHƒßÿÀèƒà ÁH…Òu߉KH…ÿuL‰CHƒÄ[]A\A]A^A_Ã@Hÿ1ÉH�ŒöÿÿH�5uÿÿÿè@"ÿÿH‰\$L‹;H‰CH�CH‰$M…ÿtL‰ýM‹?öEu;H‹$H‰,$H‰(M…ÿuäH‹$HÇH‹CH‹\$H‰HƒÄ[]A\A]A^A_ÃDH‹{ºH‰îè�ÿÿL‹0M…öuH‰(H‹D$H‰l$H‰(ë‰DD¶më&f„M‹&M…ät8H‹uI‹|$è ÿÿ…Àu&M‰æA¶FD1è¨8u×H‰ïè?ÿÿé>ÿÿÿf.„L‰eI‰.é(ÿÿÿ@S€?_H‰ûu€HƒÃ€;_t÷ºH�5†>H‰ßè“ÿÿ…Àu8¶C 8Cu/¶Cÿà„H‹D$8I‹U8Çõ~H‰D$@L‹cH‰H�D$@L‰çH‰Ç\H‰ èX¤‹Jƒø„aƒø„€ Ç.A‹D$ƒàýƒøuI‹D$€8.„k A€�˜Aö…˜u)L9-"~„H‹T$@L‹D$8L9Â…‰L‰D$8@I‰ÜDI‰ÞH‹E1ÉH…Û…ÿÿÿH‹D$8H‹T$HdH+%(…iHƒÄX[]A\A]A^A_ÃfDD‹L$0H‹L$8M‰øL‰îH‹T$H�=œI‰ÜèTþÿÿH‰D$8ë•DH�{0D‹L$0H‹L$8M‰øL‰îH‹T$è*þÿÿH‰D$8I‰ÜéeÿÿÿDI‹E8I‰ÜH‰ú��H( éFÿÿÿfDI‹U8H‹D$8H‹{H+B0H‰CHI‹E8H‰C@èVÿÿ‹ ~ÓøH˜I‹U8HD$8I‰ÜH‰D$8öB)…ùþÿÿH+B0HÓàH‰B@ééþÿÿ�HÇCI‹U8I‰ÜH‹D$8H+B0H‰CéÇþÿÿ€H‹{8I‰Üè\�ÿÿƒ»Œÿ„§þÿÿH‹{XH…ÿ„B H‹D$8€£˜þÇÄ|H‰õ|H�D$8H‰ñ|H�¢yH‰ë|è6¢‹È|…À…ƒ=�|t7L‹C0L‹sXº1ÿH�5Á=L‰D$èÿÿH‹T$L‰öH‰Ç1Àè…DH‹S8H…Ò„þÿÿH‹„€H‹@‹@ƒèƒø‡ñ‹B(©„ãH‹KH…Ét Hƒ9„½ ºL‹s0H�5˜=1ÿè™ÿÿH‰ÇL‰ö1À謄H‹S8H‹K‹B(H‹qH‹N0€J,H‰J8H‰J0öÄ…|ýÿÿH‹F@H‰B@éoýÿÿ€M…ÿtBH‹sD‰L$H�L$@H�†H‹¾øH‹Gÿ�°D‹L$…À„‹T$@…ÒtAÇI‹$L‹D$8M‹]8L‹PöI„ûI‹‚(H…À„ëI9ÄâH‹E…É…&M…ö„I‰M‰ôH‰ÃéÐüÿÿ€H�{é+ýÿÿ€I‹U8H‹D$8ÇÝzH‹{H‰ÆH+r0H‰s0I‹U8H‰S(H‰÷zH�D$8H‰ózH�¤wH‰ízè8 ‹C��æþÿÿƒú‡Ê‹ @{H�5K¸‹–Óà9ÐBÂÓèéýÿÿI‹E8I‰ÜH‰C H‹CH‰D$éüÿÿ€A·B,f%€f=„UA‹J(�စAö…˜…I‹}pH…ÿ„á H�x7HÇÆÿÿÿÿD‰L$4L‰\$ L‰T$L‰D$‰L$(èǼL‹D$L‹T$HƒøÿL‹\$ D‹L$4„õ Hƒø‹L$(v1ɺë fDH9ÐvƒÁHÒuóA‰Jxém f.„ºH�5ˆÀ1ÿI‰ÜèÿÿºH�52ÀH‰Ç1Àè$‚éûÿÿ€H‹áyH…À„òH9Ä�úÿÿ1ÿºH�55ÀèÌÿÿºÈH�5ä¿H‰Ç1ÀèÖ�éaúÿÿ�M+C0I‰ÜM‰Bhé¸úÿÿI‰ÞI‰$H‰ÃA¹é¬úÿÿI‹B0I+C0I‰ÜI‰BhéŒúÿÿ@‹ zyM‹M8L)ÂH‰ßH‹t$HÓâL‰ÉèðëÿÿA‹…”H‹ƒøtƒø„È I‹E8ƒH(L‹D$@L‰D$8é1úÿÿ�H‹‰xH‹’xH‰D$8H…Ò„ üÿÿHB0H‰D$8éþûÿÿH‰ßxéšùÿÿf.„H�)uL‹T$8H9„…Hƒ{X„¬H‹{hH�…5L‰T$HÇÆÿÿÿÿèäºL‹T$Hƒøÿ„F E1öºHƒøw éœ f�H9Ðv AƒÆHÒuòA¸D‰ñIÓàK�DÿI÷ØI!ÀL‰ÀL)ÐH‰D$‹bwƒø„ H‹S8M‰Âƒø~}HÇÀÿÿÿÿD‰ñM‰ÁL+J0HÓàH÷ÐL…ÈtaD‹ÆzE…Òu Hƒ{X„ÖL‹S0º1ÿL‰L$(H�5«9L‰D$ L‰T$èÜ ÿÿH‹T$(H‹t$H‰Ç1ÀèèH‹S8L‹T$ €€J,L‰R8L‰R0HÇBhH‹SPD‹L$0L‰ÑH�{M‰øH‰ÞèY÷ÿÿ¶ƒ˜H‹S8H� ÇsƒÈˆƒ˜H9ʄ娅ÝH‹r0L‹B@‹ _w‹»ˆH‰t$8öB)„ f.„L‹C@M…À„¹L‹K`M…É„fH�_sL‰ÏL‰D$L‰L$ÇPvHÇ}vHÇzvH‰{vèÆ›D‹ WvL‹D$E…ÉL‹L$…ØE1öƒ=vL‰L$t3ºH�5—81ÿL‰D$è“ ÿÿH‹t$H�J3H‰Ç1Àè�~L‹D$H‹C8‹P(L‰p8‰Ñƒá€‹˜…É„©‰Ñ�á�ù„•Hƒx@u&I‹H@H…É„×H‹I8H‹t$8H9q0‡nfDHƒ{H„¹H�5VrH9ð„÷ÿÿöƒ˜…÷ÿÿ�â�ú„ÎL‹p@‹ äuIÓîH‹D$8H‹{xLðH‰D$8H…ÿt0H‰DuH�D$8H‰@uH�ñqÇïtH‰0uè{šH‹s@H…ö„–öÿÿH‹C8ö@(„ˆöÿÿH‹T$8D‹D$0H‰V8E…À…TH‹sHH…ö„döÿÿH;s@„ZöÿÿH‹C8ö@(u öƒ˜@„CöÿÿH‹H8‹|$0IÎL‰v8…ÿ„,öÿÿ1ÒH‰ßèÊæÿÿéöÿÿDºH�5L71ÿèí ÿÿH‰Ç1Àè}D‹L$éÁøÿÿf„H‹ÁtH…À„JH9Ägõÿÿ1ÿºH�5 »è¤ ÿÿºÑH�5¼ºH‰Ç1Àè®|é9õÿÿf„Hƒz@„Eýÿÿ1ÿºH�5˺èb ÿÿºšH�5zºH‰Ç1Àèl|éýÿÿ€¶‰wƒà<…6÷ÿÿH‹ÇwH‹@ƒx…!÷ÿÿ¿(迎ÿÿH�8zÇH‰Ç‹yzƒøƒÐÿH‹ÂHÇGHÇG H‰G‹•yÇG‰GH‰{Xé@öÿÿf�€x„“ôÿÿé†ôÿÿ�H‹CHH…À„ƒL‹H8öƒ˜@……H;C@„“H‹{hH�M0L‰L$HÇÆÿÿÿÿL‰D$è§µL‹D$L‹L$H�PþHƒúü‡GE1öºë DH…Òt HÒAƒÆH9Ðwï¸D‰ñHÓàN�LÿH÷ØI!Áé L‹s@‹J(M…öt/öÁt}I‹>€?*uuH�54º‰L$H‰T$èÆ ÿÿH‹T$‹L$…ÀuS‰Î‰ÈL‹5¦sƒæƒÈ ƒþDÈM…ötD‰ÈA#FHt‰ÈA#FLtM‹vM…öuç1öH�=Ö¹è�™ÿÿH‹S8I‰ÆL‰s@öƒ˜…‹B(¨„ %=„ù¶§uƒà<„çöD$0„ÜI‹>H�5w¹H‰T$è ÿÿH‹T$…À…»H‹ ñrH…É„«H‹9H�5F¹H‰T$H‰L$è× ÿÿH‹T$…Àu H‹L$Hƒyt}ƒ=ópt9M‹V8D‹rxE…ö~x¸D‰ñHÓàI�TÿH÷ØH!ÐI‰ÀL)ÐH‰D$‹½pé_ùÿÿ€=vL‹2H�5¿2ºuH�5ù21ÿèzÿÿL‰öH‰Ç1Àè�yL‹s@H‹S8M‹V8D‹rxE…ö�âøÿÿHÇD$éŽùÿÿH‹¿mE1öH‰D$H…À„ŠùÿÿºH�5†·1ÿL‰T$èÿÿº5H�5.·H‰Ç1Àè yL‹T$HÇD$éIùÿÿ1öH�=$¸èÏ—ÿÿL‹D$@L‰@8éØñÿÿA‹JxA9KxsA‰KxA‹Jx¸HÓàI�TÿH÷ØH!ÐH‰ÂL)Â…J‹ ªpI‹B@HÓèLÀöás„åI‹U@H…ÒtH‹r(Hr H‰t$H9Æ‚}I‹S0I)ÐM‰BhAöC)u H‰ÆH)ÖHÓæI‰s@M‰š(I‰ÜM‰ZpH‰D$8éEñÿÿH�D>ÿIÓèH÷ßLÀH!øH)ðHÓàH‰B@éÝøÿÿLL$H‹C8‹P(L‰H8‰Ñƒáé‹ùÿÿƒy…9óÿÿécóÿÿH‹]oL‹5FoH…À„UùÿÿLp0L‰52oéEùÿÿ€‹˜fDƒ»”…–ùÿÿé†ùÿÿI‹S0I)ÐM‰BhAöC)….ñÿÿH‰ÆH)ÖHÓæI‰s@éñÿÿH‰goéðÿÿ1öH�=¡¶èL–ÿÿI‰Àé1øÿÿ¶ �rƒá€ù„4ùÿÿI‰X@é+ùÿÿHƒ|$…<H‹S8M‰Âéh÷ÿÿH‹C8I‹p@‹P(‰ÑƒáH…ö„Ÿøÿÿ…É„BÿÿÿL‹N8L‹\$8I‹y0M‹Q8L9߆žH‹p@H…ö„‘‹ ânHÓîH‰ñLÙH9Ï‚yL9ׄ¦ºL‹s01ÿL‰D$H�5È0è›ÿÿL‰öH‰Ç1Àè®vH‹C8L‹D$‹P(‰Ñƒáéøÿÿ„H‹ rH‹@ƒx…+õÿÿéõÿÿ‹ `nH‹t$L‰çD‰L$(L‰T$HÓâL‰ÙL‰\$H‰D$ èÉàÿÿL‹D$ D‹L$(L‹T$L‹\$épýÿÿ¶YqE1öƒâ€ú…)øÿÿéøÿÿE…öŽäýÿÿé¸úÿÿAöB*…ÿI‹BHH…ÀtUI;B@tOI‹BpM‹º1ÿH�5ˆ0D‰L$4L‹L‰T$ L‰\$L‰D$(èœÿÿH‹T$(H‹t$H‰Ç1Àè¨uD‹L$4L‹T$ H‹D$IÇBpH‰D$8ö½p…�ñÿÿéjîÿÿH‹p8H9p0…4÷ÿÿé—ýÿÿƒ»”„±LP0I)úE…ö~D‰ñ¾HÓæH‰ñN�TÿH÷ÙI!ÊL‰P8€‹˜é¬öÿÿH‹H0H‹SXH‰ßèµÞÿÿé—÷ÿÿL‹L$éÍôÿÿH‹S8é‰ûÿÿI‹BpM‹º1ÿH�5@/D‰L$4L‹L‰T$ L‰D$(L‰\$è¬ÿÿH‹T$(H‹t$H‰Ç1Àè¸tD‹L$4L‹T$ é­þÿÿI‹q@‹ �lHÓîIòéAÿÿÿƒÉÿé)òÿÿH�•<¾QH�=}²è´bè�ÿÿHÇD$H‹S8AƒÎÿé�ôÿÿf„óúAWH�OHAVAUATL�gLUSHƒì¶…ÒLDá„ÛtuI‰ÿH‰õL�L/A‰ÖL�-:f��CßÿàL‰Æº1ÿH‰L$èÄÿÿ¾óH‰Ç‰ò1ÀèÕsH‹L$L�ù.f„¶]HƒÅ„Ûu¤HƒÄ[]A\A]A^A_ÃDAƒ $ëÙf„Aƒ $ëÉf„Aƒ $ë¹f„Aƒ $ ë©f„Aƒ $ë™f„E…öuM�gLA¾é|ÿÿÿ@I‰ÌE1öémÿÿÿff.„f�óúH‹lATI‰üH‰8H�G@H‹(H‰lH�‡øH9ˆnt Hƒ¿øt.ºH�5±1ÿè±ÿÿº‰H�5ɰH‰Ç1Àè»rI‹|$(H9=/ntEH‹>n‹58NH‰8H�‡øL‰§H‰ nèÿÿI‹|$(L‰âH�5ô7ÿÿA\éM ÿÿDºH�5 °1ÿè5ÿÿº‹H�5M°H‰Ç1Àè?rI‹|$(ë‹„óúH‹ÝjH…ÀtH‹P HÇ@@H‰P8H‹@H…ÀuçH‹ÀjH…Àt€ ˜üH‹@ H…ÀuðH‹amH‹€�H…Àt$DH‹P@H‰PHö@)uHÇ@@H‹@H…ÀuáöÜlAVAUL‹-.iATUH‰ýS‰ó„ÀxiH‹=BiH‹5+iL‰êH÷ÚH�OÿI‰ÈI!ðH!Êt&M…Àt!H‰ùL1îH÷ÙH…ÎtLÂH9׃§€ÇÆh„ÀˆY[]A\A]A^ÃDH‹ÁhH…Òt‹H‹ÕhH‹ ¦hL�dÿH÷ØI!ÄH‹|lM‰æH‹€˜I)ÎH…ÀtcH‰Ö‹=ÑhA¸H)΄‹P(öÂt8H‹H0L9ér/H9ñs*�â�út H‹P@‰ùHÓêI)Ö‹HxL‰ÂHÓâH÷ÚI!Ö�H‹@ H…Àu·ÇhM9î‚äL‰5ýgè8þÿÿƒ]gƒ=ŠgtƒIgH‹5:g1É1ÒA‰ÙL�5gtƒýfH‹5îfA‰ÙI‰è1É1ÒL‰÷èœçÿÿ¶k„À‰§þÿÿH‹vgH…À„—þÿÿH‹Vg[H‰Æk]A\H‰´kA]A^ÀÇ&gL�5—féqÿÿÿf�1ÿºH�5Æ­è]ýþÿº H�5u­H‰Ç1Àègoéîþÿÿf�óúATA‰ñA‰ôI‰øU1É1ÒH‰ýH�=BfHƒìH‹5'fƒ,fƒ!fÇOfÇ�fèÀæÿÿƒ=‘ftÇ…fHƒÄ]A\ÃDHƒÄD‰æH‰ï]A\é.ýÿÿff.„óúAUATUSHƒìdH‹%(H‰D$1Àƒ=óiv)…ÿ…·H‹D$dH+%(…žHƒÄ[]A\A]Ãf�D‹-AjL�d$H�meH‰åÇ(jE…í„÷€¸ÿÿÿÿë$f„Ǿe‹$…À„º‹ñiH‹5eH‹;1ÒƒÀL‰áƒe‰ÒiÇD$HÇómÇámÇeè%E1É1ÉI‰èè�ûÿÿH‹5¶d1ÒH‰ßƒ¶dƒ«dÇ$ÇÒdÇ eèCåÿÿƒ=e…Fÿÿÿ1öH‰ïèÌûÿÿ‹$…À…Fÿÿÿƒ2iAƒí…ÿÿÿH‹5IdH‹=Rd1ÒL‰áƒBdÇD$HÇ3mÇ!mÇOdèZ$èåúÿÿH‹D$dH+%(uHƒÄ¾1ÿ[]A\A]é�ýÿÿè ûþÿL�d$ëƒóúAWAVAUA‰ÕATI‰üUSHƒì(H…ö„o1ÀDH‰óH‹6H‰H‰ØH…öuïL‹5PHM…ä„÷I‹<$H…ÿt€?*…½€…³IÇ$¿€èù~ÿÿHÇH‰ÅÇ@ I‹FH‰(I‹$I‰nH‰E1ÀAƒ|$”À‰EI‹D$H‰ExI‹D$H‰E@H�E0D‰m(I‰ÞE1äH‰E8H�|6ÿÿL�-ªH‰] HÇE0H‰EHHÇEPHÇEXHÇE`HÇEhHÇEpÇD$H…Ût2M‹~AƒÄM…ÿt%L‰îL‰ÿè¸ÿþÿH…ÀtCH�5^ L‰ÿèäûþÿHƒøwHƒÄ([]A\A]A^A_ÀA€<*uãA€|uÛƒD$@M‹6M…öu˜AƒüÄH‰ØL‹0L‰t$M…ö„õL‹xL‰îL‰ÿèûþÿA€<HƒÐH‰D$�M‹FL‰îL‰ÇL‰$è]ûþÿL‹$H‹L$L‰ÿA€<L‰ÆHƒÐH9ÁHFÁH‰Âèvûþÿ…À„PÿÿÿM‹6M…öu¶H‹D$뀀H�5Á¨èÌþþÿH…À…@þÿÿljcé1þÿÿ@¿€è&}ÿÿHÇH‰ÅÇ@ I‹FH‰(I‰nHÇEÇEHÇExHÇE@é1þÿÿfD1Ûé¢ýÿÿ‹D$AÁäDà=„Ã�‡=„š=…‰þÿÿH� 3ÿÿH‰EHI‰ÜE1öë @M‹$$M…ät'I‹|$L‰îèúýþÿH…ÀuåIcÆAƒÆL‰dÅPë×€H‹{L‰îèÔýþÿH…Àt IcÆAƒÆH‰\ÅPH‹H…ÛuÛéþÿÿ=t#=…þÿÿH� :ÿÿéxÿÿÿH�‘5ÿÿélÿÿÿH�%8ÿÿé`ÿÿÿH�™6ÿÿéTÿÿÿ@óúAWI‰ÏAVE‰ÎAUI‰ýH‰ÏATI‰ô1öUH‰ÕSHƒìD‰D$ èˆÿÿM…ÿA•ÇAƒæI‰$u?E„ÿt:H�53¨H‰ïH‰ÃèÈúþÿ…Àu$I‰]öD$ tE„ÿu$HƒÄ[]A\A]A^A_ÃD1öH‰ï覇ÿÿH‰ÃëÍ�H�5)$1ÿºè�öþÿHƒÄ1ö[H‰Ç]1ÀA\A]A^A_é£hóúAVI‰þ¿AUA‰ÍATI‰ÔUSH‰óè>øþÿL‰0H‰Å¶@ƒàøƒÈˆEE…í„ÚH‰]H…Û„º»M…ätH�5þ8L‰çèœóþÿ…Àu8¶EÁãƒàÇ ØˆEH‹’aH‹€ÐH…À„[H‰ï]A\A]A^ÿàDH�5f©L‰ç»èLóþÿ…Àt°H�5§L‰ç»è4óþÿ…Àt˜ºH�5d#1ÿ»è˜õþÿL‰æH‰Ç1Àè«génÿÿÿfDè«òþÿ€eþH‰]é9ÿÿÿfDH‰ßè�õþÿH�xè7÷þÿ¶H‰Ç„Ò„�E1ÉH‰ÙI‰À1öIº ëf�HƒÁAˆPÿA‰ñ1ö¶„Òt/…öuè�rÖ@€þ1wI£òr‰1ö€ú\Aˆ@”ƶQHƒÁIƒÀ„ÒuÑE…Ét AÆH‰}é¦þÿÿ[H‰è]A\A]A^Ã@èóñþÿH‰ßëÚff.„óúAWAVAUATUSHƒìH‹ÏbH‰4$H‰T$H…ÿ„õI‰üH…Û„…€?tH‹{H�-©"€?u\ºH�5P"1ÿèQôþÿH‰Ç1ÀègfH‹<$HƒÄ[]A\A]A^A_é`ñþÿºH‰î1ÿè!ôþÿL‰æH‰Ç1Àè4fH‹H…ÛtH‹{L‰æèà÷þÿ…ÀtÌH‹H…ÛuèH‹$H�{è‡ÚÿÿH�{8è~ÚÿÿL‹sH‹ bM…ö„¹L�=+"H…Û„€A¶FH‹{@ƒàH…ÿ„Ó„À…SH‹kHH…íuëX„H‹mH…ítGM‹nH‹uL‰ïèG÷þÿ…ÀuãA¶F2E¨8u׺L‰þ1ÿèHóþÿL‰îH‰Ç1Àè[eH‹mH…íu»f�H‹H…Û…tÿÿÿH‹UaM‹6M…ö…QÿÿÿH‹$L‹p8M…ö„¿L�=a!f„H…Û„€A¶FH‹{ ƒàH…ÿ„ã„À…H‹k(H…íuëX„H‹mH…ítGM‹nH‹uL‰ïèwöþÿ…ÀuãA¶F2E¨8u׺L‰þ1ÿèxòþÿL‰îH‰Ç1Àè‹dH‹mH…íu»f�H‹H…Û…tÿÿÿH‹…`M‹6M…ö…QÿÿÿH‹$H‹L$L‰`H‰HX1ÀA€<$…nH‹ $‰AH�M`H…Ût H‰ØH‹H…ÛuõH‹ $H‰HƒÄ[]A\A]A^A_À„À„ÿÿÿH‹H…Û…ôþÿÿé{ÿÿÿ€„À„-þÿÿH‹H…Û…þÿÿé‹þÿÿ€L‰öèÀúþÿH‰ÅH…Àué3ÿÿÿH‹mH…í„#ÿÿÿM‹nH‹uL‰ïèSõþÿ…À… ÿÿÿA¶F2E¨8uÏL‰þ1ÿºèPñþÿL‰îH‰Ç1Àèccë±�L‰öèXúþÿH‰ÅH…ÀuéûýÿÿH‹mH…í„ëýÿÿM‹nH‹uL‰ïèëôþÿ…À…ÓýÿÿA¶F2E¨8uÏL‰þ1ÿºèèðþÿL‰îH‰Ç1Àèûbë±M‹6M…ö…€þÿÿH‹$H‹L$L‰`H‰HXA€<$t:‹ÛbƒÀ‰Òbé~þÿÿM‹6M…ö…xýÿÿéýÿÿL�%«›H…Û„ŒüÿÿéüÿÿH‹$Ç@H�¡^é_þÿÿ@óúATUH‰õSH‰û¿è(òþÿH‰H‹v^I‰ÄH…Ûuë,@H‹H…Ût H‹{H‰îèüóþÿ…ÀuèI‰\$L‰à[]A\úH�5œ1ÿ1ÛèóïþÿH‰îH‰Ç1ÀèbI‰\$L‰à[]A\Ãf„óúH‰ú÷Çÿÿÿ?tQ÷Çÿÿt)÷ÇÿuaHÁê H�5£¿1ÀéŠöþÿf.„HÁêH�5y¿1Àéiöþÿf„HÁêH�5P¿1ÀéIöþÿf„H�5O¿1Àé-öþÿff.„f�óúUH�53SHƒìH‹=¸\dH‹%(H‰D$1ÀèƒñþÿH…Àt2H‹=/XºH‰æH‰Ãè×îþÿH‹$�K(@ H‰ƒ¸H‰S@H…Àt\H‹=ýWè0õþÿH‹ÙYHÇæWH…Àtf„HÇ@0H‹@@H…ÀuïH‹D$dH+%(uYHƒÄ[]ÄH‹=¡Wèdíþÿ‰Çè-îþÿºH�5!1ÿH‰ÅèGîþÿH‰îH‰Ç1ÀèZ`�K(€HÇC@éZÿÿÿèaîþÿ�óúPXH�+(¾0H�=+žHƒìè^Nff.„óúAWI‰÷AVI‰ÎAUM‰ÅATUL‰ÍS‰ÓºHƒì‹t$@èR`ÿÿHƒxXH‰Ö_I‰Ä„Õ1ÀƒûH�áYA‰œ$””ÀI�L$AÇ„$ˆÁà A‰„$�H‹K;H9Ѓ›H�P�|$H€H‰/;H‹ ;H‰”ÂA¶„$˜ÁâH‰ ;ƒà¿ ÐAˆ„$˜¨@tM…öu!M‰l$pL‰àM‰t$hI‰l$`HƒÄ[]A\A]A^A_Ã1ÿºH�5 èíìþÿ1öH‰Ç1Àè_ë¾€L‰xXé"ÿÿÿèªþÿÿf.„óúS¿ H‹:èZqÿÿH� ãXÇ@HÇH‹SH‰H�PH‰CHÇ@H‰PH‹K:H9ÈsH�HH‰ ;:H‹ ,:H‰[H‰!:Ãè+þÿÿff.„óúPXH�3·¾9H�=KœHƒìè~Lff.„óúAWAVAUATUSH�ìˆH‹=$ZdH‹%(H‰D$x1ÀH…ÿtèzÒÿÿH‹ VH‹5ìTH�=E5ÿÿH‰æUèI]ÿÿ1ÿèrhÿÿH‹;WH‹@xH…ÀtÿÐH‹9WH…Ût@H‹{è÷hÿÿH‹H…ÛuïèÚõþÿ…À„ÓH‹£UH‹=„T1öH�-«QƒpTL�-¥L�%ÎH‰gUèºwÿÿH‹ VH…Ûuzé f„H‹‰TH‰C H‰C8H‹{0H…ÿtGÇVTHǃTHÇ€TH‰-�TèÌyD‹]TE…Û„�H‹5TH‰C(H‹[H…Û„•H‹{H…ÿtšÇùSHÇ&THÇ#TH‰-$TèoyD‹5TE…ö…OÿÿÿL‹3L‰î1ÿºè]êþÿH‰ÇL‰ö1Àèp\é:ÿÿÿL‹3ºL‰æ1ÿè9êþÿH‰ÇL‰ö1ÀèL\H‹[H…Û…kÿÿÿöiW…ÌHƒ=ÒWt¾"H�= šè]H��UHƒ=�UH‰©W„¼ H‹=¬WH…ÿtè:ÇÿÿH‹=£WH…ÿtè)ÇÿÿH‹BUÿP Hƒ=�V„¾Hƒ=q[„°ºH�5w1ÿè€éþÿH‰Ç1ÀèÖ¨H‹-G[H…턃L�-UL�%qL�5e�H‹uL‰ï1À袨H‹}èiéþÿH‰ÃHƒø‡ @H‹5 V¿ HƒÃècëþÿHƒûuåH‹uH…öt L‰÷1ÀèZ¨H‹uL‰ç1ÀèL¨H‹mH…íu“H‹üS1íL�d$`L�-ÝL�5ÿH…Ûu3éãDH‹{(L‰î½è'ëþÿ�H(HÇ@@H‹[@H…ÛtQH‹{(L‰æèSòþÿH‰C0H…Àu‹|$`�ÿðtÖè9èþÿºL‰ö1ÿI‰ÇèWèþÿH‰ÞL‰úH‰Ç1ÀègZH‹[@H…Ûu¯…ít`L‰çèòòþÿH‰cQH…ÀuW‹|$`èíçþÿºH�5¡1ÿH‰ÅèèþÿH‰îH‰Ç1ÀèZH‹SH…ÛtH‹{0è•ïþÿH‹[@H…Ûuîë HÇQèjòþÿH‹-ãRH� UL�=-L�-îÁÿÿH…í…ŠéÁ öìT@…¨M…ö„"A‹D$D¨@u E‹Œ$ E…ÉtLD‹ÍUE1öE…À„H‹úTH‰ÞL‰çH‹@ÿ�@…À…O‹=œU…ÿ…%L‰÷èœêþÿ@H‹m@H…í„CöEY uíL‹e(‹wUH‹5¤TL‰çèÌèþÿI‰Æ¶ƒà<…KÿÿÿA‹D$DM…ö„qL‹vTI‹T$I‹H‹I9J„<ÿÿÿ¨„4ÿÿÿI‹@L‹ 1ÿºH�5dL‰D$H‹L‰L$H‰L$è�æþÿL‹D$H‹L$L‰âH‹t$H‰Ç1Àè‘XM…ö…ÞþÿÿD‹ÁTE…Ò„0ÿÿÿH‹=ñSèœéþÿL‰çH‰D$è�éþÿ1ÿºH�5YI‰Æè)æþÿH‹L$L‰âL‰öH‰Ç1Àè4XéçþÿÿL‰þ1ÿºèæþÿL‰æH‰Ç1ÀèX‹5MT…ö„±þÿÿH‹m@H…í…½þÿÿHƒ=ˆT„úL‹-ãPL�5Ü M…íuéáf�M‹m@M…í„„I‹}(L‰öèèþÿI‰ÇH…ÀtßL‹`@L‰çècçþÿI‹}(1ÉM‰àH‰ÂL‰þH‰ÃèŒåþÿ…À„\IÜL9ãs(@H‰ÞH‰ï1É1ÒèÉîÿÿH‰ßH‰ÅènåþÿH�\L9ãrÜM‹m@A�O(€ M…í…|ÿÿÿ1Ò1ÉH�5ý$1ÿè�îÿÿ¾p¿H‰ÃèÛïþÿH‹=¬S1ÒH‰hH‰ÆH‰X8H�@ÈÿÿH‰FhÇF`ÿÿÿÿè ðÿÿ‹ W…É…Eƒ=ãVÇéV…•H‹|2H�­OH� ÖPHÇ›OH‰œOH9ȃò!H�HL‹= VÇD$L�%‘TH‰ 22H‹ #2H‰H‰2M…ÿ„–I‹G¶@ƒè<†wA‹wH‹=ÂQL�5kQè¦äþÿH‰D$ H…ÀuF¶UQA‹ƒà<„<I‹G H‹@L‹€øM…À„ ‰þL‰ÇèdäþÿH‰D$ H…À„ãH‹|$ è äþÿHc؃û„ç‡æÇD$ƒûtƒû…ØÇD$¿(H�-þè+hÿÿ¿H‰ÆÇ‹çSƒøƒÐÿI‹ÄH‰^HÇF H‰F‹SÇF‰F蘎¿0H‰D$èÙgÿÿH‹T$¿Ç=H‰ÃH‹BH‰C‹BH‰S ‰CH‹Í0ÇCH‰kÇC(H‰T$è‘gÿÿH‹T$¿ Ç@HÇH‹JH‰H‰BH‰Xèegÿÿ¿0ÇH‰Â‹!SH‰T$(ƒøƒÐÿI‹ÄH‰jÇBH‰B‹=R‰BI‹GH‹HH‰L$ègÿÿH‹T$(H‹L$¿Ç=H‰ÃH‹BH‰C‹BH‰S ‰CH‹0H‰KÇCÇC(H‰T$èËfÿÿH‹T$¿(Ç@HÇH‹JH‰H‰BI‹WH‰XH‰T$è–fÿÿH‹T$¿8ÇH‰Ã‹MRƒøƒÐÿI‹ÄH‰SHÇC H‰C‹mQÇC‰CH‹l/H‰T$èBfÿÿH‹T$Ç@HÇH‹JH‰‹L$H‰BH‰XI‹_ ‰HH…Û…Âé%€H‹KH�•GH9Át�I( A¶H‹kƒà<„¿(H‰L$èÇeÿÿH‹L$¿8ÇnI‰Å‹~QƒøƒÐÿI‹ÄI‰MI‰m I‰E‹¢PAÇE A‰EH‹-Ÿ.èzeÿÿ‹L$Ç@HÇH‹uH‰H‹H‰EL‰h‰HH…Û„hHƒ=zM„<ÿÿÿ‹T$…Ò„pI‹GH�=k H‹p1ÀèÊŸI‹GH‹xè�àþÿ‰Åƒø�"f�H‹51M¿ ƒÅèŒâþÿƒýuçH‹sH…ö„<H�=í1Àè|ŸÇD$é¿þÿÿ€¿(è®dÿÿL‹CE‹O¿PÇI‰Å‹bPL‰D$0ƒøD‰L$(ƒÐÿI‹ÄI‰mIÇE H‹kI‰E‹tOAÇEA‰EH‹ q-H‰L$èGdÿÿH‹L$D‹L$(Ç@ L‹D$0HÇH‹yH‰H‹H‰AH‹L$ D‰HH‰HL‰@ H‰h(L‰h0HÇ@8HÇ@@HÇ@HH…Û…˜þÿÿ¿(èØcÿÿ¿8ÇH‰Ã‹”OƒøƒÐÿI‹ÄHÇCHÇC H‰C‹°NÇC‰CH‹-¯,èŠcÿÿ‹L$Ç@HÇH‹UH‰H‰EH‰X‰HM‹?M…ÿ…júÿÿH‹{,H�ŒJH9ІH�PøH‹@øH‰\,H‰M,‹K…À…¿L�-³KèμÿÿǤGö¥K…‡¶�Kƒà<„ ‹ëJH‹= K…À„¹ƒø„ËÇD$`L�d$`L�-SKH�-<¾ÿÿH‹=mKL‰âH‰îèjäþÿ‹D$`ƒÀ‰D$`ƒøvÞÇD$`ÿÿÿÿH‹=CKL‰âH‰îè@äþÿH‹=ÙFè”ÀÿÿD¶5üJD‰ðƒà<„« Aƒæ@tH‹=1KL‰îH‹Gÿ�ðöÕJt8H‹$KH…Ût,€L‰îH‰ßèíçþÿ…Àu ÇãIH‹›øH…ÛuÛH‹ÌHL�%‰ÿP(H‹=KFè6[ÿÿH‹=?F1öƒ2Fè�H‹=êGè…\ÿÿH‹ŽHÿP0L‹=HM…ÿth€I‹G(H�-UH‹˜�H…Ûuë?€H‹[H…Ût/Hƒ{puðAöGX„I‹G(H‰ßL‰îH‹@ÿ�ÈH‹[H…ÛuÑM‹@M…ÿuŸ¶ÐIƒà<tBH‹=JL‰îH‹Gÿ�H‹=þIH�5ÒöèÒÞþÿH…Àtƒ=I‹P(„xƒÊ‰P(Hƒ=gE„šH‹=ÂIH�5*è–ÞþÿH‰ÅH…À„dH‹#GH‹=4EL�%õH…Ût*H‹s0H…ötH‹SènäþÿH‹=E…ÀˆŒH‹[@H…ÛuÖ1öèßàþÿ…ÀˆjHƒ=çDtH‹6GH‹€àH…ÀtÿÐ…Àtè_ìÿÿH‹hFH…ÀuéfDH‹@ H…À„H‹P(H…ÒtêHƒxHuãHƒx`uÜHƒxXuÕH‹J@H9H@uËH‹RHH‰PHëÁf„H‹5H¿ 1íèmÝþÿéÈúÿÿ„1ÿºH�5+èýÚþÿH‰Ç1ÀèSšénúÿÿH‹SH‹KH�=&1ÀH‹²øè1šÇD$étùÿÿƒû…ÿ H‹D$ ¶@ˆD$ƒàÀ<€”À¶À‰D$é ÷ÿÿD‹{(è( …ÀtH�Í@H‰Cpé¬ýÿÿ@L‹3L‰æL‰÷èBÞþÿ…Àu3A¶Eƒà<„ÑH‹ 'LH…É„9 H�y1ÒH‰Þè€lÿÿécýÿÿ‹ÑFƒø„zƒø„‹ÕF…À„" A¸~H‹ˆEH‹€ˆH…À„º D‰D$D‰ÂL‰öH‰ßÿÐD‹D$H…ÀH‰Á„™ ƒ=lF…òüÿÿH‹I0L‹³ø1ÿºH�5Q H‰L$è—ÙþÿH‹L$L‰òH‰ÞH‰Ç1Àè¢Kéµüÿÿ‹ÇG…À„§üÿÿéÿÿÿ‹F…À…ñ¶¥Fƒà<…¸H‹ÓDA½ ÿPP¿PèÛþÿH‹-KHÇD$I‰ÄH…í„È@H�éCE1öL‹8M…ÿ„'f.„A‹‡Œ…ÀˆI‹‡€H…ÀtuIƒ8H‰D$„åH‹\$ë(fDI‹W8D‰ðAƒÆI‰ÄÇCH‹H…Û„¶H‹uH‹{èiÜþÿ…ÀuãE9õwÈC�t-L‰çI‰õHÁæè|ÙþÿI‰Ä므Aƒ¿”tvI‹G8H…Àtmö@(tgHƒ}t`Hƒ|$…oÿÿÿL‰øë€H‹ˆ€H‰L$H…É…NÿÿÿH‹@ H…ÀuâºH�5V1ÿè÷×þÿH‰Ç1Àè JHÇD$@M‹ M…ÿ…ãþÿÿH‹}(1ÛH…ÿtH�(ÿ1öèúƒ‰ÃH‹} E1ÉH…ÿtH�ÿ1öèÞƒH‹} I‰ÁE1ÀH…ÿH‹u‰ÙA•À1ÒHƒ}(ATAV‹E•ÂH‹=EP‹EPè%ÜþÿHƒÄ …À„yH‹mH…í…<þÿÿL‰çL�-ÆþL�5Ë èfÔþÿH‹-BH…í„“fDD‹½ŒE…ÿxtHƒ}8tmH‹�€H…Ûuë_€H‹H…ÛtPD‹cE…äuïL‹cL‰îL‰çè¸Úþÿ…ÀtÜL‹}0ºL‰ö1ÿèÁÖþÿL‰âH‰ÇL‰þ1ÀèÑHH‹H…Ûu¹f„H‹m H…í…sÿÿÿ€=ßCˆ1öƒ=åC@—Æ1ÿè2ÙÿÿH‹ûAÿP8H�=°ÿÿ輯ÿÿ¿è´ÿÿH‹ÛAÿPp1ÒH�5.H�=(HèóÔþÿ€=”D…©H‹÷AH�-0 H…ÛtTH‹3H‹=~C1É1ÒA¸èÙþÿH…Àt ¶@ƒè<vL‹#H‰î1ÿºèÕÕþÿH‰ÇL‰æ1ÀèèGH‹[H…Ûu¯¶C‰ÂƒâC€ú„·‰Â»ƒâ€ú„¤ƒàÃÓþÿ‰ÇèÔþÿL‹s(º1ÿL‰æI‰Åè!ÔþÿL‰êL‰öH‰Ç1Àè1FH‹{0è¸ÛþÿHÇC0H‹=1=é%øÿÿH‹=�AH�5aîèaÖþÿH‰ÅH…À„ …Û…Ê H‹u0H‹=bAèÝÝþÿ…À…œþÿÿ1ÿºH�5W è¢ÓþÿH‰Ç1Àè¸EézþÿÿH‹H(H‹QpH…Ò„1þÿÿH‹=AH‹qhHp0Hr0èŠÝþÿ…À…Iþÿÿ1ÿºH�5ÜH‹-õ>èHÓþÿH‰ÇH‹D$xdH+%(…­H�ĈH‰î1À[]A\A]A^A_é6EL‹-?EM…í„[îÿÿH�»ÿÿ€I‹E H…À„¤1Òf„H‹A‰Ô�RH…ÀuòHcêH�<íè¢Ôþÿ1ÒI‰ÆI‹E H…Àt@I‰ÖH‰ÁH‹H‰HƒÂH…ÀuêH‰ÙºH‰îL‰÷è'ÑþÿI‹I‰E E…ätD‰âL‰ðI�4Ö�H‹H‹HHƒÀH‰ H9ÆuíMcäL‰÷K‹æHÇèwÏþÿM‹mM…í…BÿÿÿéŠíÿÿƒ=~@…óóÿÿécôÿÿH‹5?¿ 1Ûè]Ôþÿéàèÿÿ1ÿºH�5ªèõÑþÿL‰þH‰Ç1ÀèDéìÿÿI‹GA‹L‹pI‹G H‹@Hƒ¸ø„ýÿÿè|ÎþÿºH�5�I‰ÅI‹G H‹@H‹€øH‹@H‹(éûüÿÿH‹+?H‹˜�H…Û„1øÿÿL�%Ïø@L‹+L‰ïè•ÑþÿH�x è<ÓþÿM‰èL‰á¾H‰ÅHÇÂÿÿÿÿH‰Ç1Àè�ÜþÿH‰ÞH‰ïè"°ÿÿH�}ÇE.sizH‰ÞÆGeè °ÿÿH‰ïèCÎþÿH‹[H…Ûušé»÷ÿÿº1öH�=Mëè‚CÿÿH‰ËBH‰Áé¥öÿÿ1öH‰ßèi@ÿÿA‰À…À…ÉöÿÿéÊöÿÿÇD$é0íÿÿI‹GH‹|$ L‹@L‰D$èõÐþÿºH�5é1ÿA‰Åè�ÐþÿH‹T$D‰îH‰Ç1Àè�BÇD$éäìÿÿ¶¹=ƒà<„ØùÿÿH‹=G:H�t$`ÇD$`èUëƒ|$`…´ùÿÿ€%†=é¨ùÿÿºD‰ÆL‰÷è®BÿÿHƒxXH‰Á„ö H�y1ÒH‰ÞH‰L$èMbÿÿH‹L$é,öÿÿL‹= ;M…ÿ„EòÿÿL�%'÷ëf.„M‹@M…ÿ„%òÿÿAöGY uìI‹G(H‹˜�H…ÛtÜ@‹k(÷Å tH‹;L‰æèrÓþÿ…Àt �åÿÿÿ‰k(H‹[H…ÛuÔ몋 ; ž8…Üùÿÿ1ÿºH�5šèUÏþÿH‰Ç1ÀèkAéºùÿÿH‹fo W:fo:H‹ð:óo)L$PÇå@)D$`)T$@H…Ût:fDH‹C0H…Àt#H‰¸@ÿÐHÇ«@…Àt H‹CH‰¤:H‹H…ÛuÌH‹-•:H…í…lH‹-<€ ÿ;1öH‹@0H‰¡8H‹D$hH‹8è[ÿÿH‹<H‹ †8H9H0„H‹=EL�d$`H�-‰9L‰æL�d$Pè,©ÿÿL‰æH‰ïè!©ÿÿH�t$@H�=59è©ÿÿH‹\$`H…Û„ äÿÿH‹K9H‹ 9H…Àu1éïf.„H‹P(H…Òt HƒºØHDÈH‹@@H…À„öPYö tÕA‰ÕAÀíAƒå€â@… H‰Ò7H‹ Ë7H‰ÈE…턟H‰ÏèϨÿÿH‹QHH9HEÁé‡1ÿºH�5aLèŒÍþÿH‰Ç1Àè¢?é âÿÿH‹=;L�%oH�-0èƒØþÿ�Hÿ¸HÓàL�lÿH‹ì:H‹˜�H…ÛtPöC(t:H‹K0H‹C@H�L!êt L!éH9Ê‚’H‹S8HÐL!ètL!êH9Ђ5DH‹[H…Ûu·H‹�:‹€ ƒø†»öÿÿHÁà1íH‰Çè³ÎþÿI‰ÄH‹i:H‹˜�H…Û„Š ‹C(¨t+%=tHƒ{@tH‰èHƒÅHÁàLàH‰Ç@H‹[H…ÛuÅHƒý†E H� M¥ÿÿH‰îL‰çM‰æºE1íE1ÿèôÊþÿL‰d$1ÀHÇD$L‰d$H‰\$ H‰ÃM‹&L‰çèìHÿÿAöD$(t<‹ .6I‹D$@M‹\$8HÓèI�LÿH…ÛtM9ë†>L;l$‚3L‰\$I‰ÍL‰ãIƒÇIƒÆI9ïu¤L‹d$ºH‰îH‹\$ H� â¤ÿÿL‰çèZÊþÿI‹$L‹p0¸H‰ÁL‰òHÁáI‹ L‹q0I9ÖtwHƒÀH9èuàH‰l$H‹l$E1ÿL‰d$I‰ÜH‹]H‰ßè,HÿÿH‹C@M‰ñL‹s0‹ k5M‰èHÓèM�lÿM…ätƒ}uM9ðƒM9È‚IƒÇHƒÅL;|$u©L‹d$L‰çL�-ÍÿH�-öÿè9ÈþÿH‹Ú5H…ÛuéÒôÿÿ„H‹[H…Û„½ôÿÿ‹KP…ÉtìL‹c8H‹C(L‰êH‰îHC L‹31ÿA¸I)ÄL‰áè¤ÒþÿL‰âL‰öH‰Ç1ÀèÄ<ë²1öºH�=µ{è=ÿÿHƒxXI‰Æ„·I�~L‰ñ1ÒH‰ÞèÀ\ÿÿé£íÿÿH�=Ô©ÿÿè¿£ÿÿéþðÿÿH‹ó7H‹-ü7H‹@¶XH…í„Ìëÿÿ€ûL�-ºñL�5ú HÀHƒÀH‰D$fDL‹½�M…ÿ„¿„M‹A¶„Àt#L‰Âf�¶ÈAöNŒu<_…ˆ¶BHƒÂ„ÀuâL‰ÇL‰D$èõÉþÿH�x èœËþÿ€ûL‹D$L‰éˆH‰ÇI‰ÄHÇÂÿÿÿÿHƒßÿ¾1ÀèòÔþÿL‰þL‰çèw¨ÿÿH‹D$ºopL‰þAˆ\$I�|$LàÇ__stf‰PèN¨ÿÿL‰çè†ÆþÿM‹M…ÿ…IÿÿÿH‹­øH…í…!ÿÿÿéÅêÿÿH‹51ÛH‰5Ì4é£óÿÿH‹¸4H‹=ùH‰Ò6H…ÿ„&ßÿÿèl¦ÿÿéßÿÿL‹ƒøH‰î1ÿºL‰D$èÜÈþÿH‹T$H‰ÞH‰Ç1Àèê:é²îÿÿƒâ÷‰P(éƒìÿÿI‹GL‹pèmÅþÿºH�5�úI‰ÅH‹76H‹@H‹(éôóÿÿL‹3ºH‰î1ÿèyÈþÿL‰öH‰Ç1ÀèŒ:égûÿÿ1ÒH�5ž¨ÿÿL�-§5èÒÎþÿé�êÿÿH‹=~1èAÇþÿ‰Çè ÈþÿºH�5Vû1ÿI‰Äè$ÈþÿL‰æH‰Ç1Àè7:�M(€HÇE@éLìÿÿL‹h0L‹% 31ÿºH�5ºýèåÇþÿL‰êL‰æH‰Ç1Àèõ9éôÿÿL‹3ºL‰æé@ÿÿÿL‹º1ÿH‰L$8H�5âûL‰\$0I‹$L‰D$(è—ÇþÿH‰ÞL‰ãAQH‰Ç1ÀAUL‹\$@L‹L$L‹D$8H‹L$HL‰ÚL‰\$H‰L$8è‚9AÇFAZA[L‹l$(édûÿÿÇD$`L�d$`L�-ˆ4H�-q§ÿÿH‹=¢4L‰âH‰îèŸÍþÿƒl$`uçéAéÿÿ…Û„òñÿÿH‹-¬21ÿºH�5ýèñÆþÿH‰ÇH‰î1Àè9éÆñÿÿHƒ=�5„âÿÿ1íé«áÿÿA¶Eƒà<t öC(…3üÿÿ¿(èZKÿÿH� Ó6Ç‹7ƒúƒÒÿH‹ÑHÇ@HÇ@ H‰P‹36Ç@‰PI‰FXéßûÿÿHÇU0éÔ÷ÿÿ1ÿºH�5úõè=ÆþÿH‰îH‰Ç1ÀèP8éo÷ÿÿH‰ ,0H‰ÈH…É„…H‹áH‹t$hH‹8H‰>H‰H;B„ÁH‹QHH‹D$HH‰H‹T$@H‰QHH�QHH9Ñ0„�HƒyH‹D$XH‹t$PH‹å0„PH‹y@HƒÁ@H‰8H‰1H9Ê„fo¸0H‹=±.¾ƒ¡.)\$PèûQÿÿL‰æH‰ïè@ ÿÿL‹D$PM…À„PÛÿÿH‹{0L‹ D0L�P@I‹@(H‹°ØH…öHDðM…É„L‰È1É1ÿë@H…Òt Hƒx@HEÈH‹@HH…Àt"H‹P(H9òuàH‹P@H…Ò…ÌH‹@HH‰ÏH…ÀuÞH�O@H…ÿIDÊH‹H…Àt)@ö@Y@uH‹P(HƒºØ„‰H�H@H‹@@H…ÀuÛI‹P(H‹ºØH…ÿuL‰I‹P@I‰@@I‰ÐM…À…<ÿÿÿéuÚÿÿI‹P@M�X@H…Òuë"„L�Z@H‹R@H…Òt H‹r(H9¾ØtæL‰M‹I‰H‹‡H…Àt¬Iƒë@L‰X@ë¢H‹é|ÿÿÿH‹B@H�J@éoÿÿÿL‰Ñé6ÿÿÿA¶Eƒà<t öC(…ôóÿÿ¿(H‰L$è¥HÿÿH� 4Ç‹b4ƒúƒÒÿH‹ÑH‹L$HÇ@HÇ@ H‰P‹y3Ç@‰PH‰AXé–óÿÿH‹=×,è ÊþÿH‹³.HÇÀ,ëH‹{0è-ËþÿHÇC0H‹[@H…Ûuæé°çÿÿH‹ €.H‰H‰5v.H9ê…­ýÿÿH‰Eé¤ýÿÿH‰5.éeýÿÿH‰ré6ýÿÿL‰çèWÀþÿéüìÿÿI‹ $L‹H�5Œ÷1ÿºL‰L$0L‰D$(H‰L$ L‰\$èôÂþÿL‰éL‰òVL‹D$0H‰Ç1ÀAPL‹L$@L‹D$0H‹t$(èí4_AXé’÷ÿÿH‰ Æ,H…É…ëôÿÿ¾âH�=Írè´5éÕôÿÿH‰À-éóüÿÿE1íëÙèIÖÿÿèdÔÿÿè¿Âþÿff.„@óúUH‰ýE1ÉI‰òSH‰ÓL‰ÒHƒìH‹=p4HƒXH�wHA•ÁE1ÀHƒ`A•ÀHƒÇ@èîÊÿÿH‹G4H�.H‰hPH‰˜€H‹æH9ÐvH�PøH‹@øH‰ÒH‰ÃHƒÄ[]Ãè§Õÿÿ€óúSH‹ô,H…ÛuëMDH‹[@H…Ût?ƒ{uñöCYtëH‹{(H…ÿt:¾èPËþÿ…ÀtÔH‹C(H‹@H‹H…ÀtÄ[Ãf.„H‹±+[ÀH‰ßèHŸH‹{(H…ÿt—ë³ff.„f�óúAWAVAUATUH‰õSH‰ûHƒì8dH‹%(H‰D$(‹p- †-tH‰þ1ÀH�=¤èè1H‹{(¾è­Êþÿ…ÀuH‹{(H�T$¾èfÉþÿ…À„H‹g,H‹€ÀH…Àt;H‰ßA¼ÿÐ…Àt,H‹D$(dH+%(…’HƒÄ8D‰à[]A\A]A^A_ÃfDH‹k(¶EHƒà<„u<……L‹-ž*M…í„�L�=ûçë@M‹mM…í„‹I‹}èrÀþÿH‹}I‰ÄèvÃþÿI‹}L‰þI‰ÆH‰|$èÄþÿH‹|$…Àt9McäL‰öL‰âè{Áþÿ…Àu¯C¶&„Àt<.u¢C€|&aušC€|&u’f.„€MIH‹k(H‰�öCY„×A¼E1ÿL�--L�5ã{ëHfDH‹-L‰òL‰þL‰ïL‰|$ H�L$ ÿ…À„VH‹|$ L‰îH‹Gÿ�À…À„2H‹k(L‰þH‰ïèÉþÿI‰ÇH…À„w¾H‰ÇèòÈþÿ…Àu–H‹k(º1ÿE1äH�5 öè$¿þÿL‰úH‰îH‰Ç1Àè41égÿÿÿ€öCYuH‰ßèú½ÿÿH‹k(fDH‹EH�55,H‰ïÿ�À…À„Ä€KYA¼é þÿÿDè{ÀþÿA‰ÄH‹A*H‹€°H…Àt H‰ßÿÐ…ÀuÌ@L‹k(Aƒü „øAƒü …ÉH…í„ÀH‹{(èŽÆþÿHÇC(H‹{1öD¶5)-L‹%!-L‹-"-èõŽH‹ AÀîH�s*AƒæH9ЃH�PI�äÿ÷ÿÿH‰ì H‹Ý H‰·Ó,·SXH‰-È Ç"/f%þÇÐ-f�âà Ðf‰¢,H‹CH‰‡/è¢ì¶Œ,H�¤)HÇi/ÇÓ.ÀèL‰-m,L ðƒàHÁà I ÄH‹Y L‰%J,H9І`H�PøH‹=n-H‹@øH‰3 H‰$ è½þÿHÇL-ékþÿÿ€ºH�5Dô1ÿE1äè"½þÿL‰þH‰Ç1Àè5/é¦ýÿÿH‹k(ºH�5ô1ÿèù¼þÿH‰ÇH‰î1Àè /D¶cYAÐìAƒäéüÿÿ¶CYC�$ƒàý ЈCYéüÿÿH‹k(éßüÿÿ1ÿºH�5aó褼þÿL‰îH‰Ç1Àè·.éþÿÿºH�5ó1ÿè¼þÿL‰îL�-úýH‰Ç1Àè‹.L‹d$I‹4$H…ötDL‰ï1ÀIƒÄèj.I‹4$H…öuéH�=Óã1ÀèS.é·ýÿÿH�/ö¾F H�=?lèvèQ¼þÿèÌÏÿÿèçÍÿÿ€óúAWI‰×AVI‰ÎAUM‰ÅATUH‰õSH‰ûHƒìL‹'L‰L$€M…ätI‹t$H‰ïèž¿þÿ…ÀuZM‹$$L‰#M…äuã¿8脽þÿH‹T$H‰H‰hL‰xHÇH‹Ç@0L‰pL‰h H‰P(HƒÄ[]A\A]A^A_ÄL‰ãM‹$$뇀óúATI‰ü¿0UH‰õSèè?ÿÿ¿Ç=H‰ÃH‹EH‰C‹EH‰k ‰CH‹-áL‰cÇCÇC(èª?ÿÿÇ@HÇH‹UH‰H‰EH‰X[]A\ÄóúAWA‰÷AVM‰ÆAUI‰ÕATI‰ÌUH‰ýSHƒìH‹Ø,H…ÛuéîfDH‹H…Û„ÜH9kuîD9{…”H‹C H…Àt8I‹”$øH…Òt+H‹@H‹€øH…ÀtH‹HH‹BH‹1H‹8è#¾þÿ…À…Ï¿ è¼þÿHÇH‹S L‰hL‰`L‰pH…Ò„œ�H‰ÑH‹H…ÒuõH‰HƒCHƒÄ[]A\A]A^A_ÃfDH‹mºH�5ñ1ÿèѹþÿHƒÄH‰î[H‰Ç]1ÀA\A]A^A_éÖ+fD¿(膻þÿH‰ÃH‹Ì+H‰kH‰H‰¾+D‰{HÇCHÇC é:ÿÿÿH�K égÿÿÿH‹mºH�5Äðë‚f.„óúAWAVAUA‰õATI‰üUSHƒìH‹o@èï5ÿÿH‹5&¿ èn»þÿI‹4$H�= â1ÀèlxI‹<$è3¹þÿ�Xƒû�G€H‹5Ñ%¿ ƒÃè,»þÿƒûuçI‹D$pH…ÀtH‹ f&H9ˆø„É1ÀE…íL‹5+HDè‹ ³"H‰ê1ÀL‰öM‹„$øH�=-àHÓêL‰ÁèáwI‹D$HH9ètH…Àu2I‹D$pH…ÀtH‹ &H9ˆøtxHƒÄ[]A\A]A^A_Ãf„»#H‹5%¿ èwºþÿƒëuê‹ ,"M‹l$H1ÿºH�5·ßIÓíè¸þÿL‰îH‰Ç1ÀèTwë€f�M‹t$hLp0é9ÿÿÿf�€=-%ˆ;I‹œ$°H…Û„@H‹CH‹'"HÇH‹CH‰ÑL�<ÅH‹"H)ÁI9χLL‹-ç!LøL9è„[H‹ ô!HÈH÷ÑH!ÈH‰ÑH+ ¹!H‰ÆH+5¯!H9ÎHFÐH‰±!H‹H‰Ÿ!1ÒH…Àt„H‹0H‹@‰ÑƒÂI‰tÍH…ÀuêH‹sºL‰ïE1ÿH� tïþÿ蟵þÿ1ÀHƒ{t fDI‹|ÅL‰æèÃA�GI‰ÇH;CræL;-'!vzL;-6!sqL‰-!L‰-!ë2@H‹5‘#¿ 1Ûèí¸þÿé¨ýÿÿH‹= $L‰âH�5gè½þÿ‹ Œ HÓíLõH;-ß(†þÿÿH‰-Ò(HƒÄ[]A\A]A^A_ÃL‰îH�=™ èÔ—ëÀL‰þH�=ˆ èS–H‹” H‹• é’þÿÿ€ ¹ é™þÿÿ@óúAWAVAUATUSHƒìD‹gAƒü‡®H�iïH‰ûH‰õJc¢HÐ>ÿàf„A¼f.„H‹5¡"¿ èÿ·þÿAƒìuéH‹SH‹E81í‹JH‹zƒù„ €?.u 1í€@”ÅH…ÀH�5ÆHDƃù…Ê ÇçH�=€Þ1Àè±tH�=�Þ1Àè£tH�=zÞ1ÀHÇ�èŠtH‹{èQzéa@H‹(½èÊ1ÿÿf.„H‹5á!¿ è?·þÿƒíuêH‹C(L‹c0H…ÀtL`0‹C-ƒø‡Ä H��îHc‚HÐ>ÿà€H‹w1ÀH�=þÝèþsH‹5W H…ötH�=ö1ÀèäsH�=^éw„H‹HƒÄ1ö[]A\A]A^A_éûÿÿ€H‹51!¿ è�¶þÿH‹C@H…ÀtLH‹0H�=KÜ1ÀL�-¨õè~sH‹C@L‹`M…ät�I‹4$L‰ï1ÀèbsM‹d$M…äuèH�= Ü1ÀèJs‹{…ÿ…'H‹sH…ö„BH�=ÁÜ1Àè$s‹sL�5À]…ö…š H�=Rñ1ÀèsL‹c M…ä„G€Aƒ|$‡˜ A‹D$H� LíHc�HÈ>ÿàfDHƒ=ptAD‹%E…À„ H�=AÛ1Àè rH‹IH…Ût@H‰ßH‰îèýÿÿH‹H…ÛuíHƒÄ[]A\A]A^A_ÃfDH�=”ÛHƒÄ1À[]A\A]A^A_éLr@H‹oºH�5MÛ1ÿèѲþÿH‰ÇH‰î1Àè$rH‹{èëwH‹5œHƒÄ¿ []A\A]A^A_éì´þÿ@H‹@½èJ/ÿÿf.„H‹5a¿ è¿´þÿƒíuêH‹C@L‹cHH…ÀtL`0H‹{è ²þÿ‹ ZL‰æH�=Û‰ÅH‹CH‰êL‹@ HÓê1ÀL‰Áè†qH‹s(H…ö„y1ÀH�=ðÚèkqH‹{0è2wH‹5ã¿ èA´þÿ‹ ûH‰èHÓèLàH‰K$é¹þÿÿfDH‹OH�ÛH‹=¦HƒÄ¾1À[]A\A]A^A_éD»þÿ@H‹ ½ èR.ÿÿH�=oÚ1Àèäp@H‹5a¿ 迳þÿƒíuêH‹C L‹kH…ÀtLh0‹ cH‹S1ÀL‰îH�=/ÚHÓêè›pH‹C(H‹H…Òt:H�hL�%ÝÙL�t€¶MH‹=õL‰â1À¾HƒÅ蚺þÿL9õuÝH‹5Ö¿ è4³þÿH‹C‹ êHÓèLèH‰=#é«ýÿÿ„H‹ ¡º ¾H�=SÙL�%ZÙè,ºþÿH‹CH‹H�XH�lH…Ò„Èýÿÿ¶ H‹=^L‰â1À¾HƒÃèºþÿH9ëuÞéžýÿÿf„‹GH�5%ØH‹WH�=ÁÙ…ÀH�ØHDðHƒÄ1À[]A\A]A^A_éyof„H;=„üL‹g8H‹w01ÀH�=çØèMoM…ä„ÌI‹D$0H‹{0H‰D"èÿ¯þÿ‰Åƒø�-@H‹5¡¿ ƒÅèü±þÿƒýuç‹ ±I‹T$@H�=ŽØ1ÀI‹t$0HÓêèænI‹l$8I9l$0t H�5tØ1ÿºèg¯þÿH‰îH‰Ç1ÀèºnH‹{xH…ÿt9H‹º!ǘH‰ÉH�¢!H‰ÃH�tH‰½è>H‹5ù¿ èW±þÿH‹kH…í„Ýûÿÿf.„H‰ïH‰ÞèÕøÿÿH‹mH…íuìéºûÿÿ€H‹OH…É„¦ûÿÿH�!Øéòüÿÿ€H‹ ‘º ¾H�=Øè#¸þÿH‹[H…Ûtf.„H‰ßH‰îèeøÿÿH‹H…ÛuíH‹ NHƒÄº ¾[H�=Ë×]A\A]A^A_éÒ·þÿºH�5"Ö1ÿè/®þÿH‹=D‰á¾H‰Â1Àè¶·þÿºH�5n^1ÿè®þÿHƒÄºÏH�5^[H‰Ç]1ÀA\A]A^A_éÿ€H�=/Ö1Àè*mÇD$ f�I‹D$H…À…"I‹t$H…ö„üH�=“Ö1Àèöl‹L$ …Ét1ÀL‰÷èälƒ|$ t L‰÷1ÀèÓlIƒ<$tH�=²Ö1Àè¾lM‹$$M…ä…Áùÿÿ�L‰÷1Àè¦lH‹5'¿ è…¯þÿH‹[0H…Û„ úÿÿH‰ßH‰îè ÷ÿÿH‹H…ÛuíéóùÿÿH�=;Õ1ÀèblÇD$ é5ÿÿÿDH�=<Õ1ÀèBlÇD$ éÿÿÿDH�=‰ä1Àè"lÇD$ éõþÿÿDH�=Iä1ÀèlÇD$ éÕþÿÿDH�=ÉÔ1ÀèâkÇD$ éµþÿÿDH…ÀH�¶HDÂH‹ËH‰ôÇ¢H‰ÓH�¬H‰Íè ;‹²…Ò„H‹Cƒx„,…í…@Hƒ=d„•H‹wL‹%`H…À„hL`01ÀL‰æH�=æÔè2k…턇öÿÿL‰%3é{öÿÿfDH�=ãÓ1Àè kéÆ÷ÿÿDH‹C H‹0é{ùÿÿ@H�=rë1Àèâjé¹÷ÿÿL� JÓ¸�‹ z½L‹C L‰æH�=ÔÓåH9ÅHBè1ÀH‰êHÓêL‰ÉèžjH‹CƒxtH‹5¿ ès­þÿH‹{èJpH‹5û¿ èY­þÿ‹ HÓíLåH‰-féÔ÷ÿÿL� ÃÒ¸épÿÿÿL� §Ò¸é_ÿÿÿL� ¢Ò¸éNÿÿÿL� €Ò¸é=ÿÿÿDH�=Šê1ÀèúiéÿüÿÿDH‹0H�=¥Ò1ÀL�-ìèØiI‹D$L‹xM…ÿt f.„I‹7L‰ï1Àè³iM‹M…ÿuêH�=rÒ1Àèœié…üÿÿ€H�=9Ò1Àè‚iéÝöÿÿDL‰÷1ÀèniéWöÿÿH‹Cƒx„œôÿÿH�='Ó1ÀèMié—ôÿÿH‹aL‹%JH…À…êýÿÿééýÿÿH‹EL‹%.H…À…ÎýÿÿL‰æH�=ºÒ1ÀèiéÕýÿÿH‰×é5ýÿÿH‹5x¿ 1íèÔ«þÿé¿ùÿÿL‰æH�=„Ò1ÀèÎhé&ôÿÿH‹pH‹=Ö1É1ÒA¸è_¬þÿH…Àt ¶Pƒê€úvH�=RÒ1Àè�héèóÿÿH‹P(H�=4ÒH‹rhHp0H‹BpHp01ÀèihéÁóÿÿH�Mã¾ÜH�=YèL ÇD$ éûÿÿf.„DóúÃff.„óúÃff.„óúÃff.„óú‹ ¾H‹H‹…ÉtH‹rH‹xé_¬þÿ€H‹rH‹xéK¬þÿff.„óúHƒìH�=¶âèü¤þÿH…Àu H‹ÐH‹@hHƒÄÀóúUH�-tSHƒìH9ot(H‹wH‰ûH‹=ƒ1É1ÒA¸è «þÿH…Àt€xtHƒÄ¸[]ÃDH9h(uéH‹SH‹J0H‰P(H)H0ëׄóúAVI‰þAUI‰ÕATI‰ÌUH‰õSHƒì‹\$@H…ö„Ž€~H‰ð„ªM…ätAöD$Fu=H�öI9Ðt öÇ „¸€x„îAöD$D@…A€M€Hf„‹:…Àu-I‹~8L‰L$L‰$H…ÿt\H‹u1É1ÒèÇ«þÿL‹$L‹L$H…ÀtAH‹úL‰áL‰êH‰î‰\$@L‰÷H‹@PHƒÄ[]A\A]A^ÿàH‹F(M…ä…NÿÿÿéQÿÿÿfDHƒÄ¸[]A\A]A^ÃfDöÇ…gÿÿÿH�À I9Є¿Aö@)t`€x„ÚAöD$D@u3é,ÿÿÿf„A€}…%ÿÿÿAöD$D@uA€MéÿÿÿA€M€Héÿÿÿf�A€MéöþÿÿfDAöF„åþÿÿ¶P�Jý€ù†˜€ú…ÌþÿÿH‹P(H‹RH‹’øH…Ò„´þÿÿöBF„ªþÿÿÆ@H‰P(é�þÿÿD¶H�Qÿ€ú‡BÿÿÿH‹P(H…Òt öBF„/ÿÿÿL‰`(é&ÿÿÿH‹P(H‹RH‹’øH…Ò„ÿÿÿöBF„ÿÿÿÆ@H‰P(é÷þÿÿH‹P(H‹’øH…Ò…uÿÿÿé$þÿÿ@óúUH‰õHƒìH…ÿt/H‰îè÷¤þÿH…ÀtHƒBHÇ@HÇ@ HƒÄ]Ã@¾(H‰ïH‰T$èΨþÿH‹T$H…ÀtÚH‰Çë°ff.„@ATH�§ºA‰üºU‰õS1Û뀃Ãû3th‹HƒÀA9Ôuí…íu)HÁãH�^ºH‹5�H‹|èí¥þÿ…íu![]A\Ã@H‹5q¿ èϦþÿëÄDH‹5Y[¿ ]A\鳦þÿ…íu4H‹==Aƒü~H‰þD‰ç蔦þÿë¥f�D‰áH�¥Þ¾1ÀèÊ­þÿë‹H‹5 ¿ èg¦þÿë¹Dóú1ÿéU§ÿÿDóú¶Eƒà<uÃDH‹=�H�5*éE®þÿDóúHƒìH‹=a‹5Ï H‹Ì H‹Gÿ��H‹5³H‹=\èg¬þÿH‹5¨H‹=IHƒÄé §þÿóúSH‰û¿(è(ÿÿH� —NjۃúƒÒÿH‹ÑH‰XHÇ@ H‰P‹ûÇ@‰P[Ãff.„@óúHƒìH‹=¹dH‹%(H‰D$1ÀH…ÿt‹5Žö?u5…öu5è”DÿÿHƒ=ìtrHƒ=êt@H‹D$dH+%(upHƒÄÃ…ötÐ1ÒH‰æèúŸþÿH‹$€8t½‹53H‹=<ë©f�¶5ÜH‹=º @Àî@¶öèEŸþÿH‰†ëœ@H‹=™ è<¡þÿH‰eévÿÿÿè‹¢þÿff.„óúH‹Õ¶H‹RƒÈ@ˆr‹R …ÒtFƒútE‹“ƒút6ƒút5…Òu-H‹ H…ÒuëH‹R@H…ÒtH‹J(H…ÉtîH‹Qƒz tÃ࿈ÃfDóúH‹ÅøH…ÀtGUH‰ýSH�´øHƒìH‹x`H‰îHƒÃèà¢þÿHƒ;tH‰î¿ èÍ£þÿH‹ëØ„HƒÄ[]ÃÄóúAUATI‰üUSHƒìH‹XøH…Ût]1ÀH�-JøL�-¬ÛHƒ»¸t$H‹K`L‰ê¾L‰ç1Àè°ªþÿL‰çÿ“¸¸H‹]HƒÅH…ÛuÅ…Àt HƒÄ[]A\A]úH�5âä1ÿèÓ þÿYL‰ç[H‰Â]¾A\1ÀA]éZªþÿf.„óúUºH�5ÛS‰û1ÿHƒìè‘ þÿH‹=:¾H� ÛH‰Â1ÀèªþÿöÃuƒãu HƒÄ[]úH�5ôÚ1ÿèM þÿ¿H‰Æ1Àè.§þÿH‹G÷H…ÀtÈH�;÷H�-ÝÚ@H‹P`H‰î¿1ÀHƒÃèù¦þÿH‹H…ÀuáHƒÄ[]Ãf.„ºH�5ä1ÿèÝŸþÿ¿H‰Æ1À辦þÿH�5/ä1ÿº軟þÿHƒÄ¿H‰Æ[1À]é–¦þÿfDóúAUI‰ÕºATA‰ôH�5¶äUH‰ý1ÿè{ŸþÿL‰éD‰âH‰îH‰Ç1À舺H�5Ú1ÿèUŸþÿH‰Ç1Àèk¿è!§þÿ�AWI‰ÿH‰×AVI‰öAUATUSH�ìȉL$H�´$àH�”$¸dH‹%(H‰„$¸1ÀH‰ð@ÇHƒÀH9ÂuñA¶L‰òE1ÀL�%¨ßL�¡öIÇÅüþñÿ‰È„„Àth<%t „¶BHƒÂ<%t „Àuð<%uÜ@¶BL�R<0„¶Ø¾èE‰ÁAö\…½I�R„ÀtƒèC<3‡â¶ÀIcƒLØ>ÿàE…ÀtYA�@ÿH�äöH�@H�Lƃ>‡ž ‹Hc‚HÐ>ÿà‹ƒø/‡UA‰ÀƒÀLG‰I‹H‰HƒÆH9ñuÂA¶ÇD$E1í„É„L‰ó€ù%„,@H‰Ý¶KHƒÃ€ù%t„ÉuìL9ótH‰ÚL‰ùL‰÷¾L)òI‰Þè.§þÿ¶M€ù%„é„Éu­‹|$…ÿ…­‹L$…É…h H‹„$¸dH+%(…[ H�ÄÈ[]A\A]A^A_Ã@D‹Aƒø/‡ L‹WE‰ÁA�@‰O‹ L‰ƒø/‡ A‰ÁA�@‰O‹ L‰Nƒø/‡å AƒÀLÐD‰H‹H‰FéëþÿÿfD‹ƒø/‡•A‰ÀƒÀLG‰A‹‰éÄþÿÿ€L‹GI�@H‰Gé¦þÿÿ€A¾NI�^‰È€ù0„˜¶ÑH�=ZÝD‰íöWtA€~$u�iÏA¾NI�^‰È@L�sÿà@L‹GI�@H‰Géfÿÿÿ€H‹GI‰ÀHƒÀH‰GM‹L‰I‰ÀHƒÀH‰GM‹L‰FL�@L‰GéÿÿÿIƒÆ¹0H�_×¾L‰ÿ1Àè}¥þÿ¶KéCþÿÿ‹5†…ö„EþÿÿÇPé6þÿÿ€z$…9ýÿÿ¶BD�MÏL�Ré(ýÿÿI‰ÞL‰þ¿%è|ŸþÿA¶éòýÿÿHƒÂA¶Béµüÿÿ¸Aƒù‡‡ O� IAƒÀB‰„Ìà¶éŽüÿÿè �þÿAƒÅ‰D$H�DmHÁàH‹¼èL‹¤àH‹„ðH‰|$H‰D$M…ä„ÐL‰çèu™þÿ…À„I‹´$°I‹D$jL‰çH�T$ÿàH�DmL‰þAƒÅH‹¼Äàèšþÿ¶KéûÿÿH�DmH�þÓ‹ŒÄàé3ÿÿÿH�DmH�l$pºd¾L‹„ÄàH� (¿H‰ï1ÀAƒÅèÆ£þÿ¶D$p<0u ¶EHƒÅ<0tô<L‰þHƒÝH‰ïè�™þÿ¶Ké¦úÿÿÇD$¶Ké•úÿÿH‹=ÏL‰þèg™þÿ¶Ké}úÿÿH�DmAƒÅH�²¾H‹ŒÄà¾L‰ÿ1À臡þÿ¶KéMúÿÿH�DmL�d$pºd¾L‹„ÄàH� o¾L‰ç1ÀAƒÅè £þÿ¶D$p<0uA¶D$IƒÄ<0tò<IƒÜL‰ç踗þÿ‰ÅƒøL‰þ¿ ƒÅèa›þÿƒýuëL‰áH�RÒégÿÿÿè™þÿ‰ÇèA þÿL‰þH‰Çè–˜þÿ¶Ké¬ùÿÿL‰âH�5AÒL‰ÿ1Àè¹`H‹L$L‰ÿ1ÀH‹T$H�5.Òèž`‹|$èõ˜þÿH‹=æ HÇë è”þÿH‹=× HÇÄ è”þÿHǼ éêúÿÿ‹T$…Ò„Fùÿÿ‹m…À„8ùÿÿÇ7é)ùÿÿH�DmH�úÑH‹ŒÄàé�þÿÿH‹v H…ÀtHƒ=a t L9à„TºH�5OÑ1ÿH‰L$ èN–þÿH‹L$ L‰âL‰ÿH‰Æ1ÀèÉ_H‹= L‰%# èV“þÿH‹|$@HÇþ H…ÿt è<˜þÿH‰í H‹=î 1íè'“þÿH‹|$8è˜þÿH‰Ö é[ûÿÿL�GH�KÑL‰ÿ1À¾èdŸþÿH‹L$H‹T$L‰ÿ1ÀH�5ÉÐè9_é”ûÿÿH�DmL‰þL�sH‹¬ÄàH‹}è×–þÿH‹½øH…ÿ„nüÿÿH‹GH‰îÿ�H�‰ÐH‰ÁH…À„Nüÿÿ¾L‰ÿ1Àèèžþÿé:üÿÿH�DmH�¢ÐH‹ŒÄàé üÿÿH‹T$8€;G…XÿÿÿH…Ò„OÿÿÿH�5#ÐL‰ÿ1Àè’^éíúÿÿ1ÿºH�5OÚèê”þÿL‰æH‰Ç1ÀèýéÛùÿÿH�DmL�sH‹”ÄàH…Ò„ÀH‹‚ØL‹H…Àt ö@I„ºL‰þL‰Çèê•þÿ¶Ké÷ÿÿH�²ò¾ÅH�=\ÏèÙôÿÿH�DmL�sL‹¤ÄàM…ä„ÞA€<$„ÓD‹uE…À„”H‹=ݺL‰æè�›þÿH‰ÅH…À„tL‰þH‰Çèi•þÿH‰ïèA‘þÿ¶KéwöÿÿH�DmL�sH‹„ÄàH…À„‚H‹HH…É„ØúÿÿD‹@H�.ÏL‰ÿ1À¾èg�þÿé¹úÿÿH�DmL‰ÿL�sH‹„ÄàH‹pH‹HH‹L‹F H�5ÞÎH‹H‹P1Àè]¶Kéðõÿÿ1ÿºH�5ÑÎèn“þÿ¾L‰ÿH‰Â1ÀèüœþÿéNúÿÿH�DmL�sH‹„ÄàH‹P(H…ÒtH‹’ØH…Òt öBI„æH‹xL‰þèk”þÿ¶Ké�õÿÿH‹=óH‹t$@H…ÿA”ÀH…ö”ÀA8À…ŠüÿÿH…ötOè’þÿH‹L$8…À…süÿÿH‹=ÂH‰ÎH‰L$ 襖þÿH‹L$ …À‰Å„0øÿÿéKüÿÿ�L‰þL‰çèõ“þÿ¶Ké õÿÿH‹=…H‰ÖH‰T$(H‰T$ èc–þÿH‹T$ …À‰Å„OýÿÿH‰Ñéüÿÿ‹æH��ƒøƒÐÿH‹ ‹‰D$DH�D$@éWþÿÿL‹@H‹ H�r;L‰ÿ1ÀèÄ›þÿéùÿÿH‹Gé öÿÿH‹Géòõÿÿ¿èã™þÿè>’þÿH‹ §ýH�Íé”üÿÿH‹H�Íë¬H�ð¾¨H�=ªÌè'òÿÿ€óúUH‰õS‰ûH�ìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀdH‹%(H‰D$1ÀH�„$ðÇ$H‰D$H�D$ ÇD$0H‰D$…Û„©ƒû„È1ÿºH�5˜Ìè‘þÿƒûH‰êH�=5BH‰ÆH�kÌH� <HEøE1À1Àè9’þÿH‹=‚ôH‰ÅèZ–þÿH‰â¹H‰îH‹=¨ùèsñÿÿH‹=œùè7–þÿH‰ïèÏ�þÿH‹D$dH+%(…‹H�ÄØ1À[]ÀH‹=!ôH‰îH‰â1Éè$ñÿÿH‹5 ô¿ èC”þÿë²�1ÿºH�5ÂËè=�þÿ1ÉH‰îH�R;H‰Ç1À臑þÿH‹=ÐóH‰â¹H‰ÅH‰ÆèÍðÿÿH‰ïè5�þÿéaÿÿÿè;�þÿff.„óúH�ìØI‰úH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀdH‹%(H‰D$1ÀH‹='ó1ÉH‰âH�„$àL‰ÖÇ$H‰D$H�D$ H‰D$ÇD$0èðÿÿH‹D$dH+%(uH�ÄØÃèg�þÿ€óúHƒìH�5«Ê1ÿºè�þÿ1öHƒÄH‰Ç1ÀéÿÿÿDóúHƒìH�5�Ê1ÿºèÕŽþÿ1öHƒÄH‰Ç1ÀéÕþÿÿDAVAUATUH‰ýSH‰óH�5uFèf–þÿI‰ÄH…À„ŸE1öHƒ=Ït*H‰ïè%ŽþÿH‰ÇI‰Å誎þÿI‰ÀHc¬D9À|KL‰ïè“‹þÿD‰3‹¦ú…Àt ºH�5%Ê1ÿèCŽþÿH‰îH‰Ç1ÀèFþÿÿ[L‰à]A\A]A^Ãf.„Lè€8/u­ÆH‹=NL‰îE1öè3�þÿ…ÀA”Æë�ƒ=@út¼ºH�5¥Éëš@óúUH‰ýH�ìÐH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀdH‹%(H‰D$1ÀH‹=ñèñ’þÿH‰â¹H‰îH‹=?öH�„$àÇ$H‰D$H�D$ ÇD$0H‰D$èäíÿÿH‹= ö訒þÿH‹D$dH+%(u H�ÄÐ]Ãè:�þÿf.„óúATºA‰ôH�5?=UH‰ý1ÿHƒìèÌŒþÿHƒÄD‰âH‰îH‰Ç]1ÀA\éÕþÿÿDóúH‰øH…ÿt f�g þÃDUH‰÷¾(H‰ÕèG�þÿH…À„˜þÿf�` þ]ÃfDóúUH‰õSH‰ûHƒìH‹HH…ÿt'¹ºH‰îèõ�þÿH…ÀtHHƒÄ[]Ãf„¿(èŽþÿ¹=ºH‹5�ÙH‰CHH‰Çè9�þÿ…Àt5H‹{H먀1ÿºH�5ê$èå‹þÿHƒÄH‰Ç[1À]éõýÿÿD1ÿºH�5#轋þÿH‰Ç1ÀèÓýÿÿë¬�óúAWAVAUATUH‰ÕSHƒì¶WöÂ@…õI‰Î¶NH‰ðM‰Å€ù„ø€ù…‘1ÛL�%æòE1ÿ„ÒxFI‹L$pH�£ñH…É@•ÆH9Ñ”Á@„Ît I9Ô…ŸI‹NpH9Ñ@”ÆH…É•Á@„Ît I9Ö…€L‹@ºH�5ÉÐ1ÿL‰D$H…í„ùèôŠþÿL‹D$L‰éL‰òH‰ÇH‰î1ÀèüüÿÿM…ÿt&ºH�5ÏÆ1ÿèÄŠþÿH‰ÙL‰âL‰þH‰Ç1ÀèÑüÿÿ1ÀH�=É5èÃüÿÿ‹ø…ÀtYHƒÄ[]A\A]A^A_Ãf.„H‹^0L‹f(H� ÁðL9ÃM‹¼$ø@”ÇI9Ì@”Æ@„÷„ïþÿÿI9Î…æþÿÿ뮀ºH�5Ð1ÿè-ŠþÿH‰Ç1ÀèCüÿÿÇ�÷HƒÄ[]A\A]A^A_Ãf.„èû‰þÿL‹D$H‰ÙL‰âH‰ÇL‰þ1Àèüÿÿé-ÿÿÿH�7è¾H�=½Åè&êÿÿfDóú‹Zö…À„îAUH‰ðATUH‰Õ‰Ê�IýSHƒìƒùL‹f¶v–Áƒú@”Ç ùƒþtm�~ýƒÿ†!„É…±ƒþ…€E1íƒú„ܺH�5¬91ÿèA‰þÿºwH�5'ÅH‰Ç1ÀèKûÿÿM…턪ºH�5ÎÏë0@H‹p(H‹X0H‹vL‹®ø„ÉtyºH�5ÏM…í„´1ÿè݈þÿL‰éL‰âH‰ÇHƒÄH‰î1À[]A\A]éàúÿÿÀE1í1ÿºH�5 9袈þÿºjH�5ˆÄH‰Ç1Àè¬úÿÿë‘f.„ƒú…œºI9ØsmH�5¦ÏM…í…yÿÿÿH�5ÞÏë+@H‹@(L‹¨ø„ÉuŒƒú„ ÿÿÿéßþÿÿH�5¡Î1ÿè"ˆþÿHƒÄL‰âH‰î[H‰Ç]1ÀA\A]é(úÿÿ„v^H�5¿ÏM…í… ÿÿÿH�5÷Ïë¼D1ÛE1íºH�5381ÿL‰D$èÇþÿº‚H�5©ÃH‰Ç1ÀèÍùÿÿL‹D$é,ÿÿÿM…ít;1ÿH�5âÏè�‡þÿL‰áL‰êH‰Çé«þÿÿ€ºH�5lÎé>ÿÿÿ€H�5áÏé+ÿÿÿ@óúAWAVA‰ÖAUI‰ÍATM‰ÄUL‰ÍSH‰óHƒì‹Éó…ÒuU‹»ó…ÀuHƒÄ[]A\A]A^A_Ã@1ÒI‰èL‰áD‰öH‰ßè%Ìÿÿ€{uÔL‰k(ÆCHƒÄ[]A\A]A^A_ÄL‹~1ÿºH�5vÏ蹆þÿH‰ÇL‰þ1ÀèÌøÿÿë…f.„óúAWA‰÷AVM‰ÎAUM‰ÅATI‰ÔUH‰ÍSH‰ûHƒì(‹=ódH‹%(H‰D$1À…ÿ…Þ‹5ôò…öu$H‹D$dH+%(…ŠHƒÄ([]A\A]A^A_Ã�H‹{P¾J貆þÿH…À„ùH‹E¶@„À„ÙˆD$ H�t$ H�D$ E…ÿ„šH¹__CTOR_LÇ@IST_H‰¹_f‰H H‹{(A¸¹ºè̈þÿI‰ÇH…À„ØA€u AÆGI‰o(M‰ðL‰éL‰â¾JL‰ÿèºÊÿÿé1ÿÿÿD1ÿºH�5*Îèm…þÿL‰æH‰Ç1Àè€÷ÿÿéýþÿÿH¹__DTOR_Lº_Ç@IST_H‰f‰P éaÿÿÿfDH�t$ H‰ðé(ÿÿÿ¶ƒà<t¾JH‰ïè™…þÿH…À…çþÿÿ1ÿºH�5ÚÍèí„þÿH‰Ç1Àè÷ÿÿéÅþÿÿfD1ÿºH�5ÂèÅ„þÿH‰Ç1ÀèÛöÿÿéÿÿÿèñ„þÿ�ATI‰üH‰×UH‰ÕSH‰óHƒì0dH‹%(H‰D$(1Àè÷‚þÿ…ÀtSH‹…°H‰âH�5âH‰ïÇ$H‰D$L‰d$H‰\$èTŽþÿ‹$H‹T$(dH+%(u3HƒÄ0[]A\Ä1ÿºH�5‚Éè„þÿH‰îH‰Ç1Àè0öÿÿë‹èI„þÿf„óúAWM‰ÏAVI‰ÖAUM‰ÅATI‰ôUH‰ÍSH‰ûHƒì‹†ð…ÀuH�5è¿L‰ç裇þÿ…À„ÛM…ítFºH�5.¿1ÿ裃þÿHƒÄM‰áL‰ù[I‰ÀL‰êH‰îH�=¾¿]1ÀA\A]A^A_é˜õÿÿ„H…í„—M…ötEH‰êL‰öL‰çè¤þÿÿ…ÀupH‹[`H…Ût*€H9ÝtH‰ÚL‰öL‰çè}þÿÿ…ÀuIH‹›øH…ÛuݺH�5•¾1ÿè ƒþÿHƒÄL‰áH‰î[H‰Â]1ÀA\H�=>¿A]A^A_éõÿÿDHƒÄ[]A\A]A^A_Ã�ºH�5H¾1ÿ轂þÿHƒÄL‰âH�=ó¾[H‰Æ]1ÀA\A]A^A_é»ôÿÿff.„óú‹…ÀtÃDAWI‰×AVAUI‰õATI‰üUSHƒìèTŒþÿH‰ÅH…Àxu2HƒÄ[]A\A]A^A_ÃH�5aË1ÿºè5‚þÿL‰æH‰Ç1ÀèHôÿÿH‰ïè„þÿI‹OL‰îL‰çH‰ÂH‰D$è ‹þÿH‰ÃH…ÀxiH‹D$L�4ØH‰ÃL9ðr3ë9fDH‹EH…ÀtH‹H…ÀtI‹wH‹x誅þÿ…ÀtVHƒÃI9ÞvH‹+H…íuÍH‹|$HƒÄ[]A\A]A^A_éÍ~þÿD1ÿºH�5ªÊè…�þÿL‰æH‰Ç1Àè˜óÿÿérÿÿÿI‹_ºH�5ä¼1ÿèY�þÿH‹ML‰êL‰æI‰ÀI‰ÙH�=x½1Àè[óÿÿAÇézÿÿÿff.„@óúAWM‰ÇAVI‰ÖAUI‰ÍATI‰ôUH‰ýSD‰ËHƒìH‹HH…ÿt#1É1Òèš…þÿH…ÀtHƒÄ[]A\A]A^A_ÃfD‹rí…À…òH‹-öH…ítH‰îL‰çè‹„þÿ…ÀtwÇÝõH‰ïèÅ}þÿL‰ç轂þÿH‰Îõ‹ÀõM…ít_ƒø‡²ºH�5®É…ÛuH�5ËÉ1ÿèT€þÿHƒÄM‰àL‰ù[H‰Ç]L‰êA\L‰öA]1ÀA^A_éPòÿÿ‹jõƒÀ‰aõM…íu¡ƒø‡ƒºH�5Ê…ÛuH�5DÊ1ÿèõþÿHƒÄL‰âL‰ö[H‰Ç]1ÀA\A]A^A_é÷ñÿÿ€L‰æH‰ïèUóÿÿéþþÿÿƒøtS…Û„ÎþÿÿHƒÄH�=%»1À[]A\A]A^A_é·ñÿÿ€ƒøuкH�5÷É…Û…{ÿÿÿH�5 ÊéoÿÿÿºH�5üÈ…Û…ùþÿÿH�5%Ééíþÿÿ„óúAWAVI‰ÖAUATI‰ÌUSHƒìƒ=ÕÌÿH‹T$@H‹L$H„1ÀI‰ýH‰óL‰ÎH�=\»L‰Åèñÿÿ‹¥Ì…Àx�Pÿ‰˜Ì„.H…Ûu-1ÿºH�5“ÊèÆ~þÿL‰òL‰æH‰Ç1ÀèÖðÿÿéØ�H‹[(¶C�Pú€úvð<w$„À…”H�ÕܾöH�=sºèÜÞÿÿ@ƒè<wÝL‹s(H�¶äI9Æ„ÍM‹¾ø1ÿL‹kºH�5´Éè?~þÿM‰øL‰ñL‰æH‰ÇL‰ê1ÀèIðÿÿH…ítPH‰îH�=}º1Àè3ðÿÿë=�HƒÄ[]A\A]A^A_Ã�L‹kºH�5 É1ÿèé}þÿL‰æH‰ÇL‰ê1ÀèùïÿÿH…íu°H�=î(HƒÄ1À[]A\A]A^A_éØïÿÿ„1ÿºH�5’Èè�}þÿH‰ÇëË„M‹}Pé1ÿÿÿ€óúAU1ÿM‰ÅATI‰ÌUH‰ÕºSH‰óH�5TÉHƒìèS}þÿHƒÄI‰ØL‰é[H‰ÇL‰âH‰î1À]A\A]éSïÿÿóúAU1ÿM‰ÅATI‰ÌUH‰ÕºSH‰óH�5$ÉHƒìè}þÿHƒÄI‰ØL‰é[H‰ÇL‰âH‰î1À]A\A]éïÿÿóúAVAUATUSH…ö„òH‹8L‹vH‰ÍM‰ÅH…ÿtG1É1ÒL‰öè\�þÿH…Àt6H�ÀáºH�5û¸I9ÅtH�5 ¹1ÿè�|þÿL‰òH‰îH‰Ç1Àè‘îÿÿ‹Çê…Òu Hƒ=ïtv‹�òL�%`ò…À„CL‰ö1ɺL‰çèæ€þÿI‰ÆH…À„bI‹^ H…Ûué“@H‹H…Û„ƒH;kuîH�áI9Å„AöE)„Ô€K¸[]A\A]A^Ë=/ê…ÿu Hƒ=‡îtÞ‹5÷ñ…ötÔD‰ÍE…É…WD‹ÐñL‹%ÑðH‹ÒðE…Û„H‹šñA�SÿH‰ß1ÉD‹ªñE1íL�HM�ÑL‰â@H‹0H…ö„ÂLÇf„H‹F H…ÀtH�JH‹H‰ÊH�IH…Àuñ¹H‹6I�8H…ö„|H‰ÇëÇ€K¸[]A\A]A^ú(H�5™ÕÿÿL‰çèÑ„þÿ…À„Çñé’þÿÿ€K¸[]A\A]A^Ã1ÿºH�5JÇèµzþÿH‰Ç1ÀèËìÿÿé|þÿÿfDA½L‰ÈM9ÊtoIƒÁé!ÿÿÿ¾L‰çè<~þÿH‰ÃH…À„ÅI‹F H‰I‰^ €cøH‰kéRþÿÿAƒù„šAƒù…’H‹=]ïèhwþÿ¸HÇHïéAþÿÿE„í„`H‰=Kï„É„‚H‰4ïD‰ØHÁàH×L�%ðH‰ïHÇèÄ{þÿ¾L‰çH‰õîè�}þÿH‰áîH…À„H‹áîH‹ ÒîH‹5»ïH‰ÚH‰Ïè@~þÿ‹5Æï‹¼ïH‰ÁH‹šïHÙ‰5‰îH‹²îH‹5{ïH‰|î‰rîHËH‰5\î…Ò„mýÿÿ‰êL‹,ÐM…ít^f„‹jïH‰ÏL‰îèÏ}þÿH‰Á‹VïHÁI‹E H…Àt&f.„óoHƒÃCèH‹PH‰SøH‹H…ÀuäM‹mM…íu«ƒÅ;- ïƒõüÿÿI‹$ë‚1ÿºH�5 ÅèÃxþÿH‰Ç1ÀèÙêÿÿéËýÿÿH‹5ÍíH…ö„0‹ªíH‹¿í1íL�%žîH‹=—íH‹¸í‰¢î‹|íL�,H‰=yîL뉌îèû|þÿH‹Tí‹ vîH‰Oî…ÉtqI‹$‰èH‹ ÂH…ÉtW@‹ZîL‰îH‰Ïè¿|þÿH‰Á‹FîIÅH‹A H…Àt%f.„óo HƒÃH‹SøH‰PH‹H…ÀuåH‹ H…Éu­ƒÅ;-üír�H‹5ãìH‹=äíèO~þÿévýÿÿH‰ßéŸýÿÿ1ÀéÉûÿÿ1ÿºH�59´è˜wþÿH‰Ç1Àè®éÿÿéýÿÿL‰âé}ýÿÿL‰âH‰ß1ÀéwýÿÿH�=}íè˜xþÿ¸Ç‘íérûÿÿ@óúAWAVAUATUSH‰ûHƒì‹odH‹%(H‰D$1Àƒý „ï‡)ƒý„€ƒý…ïH‹_·C,f%€f=„ÙöC)€…ÏL‹cpH‹|äI9„$øt)ºH�5*'1ÿè¿vþÿºÔH�5l³H‰Ç1ÀèÉèÿÿA‹D$(öÄu %=u{H‹=,äL‰æè”€þÿH‰ÅH…À„ö‹C(%"=„ÅÇEH‰] L9cpt)ºH�5¬&1ÿèAvþÿºíH�5î²H‰Ç1ÀèKèÿÿH‹C@H‰EH‹ChH‰EH‹D$dH+%(…îHƒÄ[]A\A]A^A_ÃDƒý uÓH‹o@H‹€ãH9…øt)ºH�5/&1ÿèÄuþÿº¡H�5q²H‰Ç1ÀèÎçÿÿ‹E(öÄu %=u‚H‹=3ãH‰îè›þÿH‰ÅH…À„‡H‹CHH‹{H‰Eè¾uþÿ¿‰ÀH‰Eè>wþÿ‹SH‹K8H‰E ‰H‹S(H‰HH…Ò„xÇEH‰PéÿÿÿH‹o H‹ÅâH9…øt)ºH�5t%1ÿè uþÿºüH�5¶±H‰Ç1Àèçÿÿ‹E(öÄu%=…ÃþÿÿH‹=tâH‰îèÜ~þÿH‰ÅH…À„ H‹CÇEH‰EH‹CH‰EH‹C(H�PH‹H‰U(‰E ézþÿÿf�L‹o(H‹%âI9…øt)ºH�5Ô$1ÿèitþÿº3H�5±H‰Ç1ÀèsæÿÿA‹E(öÄu%=…"þÿÿH‹=ÓáL‰îè;~þÿI‰ÄH…À„×H‹C0¿AÇD$I‰D$èãuþÿL‹s I‰D$(H‹“áH‹Pƒz ‡ÅI9…øt)ºH�54$1ÿèÉsþÿºgH�5v°H‰Ç1ÀèÓåÿÿ‹C=„wc=u4H‹5áI‹t$(L‰÷½H‹@ÿPH¸I‰D$A‰l$ éUýÿÿD=‡íH�†Ñ¾’H�=°è¥ÓÿÿD=uÜI‹D$(½Dˆ0¸ë©Döjà@….ÿÿÿ‹S�ú„¤‡N�ú…I‰çL‰÷L‰þè4xþÿL‰ÿè<{þÿI‰ÆH‹ràéèþÿÿDH‹S ÇEH‹5VàH9²ø„pýÿÿH‹rpHJhH‰HH‰pé|üÿÿ@H‹)àI‹t$(L‰÷H‹@ÿP`¸éôþÿÿH‹ àI‹t$(L‰÷½H‹@ÿP0¸éÏþÿÿ1ÿºH�5ò¾è5rþÿH‰Ç1ÀèKäÿÿéþÿÿfD1ÿºH�5ʾè rþÿH‰Ç1Àè#äÿÿé>ýÿÿfD1ÿºH�5¢¾èåqþÿH‰Ç1ÀèûãÿÿéWüÿÿ�ú‡�H�óϾcH�=p®èÒÿÿf��ú„¿ýÿÿëØf�H�»ÇEH‰E(ÇE éWûÿÿ1ÿºH�5,¾èoqþÿH‰Ç1Àè…ãÿÿéèúÿÿI‰çL‰÷L‰þèzþÿL‰ÿèªvþÿI‰ÆH‹àÞéVýÿÿI‰çL‰÷L‰þè=xþÿL‰ÿèÅqþÿI‰ÆH‹»Þé1ýÿÿèQqþÿ�óúAUATUH‰ýSH�ÜËHƒìH…ÿt=‹Uƒú w ‰ÐHcƒHØ>ÿàºH�57!1ÿèÌpþÿºãH�5–­H‰Ç1ÀèÖâÿÿfïÀ)Ú)$ÚHƒÄ[]A\A]Ãf„H‹u€>.„kE1äƒú„7H‹} H‰5ÌÙHÇÉÙèLÿÿÿ‹¦Ùƒèƒø†*Hƒ=¢Ù…HÇ‘Ùë‹€H�qÖH9ºÙ„¤H‹EÇŽÙHÇ{ÙH‰dÙH‹E H‰aÙHƒÄ[]A\A]ÃfDH‹}è¿þÿÿ‹QÙ…Û„A�}1„´H‹} L‹-ÙL‹%"Ùè�þÿÿ!Ù„íþÿÿH‹ ÙL9ât=H…Ò„$M…ä„ H‹B0HØØH�±ÕH‰ÚØMl$0I‰ÄÇ Ø‹U�úF�™�ú Ž� �ê ƒú9‡~H� ÊHc‘HÈ>ÿàDH‹}L‹%eØèèýÿÿ‹zØL‰%SØ…À„?þÿÿH‹E Hƒ=GØHDE(H‰ÅH…À…Óýÿÿé þÿÿ�H‹}è§ýÿÿD‹8ØE…Ò„þÿÿ‹E=&„)�ãƒø~„’Ž´=…éD‹ Â×E…É„éH‹ Ò×H‹ë×HƒùvH�Dÿ1ÒH÷ñH¯Á€H‹Ù×LJ×Ç­×H+B0H‰š×H‰ƒ×HÇ€×é_ýÿÿfïÀ)e×)n׋E=P�è=*Ž}-+ƒø%‡WH�°ÉHc‚HÐ>ÿàfDH‹}è—üÿÿƒ=ðÖ…öüÿÿHƒ=×…èüÿÿH‹u H�=MªHƒÄ1À[]A\A]é�ßÿÿD‹¹ÖE…Û„ªüÿÿH‹EH‹PpH‹@hHE ÇÎÖH‰¯ÖHǬÖH‰­Öé„üÿÿ„ƒ}„fM…ä„%D‹ŽÖE…Û„ÅHƒ=uÖ„ØL‹m1ɺH�=ÍÞL‰îè…qþÿH‰ÃH…À„©AöD$uA¶D$ƒè<w€K!‹ÆÕH� óÒH‰KˆC ‹æÕƒø„uƒø„D‹ÖÕH‹=÷ÕH‹àÕD‹MI‰|$(D‹U(I‰D$01ÀE…É”ÀƒâÁà Áâ f  ÐA·T$f�âã ÐfA‰D$E…ÒtH‹=ÈÙL‰âH�5nÙH‹Gÿ�0H‹uÕH�BÿHƒøýwH‹=œÙL‰æH‹Gÿ�ÐH‹PÕ€Hƒ=-Õ…›ûÿÿé.ûÿÿf�ƒø!„ǃø-….H÷'Õéûÿÿf�=`„u=g…üH‹Õ1ÿHÇÁÿÿÿÿA¸@H‰ÂH�qHÑêHƒø†Œ¨AEøH‰ñH‰ÐëÞfD=…ÝH‹U€:.…±€z…§H‹ÏÔH‹¸ÔÇvÔÇœÔH+B0H‰‰ÔH‰rÔéYúÿÿD=‚…}L‹eH�5ò§L‰çèºnþÿ…À„&H�5ç§L‰çè£nþÿ…À…[Ç9ÔH‹Â×H‰Ôéúùÿÿ=@…D‹ÜÓE…À…uÇþÓéÍùÿÿ�º1ÿH�5Æè]jþÿº“H‰ÇHƒÄH�5 §1À[]A\A]é]ÜÿÿDA€|$…HþÿÿHÇ‘ÓÇŸÓH‹°ÓH‰‰Óéýÿÿ@1ÀHƒ=fÓ”ÀH‰\ÓéCùÿÿ€H…Ò…qþÿÿHÇLÓHƒÁ…ÿHEñH‰5+ÓéùÿÿfDÇEéŽüÿÿ@º1ÿH�5öè�iþÿº H‰Çé+ÿÿÿ‹ ÊÒ…É„ÎøÿÿH‹}1Ò1öèõÛþÿH…À„7ö€˜„«øÿÿH‹x`H…ÿ„Üè-øÿÿƒ=¾Ò„ŒøÿÿH‹©ÒH…Àt H‹@0H‰ÒH�bÏÇ`ÒH‰�ÒéXøÿÿ@H÷aÒéHøÿÿ@H‹uH‹=UÖ1ɺA¸èÛkþÿI‰ÄH…À…²ûÿÿL‹m1ÿºH�5ݶè¨hþÿH‰ÇL‰î1Àè»Úÿÿé‰ûÿÿfDº1ÿH�5æè}hþÿº H‰Çéþÿÿ‹=ºÑ…ÿ„âýÿÿH�«ÎH9ôÑ…Îýÿÿ‹ðÑ�Pÿƒú†?ƒèƒø†Œ÷ÿÿé«ýÿÿ‹rÑ…Ò„v÷ÿÿH‹}1Ò1öè�ÚþÿH…À„ H‹p8H…ö„$ �}A„@‹Nx¸HÓà€ÇVÑH‰7ÑHÇ4ÑHÇ1Ñé÷ÿÿH‹µÔÇ#ÑH‰ÑéëöÿÿH‹=(ÕA¹E1À¹H�5ÃÔèÎeþÿH‰ÃH…À„º ¶@�Pý€ú†Ü ‹œÐƒútƒú„› ‹=ŒÐ…ÿ„� L‹eºH�5èµ1ÿègþÿL‰âH‰îH‰Ç1Àè)ÙÿÿHƒ=iÐHÇÀÿÿÿÿH‹=SÐHDÃH‰PÐH…ÿ„;öÿÿH‹mH‰îè³jþÿ…À…'öÿÿH…Û„†öÿÿ¶Cƒè<‡wöÿÿH�üÌH9C(…föÿÿ1É1ÒH�=‡ØH‰îè?kþÿH…À„Jöÿÿ¶@ 8˜Ï…:öÿÿéÍõÿÿ�H‹}1öèU÷þÿH…À„a H‹@(é{þÿÿH‹UH‹=èÓ1ÉE1ÀA¹H�5†Óè‘dþÿ1ÉH…Àt¶p�Vý€úwö@…ä ¹Ç�ÏH‰ nÏHÇkÏHÇhÏé?õÿÿH‹}1öèÈöþÿH…À„ÔH‹@ é†÷ÿÿ‹5Ï…ö„õÿÿH‹}1Ò1öè;ØþÿH…À„} ö€˜„ñôÿÿHÇúÎH‹@8HÇóÎÇùÎH‰êÎéÁôÿÿ‹¯Î€ ¯Ò€…Ò„¬ôÿÿ1Àƒú„mýÿÿH‹=ÞÒH�5‡ÒH‹Gÿ� H‹=ÆÒ1ö‰Ãè�iþÿ1ÒA‰À‰ØA÷ðé6ýÿÿH‹‡ÎH‹ pÎH…Àt H‹H0H `ÎH�9ËÇ7ÎH‰XÎH‹aÎHƒù†úÿÿH�Dÿ1ÒH÷ñH¯Áé úÿÿM…ítE1íHƒ=ÎA•ÅL‰- ÎHÇÎéåóÿÿHÇþÍ1ÀL -åÍ•ÀH‰ÛÍéÂóÿÿHÇÛÍ1ÀL9-ÂÍ–ÀH‰¸ÍéŸóÿÿHǸÍ1ÀL9-ŸÍ“ÀH‰•Íé|óÿÿHÇ•Í1ÀL9-|Í•ÀH‰rÍéYóÿÿ1ÀL9-dÍ”ÀH‰ZÍé)üÿÿL9-N͆4óÿÿL‰-AÍé(óÿÿL9-5̓óÿÿëåH‹ &Í‹ÍÇŽÍH‰ WÍ…À„ùÿÿH�àÉH9)Í…ùÿÿ‹%̓ú�zü”Àƒú@”ƃÿ†¾ „À„ÜøÿÿJ�)H‰Íƒú…Œ H‹!ÍH�rÿH…ð„\ÿÿÿHðH÷ÚH!ÐH‰äÌH)ÈH‰ŠÌéqòÿÿDÇîÌ‹PÌ…À„xøÿÿH�AÉH9ŠÌ…døÿÿH‹ MÌH‹=fÌIƒý† J�D/ÿ1ÒI÷õI¯Å‹5`ÌH‰!̃þ„Ñ ƒþ„a €=ëÏxI�UÿH!úHÐH‰õ˃þ„Øñÿÿ…ö…ô÷ÿÿƒ=EÏH‰ >ÌH‹ÏËIDÍÇùËL‰-ÌH‰óËH‰ ÌHÇñËéˆñÿÿ@H‹ ‘ËHƒù†?þÿÿJ�D)ÿ1ÒH÷ñH¯ÁI‰Åé)þÿÿH‹ jËIÓíL9%pËL‰-YË…?ñÿÿH�,ÈH9uË…úÿÿ‹™Î…Ò…úÿÿH‰:ËéñÿÿH‹ ËIÓåL9%$ËL‰- Ë…óðÿÿë²Dƒú^�Gƒú$ŽÞ÷ÿÿƒê%ƒú9‡Ò÷ÿÿH� ó½Hc‘HÈ>ÿàL1-ÊÊL9%ÓÊ…©ðÿÿéeÿÿÿHǽÊ1ÀL9-¤Ê’ÀH‰šÊé�ðÿÿHÇšÊ1ÀL9-�Ê—ÀH‰wÊé^ðÿÿH‹ kÊH…É„þL‰èH™H÷ùH‰SÊL9%\Ê…2ðÿÿéîþÿÿL+-:ÊL9%CÊL‰-,Ê…ðÿÿéÎþÿÿL-ÊëÅL¯-ÊL9%ÊL‰-Ê…èïÿÿé¤þÿÿL!-ðÉL9%ùÉ…Ïïÿÿé‹þÿÿH‹ ×ÉH…É„ L‰èH™H÷ùH‰¿Éégÿÿÿf.„ƒú|…—öÿÿL - ÉL9%©É…ïÿÿé;þÿÿfD€~…‹ïÿÿƒút H�5*­1ÿºèö_þÿH‰îH‰Ç1Àè ÒÿÿD‹-2ÉE…í„#ïÿÿÇ#ÉH‹} è¶îÿÿƒ=ÉÇ É„k‹1É…À…׺H�5ý¬1ÿèŽ_þÿH‰îH‰ÇéòÿÿH‹} ègîÿÿéòôÿÿf�‹:Ì…Û…NïÿÿH‹UH‰×ÈÇÕÈH‰¶ÈéMïÿÿ�H‹=±ÌA¸1É1Òè:bþÿI‰ÄH…À„zîÿÿ€xv ö@„jîÿÿH‹uéŽîÿÿDH‹E H‹}ÊL‹%^ÈH‹hH…Ûu ë\H‹H…ÛtQH‹{H‰îè¬bþÿ…Àuè‹s…ö…”‹ GË…É„†H‹ ¸ËL‹cH…ÉtL‰à1ÒH÷ñH…Ò…EÇCH‹ ÈÇÎÇÇôÇHÇÙÇL+`0L‰%ÆÇH‰ÏÇé¦íÿÿf.„A€|$…�íÿÿI‹D$0H‰˜ÇI‹D$(é]üÿÿfD‹jÇH‹=‹Ç…Ò„ŒñÿÿH9Ï…ƒñÿÿL‹ ÐM…É„»ƒ=ûÏ…®I‹I8L‹rËH…ÉuéuH‹I H…É„h‹q(‰ð%„ƒøuäH‹AH…À„ H9H •À¶À…ÀuÉë‹q(�æƒþt H‹IH…ÉuéH‰ùH‰Kéõðÿÿ@H…Ò…îÿÿ€L‰%ÑÆE1äéîÿÿH�5"ª1ÿºè6]þÿH‰îH‰Ç1ÀèIÏÿÿL‹cé’þÿÿ1ÿºH�5b«è ]þÿL‰îH‰Ç1Àè Ïÿÿé2ðÿÿL‹eºH�53¬1ÿèä\þÿHƒÄL‰âH‰î[H‰Ç]1ÀA\A]éêÎÿÿH‹cÆH�ÜÁH9ЄýÿÿH‹DÆH…Ò„ƒ=ìÅvH� ãÂH9È…æëÿÿH‹ ÆL‹%ìÅH…É„ÿLa0L‹-øÅM9åvH� ¬ÂH9È…èL‰%ÜÅL‰"é ëÿÿH‹ÝÅH�VÁ‹¸ÅH9Ø„ØH�‹0H9ȄȅÒt=Hƒ={Åu3H‹} ‹Wƒú„ƒú„烅æƒ?+H‹|Å„o�H( D‹%PÅE…ä…ƒ=Å„ëÿÿé üÿÿDD‹ñÄE…À„�ôÿÿ1ÿºH�5‚Üè…[þÿH‰Ç1Àè›ÍÿÿémôÿÿH‹S(H‹BpH…À„ÆH� ®ÁH9È„HÇÂÄH‹RhHS0H‰»ÄǹÄH‰šÄéôÿÿƒ=nÄ…têÿÿL‹eºH�5ªéþÿÿƒ=LÄu'L‹eºH�5ò©1ÿèãZþÿH‰îH‰ÇL‰â1ÀèóÌÿÿÇQÄHÇ.ÄHÇ+ÄHÇ(Äéÿéÿÿ„À…’óÿÿHƒ{ ÆCHÇC(…{óÿÿH‹=õÇH;_0„jóÿÿH‰Þèk]þÿé]óÿÿfDºH�5ä©édýÿÿ…Ò„£éÿÿH9Ø„šéÿÿé†ýÿÿf„H‹u1É1ÒH�=ÌèÌ^þÿH…À„ÿóÿÿö@!…õóÿÿ¶ Ã8H ”Á¶Ééåóÿÿƒ==ÄùÿÿH‹m ºH�5Ó–1ÿèÐYþÿH‰îH‰Ç1ÀèãËÿÿéÛøÿÿƒ=Ã„ÎøÿÿH‹m ºH�5ˆ–ëȃ=è‡HÇÿÂH‹C0ÇÃH‰âÂH‰ëÂé]òÿÿH‹@8H� «¿HÇÈÂH‰ ÉÂH‹@8ÇÃÂH‰¤Âé‹èÿÿH‹5ÐËH…öué>fDH‹6H…ö„,ƒ~uîL‹ŸÆëH9H •À¶À…À„H‹v H…ö„ö†˜ …[H‹N8H…ÉtÝöA)€u×H‹AH…Àu¼1ÀI9ˆ˜•Àë¸H‹DÂH9Ø„Üüÿÿéãûÿÿ1ÀI9ˆ˜•ÀéðúÿÿºH�5¦éßøÿÿL`0éüûÿÿºH�5G¦1ÿèXXþÿ[L‰á[H‰ÇL‰êH‰î1À]A\A]é^ÊÿÿH9×Á„HÇžÁH‹BhHC0ÇœÁH‰}ÁHÇ‚ÁéôðÿÿH‹fÁÇ”ÁH‰­Áé<çÿÿL‹yÅI‹ˆ˜H…É„Qúÿÿ‹A(%ƒø„CúÿÿH‹I H…Éuæé2úÿÿH‹=CÅH‹^@è\þÿ1Ò‰ÁH‰ØH÷ñé³ïÿÿL‹eºH�5¦éVðÿÿM…É…�ùÿÿH‹N8ë•H‹Wƒz…ƒûÿÿ�:…wûÿÿH‹R€:.…jûÿÿ€z…`ûÿÿH‹ ‹Wƒú„–ƒú…Gûÿÿ�?…;ûÿÿèLw…À…5ûÿÿH‹} ƒH‹•À…ûÿÿ�?… ûÿÿH‹Oƒy…ÿúÿÿH‹Qƒz…ñúÿÿ�:…åúÿÿH‹rƒ~…×úÿÿ�>…ËúÿÿH‹v€>.…¾úÿÿ€~…´úÿÿH‹R ƒz…¦úÿÿHƒz…›úÿÿH‹Q(ƒz…�úÿÿHƒz…‚úÿÿé„úÿÿI‹ˆ�H…É…´øÿÿ鯸ÿÿL9郑åÿÿH�T9ÿI)ÍL!êHÐH‰�¿éwåÿÿƒ=䄹úÿÿéØýÿÿ�?…'úÿÿè8v…À…!úÿÿH‹} é÷ùÿÿHƒ…úÿÿé$ùÿÿH‹€¿H‰9¿é åÿÿH‰øéþòÿÿL‰-%¿ÇS¿éåÿÿ„À…Bòÿÿ@„ö„½ñÿÿé4òÿÿHƒ…¯ùÿÿé±ùÿÿóúATA‰ü¿(UH‰ÕSH‰óHƒìèÚþÿH‹SD‰ H‰P‹SÇ@ƒ{‰PH‰XH‰h t HƒÄ[]A\Ãf�ƒ}uïA�”$ÜþÿÿƒúvâA�ütÙH� ]»H‰ÇH‰D$ÇS¾HÇ€¾HÇ}¾H‰ ~¾èÉãÿÿ‹[¾…ÀH‹D$t�H‹3¾ÇHÇ@ H‰PÇ@éjÿÿÿDóúU‰ý¿(SH‰óHƒìè7ÙþÿH‹S‰(H‰P‹SÇ@ƒ{‰PH‰XtHƒÄ[]À�ýtê�ý`tâ�ý@tÚ�ý&tÒH� �ºH‰ÇH‰D$Çw½HǤ½HÇ¡½H‰ ¢½èíâÿÿ‹½…ÀH‹D$tˆH‹W½ÇHÇ@ H‰PÇ@écÿÿÿf„óúATUSH‰óH…ÿtLH�ù¹H‰ýÇô¼I‰ÔH‰2½HǽHǽègâÿÿ‹ù¼…Àuƒ=¶¼uH‰Ø[]A\Ã@[H‹À¼]A\Ã@1ÿºH�52è5SþÿL‰âH‰îH‰Ç1ÀèEÅÿÿë¿óúUH‰õSH‰ûHƒìHƒt)ºH�5a1ÿèöRþÿºLH�5�H‰Ç1ÀèÅÿÿH‹sH‹=uÀºè+ZþÿH‰CH…Àt"H‹EH‰HƒÀH‰EHƒÄ¸[]ÀH‹CH‰CëÔfDAVM‰ÆAUI‰ýH‰ÏATA‰ôUH‰ÍSH‰ÓHƒì0dH‹%(H‰D$(1ÀèÍPþÿ…ÀtQH‹…°H‰âH�5ØH‰ïL‰,$H‰D$D‰d$ H‰\$L‰t$è(\þÿH‹D$(dH+%(u2HƒÄ0[]A\A]A^Ã1ÿºH�5Z—èõQþÿH‰îH‰Ç1ÀèÄÿÿë�è!Rþÿ�óúAWI‰ÿ1É1ÒAVA¸AUATUSHƒìH‹wH‹=.¿èÁTþÿH…À„ÅH‰Å¶@ƒè<‡ŸH‹E(H‹@pH…À„ŽL‹->ÄL‹0M…ítfDM‹eM…äuëeDA‹E…ÀuXM‹$$M…ätOI‹|$L‰öè"Uþÿ…ÀuÞI‹_ H…ÛtÕDH‹KH‹U(M‰è¾H‹}è‡þÿÿH‹H…ÛußA‹E…Àt¯€M‹mM…íu‡HƒÄ¸[]A\A]A^A_ÃI‹o1ÿºH�5¡ èÌPþÿH‰ÇH‰î1ÀèßÂÿÿëÆff.„f�óúAWAVAUATUSHƒìL‹o(M…í„áL‰ïèùNþÿ…À„êI‹…°L‹ H‰D$M…äu$鸄HƒD$H‹D$L‹ M…ä„™A‹D$©puÝ©tÖI‹T$ H‹RpH…ÒtÈH‹*E1ööÄt|H‹ÖÂH…Ût±�L‹{M…ÿuëED‹C…Àu9M‹?M…ÿt1I‹H‰îèÅSþÿ…ÀuáI‹T$ I‰ØL‰é1öL‰÷è<ýÿÿ‹C…ÀtÌDH‹H…Ûu¨éSÿÿÿHƒÄ[]A\A]A^A_ÃM‹t$ézÿÿÿ1ÿºH�5é”è„OþÿL‰îH‰Ç1Àè—Áÿÿéñþÿÿf�óúAWAVI‰þAUI‰õATI‰ÔUSHƒìHH‹FpH‹H‹BH‹@pH‰ßL‹8L‰þèSþÿ…ÀtTI‹D$H‹hH…íuëD@H‹mH…ít7H‹uH‰ßèëRþÿ…ÀuçI‹$L‰îL‰÷H‰D$A‹D$ ‰D$èÚXþÿH‰ÅH…Àxu0HƒÄH[]A\A]A^A_Ã�H�5é—1ÿºè½NþÿL‰öH‰Ç1ÀèÐÀÿÿH‰ïèˆPþÿI‹L$L‰îL‰÷H‰ÂH‰D$è�WþÿL‹\$H…ÀH‰Åˆ:M�ëM9Óƒ€L‰|$(D‹|$L‰ÕL‰\$L‰t$L‰l$0L‰d$8L‹d$H‰\$ L‰Û@L‹+M…ítAI‹EH…Àt/H‹H…Àt'E…ÿuJ÷@tH‹L$8H‹P H9QtHf.„HƒÃH9Ýw·L‹\$HƒÄHL‰ß[]A\A]A^A_é Kþÿ@H‹H H�í²H9ÑtöA)trM…ä„¡L‹pL‰æL‰÷èŠQþÿ…Àu¦º1ÿM‹mHƒÃH�5��è‹MþÿHƒìM‰ñL‰éÿt$0L‹D$0H‰Ç1ÀH‹T$@H‹t$ è„¿ÿÿXZH9݇ÿÿÿé]ÿÿÿ@ö@‚uˆéEÿÿÿºH�5Y–1ÿè2MþÿL‰öH‰Ç1ÀèE¿ÿÿL‹\$éœþÿÿö@„ÿÿÿL‹pé_ÿÿÿDóúH‹½¾SH‰ûH…Àt H‰X(1À[Ã@ºH�58ý1ÿèÍLþÿºÌH�5þ‰H‰Ç1Àè×¾ÿÿH‹x¾H‰X(1À[ÄóúH‹]¾SH‰ûH…Àt H‰X01À[Ã@ºH�5Øü1ÿèmLþÿºÕH�5ž‰H‰Ç1Àèw¾ÿÿH‹¾H‰X01À[ÄóúH‹ý½SH‰ûH…Àt H‰X81À[Ã@ºH�5xü1ÿè LþÿºÞH�5>‰H‰Ç1Àè¾ÿÿH‹¸½H‰X81À[ÄóúAWAVAUI‰ÕATUSHƒì8Hƒ=‹½L‹?‰t$$„¶Hc|$$H‰ûHÁçè…MþÿH‰D$(…ÛŽÀH‹L$(‹D$$H�-ø¨H�ÁH‰ËH‰D$@I‹GL‰ÿÿ�I‹UH‰I‰ÄL‰8H…Ò„UI‹}1ÉH�5¯f1Àè¡LþÿI‰D$IÇD$A€}‡çVþÿA¶EHcD…Hè>ÿà„H�)°A¾€I‰D$ I‹GE‰t$ƒx„ûHƒÃIƒÅ0H9\$…`ÿÿÿ‹T$$H‹t$(L‰ÿè—Nþÿ1ÀHƒÄ8[]A\A]A^A_ÃfDH�ɯE1öë¡@I‹u A¾‚H…ötX1ÒH�=ׇ1ÀèáKþÿL‰ÿH‰ÆH‰D$èñLþÿL‹D$H…ÀH‰D$„öL‰Çè†GþÿH‹D$éIÿÿÿ@I‹u A¾H…öu¨H�5­dL‰ÿèªLþÿé"ÿÿÿDI‹EA¾I‰D$H�ú­éÿÿÿDI‹Eé¶þÿÿ€I‹$H…Àt H‹PƒzteM‹d$ºH�5 š1ÿèÅIþÿH‰ÇL‰æ1ÀE1äèÕ»ÿÿA€}uAÇD$LòÿÿÿIÇD$0E‹]AƒûwRH�¯§B¶AD$Ié‘þÿÿ@Hƒ¸u¹ë�@º�"L‰ÆL‰ÿèxHþÿH…À…Lþÿÿ¸é€þÿÿDºH�5œ™1ÿD‰\$è(Iþÿ‹t$H‰Ç1Àè:»ÿÿHƒÄ8¸[]A\A]A^A_ÃfD1ÿºH�5VùèíHþÿºìH�5†H‰Ç1Àè÷ºÿÿéýÿÿf�óúUH‰ýSH‰óHƒìHƒ=€ºt&H‹E H‰H‹E0H‰CH‹E8H‰k H‰CHƒÄ1À[]Ãf�1ÿºH�5æøè}HþÿºH�5®…H‰Ç1À臺ÿÿë¯DóúAWAVAUI‰õATUSH‰ûHƒìHƒ=ºH‹o8L‹g0t~H‹CH…Àt H9k„ÓL‰àH‰kD‹C(1ÿH™L‰c¹H÷=d½I)ÔHÕI‰ÖºM‰áH‰îè[HþÿHƒøÿ„©ÇC,N�$0L‰c1ÀM‰eHƒÄ[]A\A]A^A_ÃDºH�5ø1ÿè¥GþÿºH�5Ö„H‰Ç1À诹ÿÿL‹s8L9õ„LÿÿÿL‹{ 1ÿºH�5˜èkGþÿL‰òH‰ÇL‰þ1Àè{¹ÿÿé ÿÿÿfDL9c…#ÿÿÿI‰E1ÀéoÿÿÿÇC,‹{(1ÒL‰æèdHþÿH…ÀxQH‹;H‰îè$GþÿI‰ÄH…Àt>I‰Æë€IÆH)ÅH…í„ÿÿÿ‹{(H‰êL‰öèƒIþÿH…À„ÿÿÿØèsDþÿƒ8tÔ¸éøþÿÿ@óúHƒ=|¸SH‰ût‹{(ƒÿÿt èÁHþÿÇC(ÿÿÿÿ1À[ÃfD1ÿºH�5æöè}FþÿºeH�5®ƒH‰Ç1À臸ÿÿë·DóúHƒ=¸UH‰ýt&H‰ïèvHþÿ¾H‰ÇèéaH…Àt<€HY€1À]Ã@1ÿºH�5~öèFþÿºH�5FƒH‰Ç1Àè¸ÿÿë¯D¸]Ã�óúHƒ=¬·UH‰ýt&H‰ïèHþÿ1öH‰Çè|aH…Àt?€HY€1À]À1ÿºH�5öè¥EþÿºŽH�5Ö‚H‰Ç1À请ÿÿë¯D¸]Ã�AVAUATI‰üH‰÷UH‰õHƒìè—EþÿL‰çL�hL‰îèhEþÿI‰ÄH…Àt L‰êH‰îL‰çèâIþÿHƒÄ]A\A]A^ÃfDèëFþÿ1ÿºH�5í•A‰ÆèEþÿD‰öH‰Ç1Àè(·ÿÿë¶fDAWAVAUI‰ýATUL‰íSHƒìHL‹'H‹dH‹%(H‰D$81ÀÇ{­èMþÿH�5‚L‰ç…À‰ÃHE-P²1Ò1ÀèFþÿH‰îH‰Çè|GþÿH…À„ �HDH‰ÇI‰ÄèABþÿ…À„ñ…Ûu>L‰ïèÍGþÿL‰çH‰ÆèrOþÿL‰ïèšFþÿL‰ç‰ÆèKþÿI‹D$L‰æL‰ïÿ�8…À„¯º� H�5¦^L‰çèCCþÿH…À„’¾@L‰çèDþÿH‰ÅH…À„ùL�t$L‰ïL‰öè1Oþÿ…À„I‹uH9t$„ ‹D$H‰l$0L‰çL�|$ L‰e‰E(H‹D$ HÇEH‰E0H‹D$(HÇEHÇEÇE,H‰E8è þÿÿH‹M¯ÇD$ H‰E H…ÛtF@H‹C(H…Àt)H‰(µL‰þL‰÷ÿÐHǵ…Àt H‹CH‰¯H‹H…Ût‹L$ …Ét¾L‹5÷®M…öt H�5‹”1ÿºèCþÿL‰öH‰Ç1Àè"µÿÿƒ}(ÿ…˜‹T$ …Ò„¼A¶EJM‰ePL‰çƒàùƒÈAˆEJèAþÿA¶UIA¶D$Iƒâƒàý ÐAˆD$IH�šÿÿH‹T$8dH+%(…HƒÄH[]A\A]A^A_ÀºH�5„“1ÿE1äèrBþÿH‰Ç1À舴ÿÿéIþÿÿI‹}è—Jþÿ…À…Wÿÿÿ‹}(ègDþÿ‹T$ ÇE(ÿÿÿÿ…Ò…Hÿÿÿ@‹E,…ÀuyA¶EJL‰çƒàùƒÈAˆEJèòFþÿ1ÀéYÿÿÿèÃCþÿ1ÿºH�5-“A‰ÆèíAþÿD‰öH‰Ç1Àè´ÿÿéÚýÿÿ1Àéÿÿÿ�L‰çèHüÿÿI‹uH‰D$éàýÿÿf.„H‹EH‹}H‹uH™H÷=û¶HÖH)×èPHþÿébÿÿÿèÆAþÿfDóúöGFu.¶GJƒàt<ºH�¯˜ÿÿHEÂÃf.„éKüÿÿ1ÀÃDUSH‰ûHƒìƒt)ºH�5‰ñ1ÿèAþÿºÿH�5O~H‰Ç1Àè(³ÿÿH‹{(öGFu#¶GJƒàt%<uHƒ¿ØH‹oPt/€KY H‰k(HƒÄ[]Ã@èËûÿÿH…ÀtëH‹{(Hƒ¿ØH‹oPuÑèÏHþÿëÊff.„f�óúH�ìØH‰t$(H‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀdH‹%(H‰D$1ÀHƒ=­tEH�„$à€?%Ç$H‰D$H�D$ ÇD$0H‰D$u€!t6H‰þH‹=Ô¬H‰â1É袠ÿÿH‹D$dH+%(…«H�ÄØÃfD€uÄ¿ è�AþÿHÇH‰Â‹$ƒø/wNH‹t$‰Ç�HH‹<>H‰zƒù/wpH‹ ƒÀH‰Jƒø/wYHðH‹H‰BH‹¾´H‰·´H‰éuÿÿÿ€H‹D$H‰ÁHƒÀH‹ H‰D$H‰JH‰ÁHƒÀH‹ H‰D$H‰Jë¯è^?þÿH‹D$ë£H‹D$ëØóúAVI‰þ¿AUI‰ÍATI‰ÔUSH‰ó¾hHƒìpdH‹%(H‰D$h1ÀèµIþÿH‰ÅÇ@H‹óoEóo]0H‰](óoe@óoU H‰EH‰EóomPH‹E`óoM)$)T$ H‰D$`H‰Ø)L$)\$0)d$@)l$Pö¿«…˜H��øH9¬t L‹¨øM…ítÿà�H‹y£H‰j§ëÎH‹=a§H‹K¾1ÀH�ðwèDþÿH‹{ è‰ÿÿÿH‹5:§HƒÄ¿)[]é’<þÿf�H‹sHƒÄH�=úb1À[]éˆùÿÿ„H‹ §º¾H�=¨wè“CþÿH‹{è*ÿÿÿH‹K H�˜wH‹=ЦHƒÄ¾1À[]évCþÿfDH‹CH‹°øH…öt1ÀH�=ÅtèùÿÿH‹CH‹S H‹0HƒÄ1À[H�=w]éóøÿÿ‹;�ÿ1„ò�Œ�ÿt�‡Üþÿÿƒø‡„1öèn”ÿÿH‹5?¦¿ è�;þÿH‹5.¦¿(èŒ;þÿH‹{ècþÿÿºH‹ ¦¾H�=¸vè¦BþÿH‹{ é¯þÿÿDH‹{è/þÿÿH‹5ॿ?è>;þÿH‹{ èþÿÿH‹5Æ¥¿:è$;þÿH‹[(éþÿÿ‹;1öèÏ“ÿÿHƒ{„„H‹ •¥º¾H�=Bvè'BþÿH‹{é0þÿÿfD‹;�ÿ„Ê1ö胓ÿÿH‹KH…Ét:H�véoþÿÿfDH‹{H‹55¥è˜9þÿ‹;¾èL“ÿÿH‹[ éwýÿÿHƒÄ[]úH�5�è1ÿè8þÿHƒÄºùH�5ÜtH‰Ç[1À]éªÿÿf.„�‡»þÿÿƒø†|þÿÿH‹5¤¿(è :þÿH‹{è÷üÿÿ‹;¾èË’ÿÿé þÿÿfDH‹{H‹5�¤HƒÄ[]éê8þÿf.„1ö¿1è”’ÿÿºH‹ `¤¾H�=uè÷@þÿH‹{ èŽüÿÿºH‹ :¤¾H�=âté¥þÿÿ�HƒÄH�=«t1À[]éŒöÿÿff.„�óúUH‰ýSHƒìH‹œ¢H‹€ðH…ÀtHƒÄ[]ÿà„¶Gƒè<vHƒÄ¸[]Ãf„H;w(uå»DH‹5¡£¿ èÿ8þÿƒëuêH‹E(H�=TtH‹phH‹@pHu0Hp01ÀèèõÿÿH‹uH�=:t1ÀèÖõÿÿë�@H�ìØH‰T$0H‰L$8L‰D$@L‰L$H„Àt7)D$P)L$`)T$p)œ$€)¤$�)¬$ )´$°)¼$ÀdH‹%(H‰D$1ÀH�„$à1ÉH‰âH‰D$H�D$ H‰D$Ç$ÇD$0èš–ÿÿH‹D$dH+%(uH�ÄØÃèý5þÿff.„f�AWAVAUATUH‰ÕS‰óHƒìXL‹'‰L$dH‹%(H‰D$H1ÀHƒ=F§„’…ÛŽÉ�CÿI‰ïL�5³¢H�@HÁàH�l0ë[@¸H9Öt.I9Ô„ÍH…Òt ‹RD¸÷Âu1Àƒâ@•ÀƒÀDA‰G(‹V¡…Ò…þIƒÇ0I9ï„RI‹7H‹=g¢1Ò1ÉA¸èð7þÿH‰ÃA¶G�Pþ€ú†ÔH…Û„1ÉHƒ=I¢tH‰ÚL‰æL‰÷èy<þÿH…À•Â1ÉH9ÕÁ!ÑD¶k¸A�Uÿ€ú†jÿÿÿA�Eý<‡&H‹C(A€ýuH‹@H‹�øA¶GH‹5õ¡ƒè<†úþÿÿ¸H9Ö„$ÿÿÿI9Ô„ÃH…Ò„ÿÿÿ1ÀöBF•ÀƒÀA‰G(‹\ …Ò„ÿÿÿ@H�=QIL‹,ÇëxI‹H‹=Ž¡1ÉE1ÀA¹L‰öè;2þÿH…À•Â1ÉH9ÃH‰Ã•Á!ÑÉH…À…$ÿÿÿA¶G„<�(<Ž0AÇG(‹ ÚŸ…É„„þÿÿL�-€qH�KqA‹_H‰D$ H�CqH‰D$(H�AqH‰D$0H�>qH‰D$8ƒû‡–H‹\Ü H�7ÝE¾GH‰D$ H�qH‰D$(H�qH‰D$0H� qH‰D$8H�YZH‰D$@Aƒø‡öJ‹LÄ M‹º1ÿH‰L$H�5;…IƒÇ0L‰T$èÍ2þÿH‹L$M‰éI‰ØH‹T$H‰ÇL‰æ1ÀèФÿÿI9ï…®ýÿÿH‹D$HdH+%(…òHƒÄX1À[]A\A]A^A_Ãf�<u¸éZýÿÿf�vòH��¾ H�=˜oè¶’ÿÿfDH‹¤ºH�5E„1ÿ‰L$L‹@L‰D$è)2þÿH‹t$A¶ÕH‰Ç1Àè6¤ÿÿD¶k‹L$é’ýÿÿ„ºH�5÷o1ÿD‰D$èè1þÿD‹D$º@H�=g¦H‰Á¾1Àè(=þÿH�=Q¦H‰ùéÈþÿÿf„1ÿºH�5âƒè�1þÿA‰Øº@H�Þ¥H‰Á¾H‰ß1ÀèÜ<þÿé6þÿÿ€¶SƒùtwöÂur¸ƒù„<üÿÿA¶‰Áƒá€ùtGƒâƒàÂu €ù…·þÿÿH‹sH‹=`ŸèS6þÿ…À…ŸþÿÿH‹´žH‹@ƒxtRAƒ‡ƒþÿÿ‹D$éÞûÿÿfD¸éÎûÿÿ1ÿºH�5<áèÓ0þÿºâH�5nH‰Ç1ÀèÝ¢ÿÿé@ûÿÿ¶Ciº ƒàH£Âr§é%þÿÿèÜ0þÿff.„�óú¹éÒúÿÿf�óú¹ éÂúÿÿf�óúATA‰ôUH‰ýS…öu ‹$�…Àu]¿è*2þÿHÇH‰ÃD‰`H‹-‡H‰&‡H‰€}=tMºH�56nH‰ïèá-þÿ…ÀuH‹=vœH�u1Òè[1þÿH‰C[]A\Ãf�H‰ïè2þÿH‰C[]A\ÀH‹=AœH�u1Ò1Àè$1þÿH‰C[]A\Ãff.„óúHƒ=l¡UH‰ýtH‰ïèÆ1þÿ1öH‰Çèÿÿÿ1À]Ä1ÿºH�5Ößèm/þÿºœH�5žlH‰Ç1Àèw¡ÿÿë·DóúAWAVAUATI‰üU‰õSH�ì¸H‹¤dH‹%(H‰„$¨1ÀH…Ût.€…íu‹C…ÀtH�s L‰çèÙ2þÿ…À„áH‹H…ÛuÙL‰çè/þÿH�xI‰Åèµ0þÿI�UL‰æH‰ÃH‹¤£‰kH�{ H‰èU3þÿH‰Ž£ƒý…ÍH‹v£H…Û„ÕH‹†…H‰L�t$ L�=¨ßH‹{1ÉL‰âL‰þ1ÀèÌ/þÿL‰öH‰ÇH‰Å螟ÿÿH‰ïI‰Åèƒ+þÿM…í„âH‹;…HÇ¿è0þÿL‰çH‰ÃèW0þÿHƒ=× HÇH‰C„ŽH‹§ H‰‹~žH‰— ‹\$ ƒø ‡:‰Á‹5¢�H� žL‰$ÊH��‰4ж–œH�5¯œÀêƒâ‰ŽH‹¯�H…Òt H‹5›�H‹òƒÀH�5�ƒãL‰ï‰ žÁã¶OœH‰΃à÷L‰-y�Ç'� ؈/œè*MH‰ÇèrƒþÿL‰-«™Ç�H‹„$¨dH+%(…ÓH�ĸ[]A\A]A^A_ĺH�5¬1ÿèý,þÿH‰ÇH‹„$¨dH+%(…ŒH�ĸL‰æ1À[]A\A]A^A_éèžÿÿ„H‹=i˜L�=ØjL�5ÚjL‰úL‰öèð3þÿI‰ÅH…À„H‰Ç1ÒH�5Àj1Àèá-þÿH�t$H‰ÇH‰ÃèÁ0þÿH‰ß…À…Æ‹D$(%ð=@…²è})þÿL‹5>ƒ¾L‰ïH�¡H‰(ƒè»ûÿÿL‰5ƒH‹õ I‰ƒýtH‹¦žH…Û…zýÿÿH‹ö‚¿HÇèÝ-þÿºH�5É~éØþÿÿ@L�t$ L‰çL‰öè�ÿÿI‰ÅH…À…€ýÿÿH‹� H…À„ìþÿÿH‹�‚H‰ë‹èË(þÿL‰ïèÃ(þÿH‹=<—L‰úL‰öèÑ2þÿI‰ÅH…ÀtKH‰Ç1ÒH�5¥i1ÀèÆ,þÿH�t$H‰ÇI‰Æè¦/þÿL‰÷…Àu‹D$(%ð=@„éþÿÿèf(þÿL‰ïè^(þÿH�5ÂEH‹=ЖH‰òèh2þÿI‰ÅH…À„˜H‰Ç1ÒH�58i1ÀèY,þÿH�t$H‰ÇI‰Æè9/þÿL‰÷…Àu‹D$(%ð=@„|þÿÿèù'þÿL‰ïèñ'þÿL‹5²�é‘þÿÿDºH�5¼}1ÿè�*þÿH‰Ç1À賜ÿÿ‹ ›éžüÿÿ„H‰1�épüÿÿL‹5e�éDþÿÿH‹H…Û…ÝûÿÿéRþÿÿè’*þÿf�óúAWAVAUATI‰üUH‰õSHƒìH‹vPè¿)þÿ‹5u–H‰E(…öt0ºH�5XhH…ÀtH�5gh1ÿè*þÿL‰æH‰Ç1ÀèšÿÿH‹E(H…À„¨¿è¾+þÿL‰çH‰Ãè,þÿHƒ=ƒœHÇH‰C„zH‹SœH‰H‹}(H‰Eœ¶GJ�OD€‰ÂƒÊˆWJ€}Yˆ(¶EXƒà$< u-öÇ–…ØA½HƒÄD‰è[]A\A]A^A_ľèö2þÿ…À…>H‹](H…Ût¸¾H‰ßèØ2þÿA‰Ç…À„í¶EX¨ uH‹U(öBD@…¨t†‹i—H‹5––H‰ßè¾*þÿH…À…hÿÿÿH‹CƒxuH‹t–H‹@ƒx„*‹$—…Ò…ðH‹}(E1íèÌ0þÿHÇE(é5ÿÿÿ€‹bš…À…ÿÿÿH‹}(¾è,2þÿ…À„ÿÿÿH‰ïè,çÿÿé÷þÿÿ€ƒÈ ˆGJ¶EXƒà$< „ÎþÿÿéöþÿÿfDH‰ñšé„þÿÿ@H9](…©þÿÿöEX„Ÿþÿÿè×)þÿƒø …‘þÿÿH‹—“H‹€°H…Àt H‰ïÿÐ…À…qþÿÿ1öL‰çA½oèŽøÿÿH‹Ç~Ǚdz—H�HH‰ ¨~‹ —‰Ç¶— ë%@H‹=q—èÄ$þÿ@è{~þÿA‰ÅE…í„RA�ý,„à�ÄA�ýtÃA�íAƒýwÆH‹=—èz$þÿ븄èû(þÿE1íƒø…ÅýÿÿH‹mP1ÿºH�5Uzè'þÿH‰ÇH‰î1Àè+™ÿÿéœýÿÿfDH‹}(1öèµ0þÿH‰Ãé³ýÿÿDºH�5lz1ÿE1íèÒ&þÿL‰æH‰Ç1Àèå˜ÿÿH‹}(èÜ.þÿHÇE(éEýÿÿ€A�íuAƒý‡ÿÿÿé<ÿÿÿè}}þÿA‰Åƒø(…ùþÿÿèl}þÿA‰Å=…æþÿÿH‹7–èR}þÿƒø,„EE1íE1öƒø)„õH‰ßèr#þÿL‰÷èj#þÿL‰ïèb#þÿé�þÿÿH‹}H‹='–H�Hü‹@üÇB—H‰ ÷|‰–è¼%þÿHÇù•E…ÿ„küÿÿ‹ F”…Éu]H‹}(èõ-þÿHÇE(é^üÿÿL‹m1ÿºH�5yè±%þÿL‰æH‰ÇL‰ê1ÀèÁ—ÿÿéäüÿÿH‹}(¾è>/þÿ…À… üÿÿé»üÿÿL‹u1ÿºH�5Çxèj%þÿL‰æH‰ÇL‰ò1Àèz—ÿÿéwÿÿÿ‹Ó“ƒøtRH‰ßƒøuM…íIEýH‰|$象þÿH‹|$H‰Æè)þÿ…À¸DEøéÊþÿÿèÿ{þÿA‰Å=tH‰ßè-"þÿépýÿÿM…öH‰ßIEþë±L‹5µ”èÐ{þÿA‰Åƒø,uèÃ{þÿA‰Å=tH‰ßèñ!þÿL‰÷èé!þÿé,ýÿÿL‹-}”è˜{þÿéPþÿÿóúAWI‰ÏAVAUI‰ýATUH‰õSHƒì¶FXH‰T$¨u.H‹~¨t €?/„(H‰îèúÿÿ…À…ìH‹E€8/„úH‹Û–L�%eÕH…Ûu=éâf�1ÉL‰æ1Àè„%þÿH‰îI‰ÆL‰÷èÆùÿÿ…À…ŸL‰÷è6!þÿH‹H…Û„ª¶EX¨ t:¶;‘ƒâ€út+H‹l�H‹Š€H…ÉtH‰êH‰ÞL‰ïÿÑ…ÀuV¶EXDƒàH‹UH‹{<…uÿÿÿHƒìH‰ÑL‰æ1ÀjH‹T$M‰ùM‰èèç$þÿH‰îI‰ÆXZL‰÷è'ùÿÿ…À„aÿÿÿL‰u¸HƒÄ[]A\A]A^A_ÀHƒÄ1À[]A\A]A^A_ÃH‰þH‹=¥�1Ò1ÀèŒ$þÿH‰îH‰ÇI‰ÄèÎøÿÿ…Àt L‰e¸ë©L‰çè7 þÿé«þÿÿf�óúSè&%þÿ¿H‰ÃèÉ$þÿH‰HÇ@¶„ÒtH�  e¶HƒÃˆSÿ¶„ÒuîH‹ŸyH‰HƒÀ[H‰�yÀóúUH‰ýS‰óHƒìèü)þÿH…Àt‹P H‹@‰ŽŒH‰‹ŒHƒÄ[]Ã@…Ût‰rŒHƒÄ[]ÀH�5v1ÿºè="þÿHƒÄH‰îH‰Ç[1À]éJ”ÿÿf.„óúAUATUH‰ýSHƒìöGX„ÅH‹ H…ÿtDH‹U1ÉH�5Ó1ÀèH#þÿH‰îH‰ÇI‰ÄèŠ÷ÿÿ…ÀtL‰e€eXûHƒÄ[]A\A]ÃL‰çèèþÿH‹�–H…Û„ØL�%RÍL�-ÅÍë„H‹[H…Û„³H‹;L‰áL‰êH‰îèÒüÿÿ…ÀuH‹÷ŒH‹;H‹€ÈH…ÀtÈH‰îÿÐ…Àt¿€eXûHƒÄ[]A\A]ÃH‹H‰îèäöÿÿ…ÀuåH‹uH‹}èS þÿ…À„{L‹mL‹eº1ÿH�5�_è!þÿL‰êL‰æH‰Ç1Àè“ÿÿ€MY€ ¶�HƒÄ[]A\A]Ãf.„L‹eöEXtL‹-/�M…ít A€<$/„8H�5w_1ÿºèœ þÿL‰æH‰Ç1À诒ÿÿöEX „¥H‹N•L�%(ÌL�-’ËH…ÛuévÿÿÿfDH‹[H…Û„cÿÿÿH‹;L‰áL‰êH‰îè¢ûÿÿ…ÀtÞH‹}èu#þÿL‹mº1ÿH�5StI‰Äè þÿL‰áL‰âL‰îH‰Ç1Àè(’ÿÿH‹}(è(þÿ€MYHÇE(€ ½Žéÿÿÿ€H‹]€;-…Nÿÿÿ€{l…Dÿÿÿ1ÿºH�5«sè¶þÿH�sH‰Ç1ÀèÈ‘ÿÿéÿÿÿL‹e1ÿºH�5'^è‰þÿH‰ÇL‰æ1À蜑ÿÿé‡þÿÿ1ÿºH�5^èdþÿL‰êL‰æH‰Ç1Àèt‘ÿÿéÀþÿÿf.„DóúǶŒƒâ€ú„£‹5Ý‹H�n¥…ö„Š‹ ˜‹H�ñÉ…É„uH‹5BŒH¹H¸H!ñH9Á„rH¿€H¸€H!÷H9Ç„I¸H�q[I¹I!ðM9È„I¹H�â~IºI!ñM9Ñ„àH�­¤€ú„ÐH¸H9Á„!H¸€H9Ç„îH¹H�e1I9È„�H¹H�cSI9ÉtzH�Çw€útn·?‹f%f=„×H¸€H!ÆH9Æ„ÛH�°ö‹u3ö‹H�áRH�Š,HDÂÃDH�Aö’‹„ÒþÿÿË=ŠH��H�L|…ÿHDÂÃDöa‹H�r5H�síHDÂÃfDH�aëö:‹„þþÿÿë¦f.„ö!‹H�2ÈH�# HEÂÃö‹H�¿H�šHDÂÃH�äö抄ÿÿÿÀóúÇ¶Šƒâ€ú„£‹5m‰H�®ž…ö„Š‹ (‰H�1Ã…É„uH‹5Ò‰H¹H¸H!ñH9Á„rH¿€H¸€H!÷H9Ç„I¸H�¹TI¹I!ðM9È„I¹H�*xIºI!ñM9Ñ„àH�ý�€ú„ÐH¸H9Á„!H¸€H9Ç„îH¹H�Õ*I9È„�H¹H�ÛLI9ÉtzH�Gq€útn·ψf%f=„×H¸€H!ÆH9Æ„ÛH�H öžˆu3ö”ˆH�yL H�"& HDÂÃDH�‰ ö"‰„ÒþÿÿË=¦‡H�[‰H�Œu…ÿHDÂÃDöñˆH�º.H�»æHDÂÃfDH�Áäöʈ„þþÿÿë¦f.„ö±ˆH�ŠÁH�‹HEÂÃö—ˆH�˜¸H�¡“HDÂÃH�•Ýövˆ„ÿÿÿÀóúǶŸ‡ƒâ€ú„£‹5ý†H�>– …ö„Š‹ ¸†H�I¸ …É„uH‹5b‡H¹H¸H!ñH9Á„rH¿€H¸€H!÷H9Ç„I¸H��A I¹I!ðM9È„I¹H�úb IºI!ñM9Ñ„àH�U† €ú„ÐH¸H9Á„!H¸€H9Ç„îH¹H�Í I9È„�H¹H�Û* I9ÉtzH�ÇL €útn·_†f%f=„×H¸€H!ÆH9Æ„ÛH�hÕ ö.†u3ö$†H�1 H�R÷ HDÂÃDH�9ü ö²†„ÒþÿÿË=6…H�ó� H�,o …ÿHDÂÃDö�†H�z H�[Ù HDÂÃfDH�©È öZ†„þþÿÿë¦f.„öA†H�j§ H�{è HEÂÃö'†H� � H�¡l HDÂÃH�­² ö†„ÿÿÿÀóúǶ/…ƒâ€ú„£‹5�„H�Nb …ö„Š‹ H„H�Aƒ …É„uH‹5ò„H¹H¸H!ñH9Á„rH¿€H¸€H!÷H9Ç„I¸H� I¹I!ðM9È„I¹H�z( IºI!ñM9Ñ„àH�½J €ú„ÐH¸H9Á„!H¸€H9Ç„îH¹H�ÕÊ I9È„�H¹H�Ëé I9ÉtzH�Ÿ €útn·ïƒf%f=„×H¸€H!ÆH9Æ„ÛH�àŽö¾ƒu3ö´ƒH�yÒH�²¯HDÂÃDH�Å öB„„ÒþÿÿË=Æ‚H�N H�l; …ÿHDÂÃDö„H�*å H�;£ HDÂÃfDH�አöꃄþþÿÿë¦f.„öуH�ºj H�›© HEÂÃö·ƒH�HKH�a)HDÂÃH�=mö–ƒ„ÿÿÿÀóúǶ¿‚ƒâ€ú„£‹5‚H�…ö„Š‹ Ø�H�Ù=…É„uH‹5‚‚H¹H¸H!ñH9Á„rH¿€H¸€H!÷H9Ç„I¸H�yÌI¹I!ðM9È„I¹H�2ïIºI!ñM9Ñ„àH�E€ú„ÐH¸H9Á„!H¸€H9Ç„îH¹H�žI9È„�H¹H�c¿I9ÉtzH�ã€útn·�f%f=„×H¸€H!ÆH9Æ„ÛH�qöN�u3öD�H�Ù¹H�:”HDÂÃDH�¹„öÒ�„ÒþÿÿË=V€H�H�œñ…ÿHDÂÃDö¡�H�2§H�£`HDÂÃfDH�‰Yöz�„þþÿÿë¦f.„öa�H�7H�“zHEÂÃöG�H�à(H�©HDÂÃH�%Mö&�„ÿÿÿÀóúǶO€ƒâ€ú„£‹5­H�>…ö„Š‹ hH� (…É„uH‹5€H¹H¸H!ñH9Á„rH¿€H¸€H!÷H9Ç„I¸H�©¶I¹I!ðM9È„I¹H�bÙIºI!ñM9Ñ„àH�uþ€ú„ÐH¸H9Á„!H¸€H9Ç„îH¹H�MˆI9È„�H¹H�“©I9ÉtzH�?Í€útn·f%f=„×H¸€H!ÆH9Æ„ÛH�H[öÞ~u3öÔ~H� ¤H�j~HDÂÃDH�énöb„ÒþÿÿË=æ}H�CïH�ÌÛ…ÿHDÂÃDö1H�b‘H�ÓJHDÂÃfDH�¹Cö „þþÿÿë¦f.„öñ~H�B!H�ÃdHEÂÃö×~H�H�ÙîHDÂÃH�U7ö¶~„ÿÿÿÀóúHƒì¾H�=;äÆʼngèàíÿÿ€ I H¸ÿÿÿþÿùHº€H#®}€ ¯}Çå|H ÐÇ}H‰‰}HƒÄÃ@óúHƒì¾H�=×ãÆ5‰gèpíÿÿ€ Ù~ H¸ÿÿÿþÿùHº€H#>}€ ?}Çu|H ÐǤ|H‰}HƒÄÃ@óúHƒì¾H�=úQÆ¥ˆgèíÿÿ€ i~ H¸ÿÿÿþÿùHº€H#Î|€ Ï|Ç|H ÐÇ4|H‰©|HƒÄÃ@óúHƒì¾ H�=uQƈgè�ìÿÿ€ ù} H¸ÿÿÿþÿùHº€H#^|€ _|Ç•{H ÐÇÄ{H‰9|HƒÄÃ@óúHƒì¾ H�=ðPÆ…‡gè ìÿÿ€ ‰} H¸ÿÿÿþÿùHº€H#î{€ ï{Ç%{H ÐÇT{H‰É{HƒÄÃ@óúHƒì¾ H�=lPÆõ†gè°ëÿÿ€ } H¸ÿÿÿþÿùHº€H#~{€ {ǵzH ÐÇäzH‰Y{HƒÄÃ@óúSH‹6H‰ÓH�=µáºè´ þÿ…ÀuÇ[ÄóúH�5ý†H�={ÇŒzé/ þÿff.„@óúH�5­†H�=ÞzÇ\zéÿ þÿff.„@óúH�5]†H�=®zÇ,zéÏ þÿff.„@óúH�5 †H�=~zÇüyéŸ þÿff.„@óúH�5½…H�=NzÇÌyéo þÿff.„@óúH�5m…H�=zÇœyé? þÿff.„@óúº@¾¿éØ„óúº ¾¿é¸„óúº ¾¿é˜„óúº 1ö1ÿé~ff.„óúº@¾¿éX„óúº@¾¿é8„óúH‹5…H‹=…éI"f„óúH‹5Õ„H‹=Æ„é)"f„óúH‹5•„H‹=†„é "f„óúH‹5U„H‹=F„éé!f„óúH‹5„H‹=„éÉ!f„óúH‹5ÕƒH‹=ƃé©!f„óúAUATUH�-pxSH‰îHƒìH‹=±xèÌ þÿºH�50Â…ÀˆR‰Ç» L�%:ÂëF„H‹yxH‹‚H‹ˆ˜ H‹A8I9Å„ʃû I9Ń(¿ƒë„Šèí ÿÿH‹=6xH‹Wƒz…ž¶EH‹ e|ƒà<„šH‹‡H‹€˜ L‹h8H…Ét3H‰îè³ þÿ…À…kÿÿÿ1ÿºL‰æè< þÿH‰Ç1ÀèR|ÿÿéMÿÿÿDHÇëÄ€ºH�5ÛÝ1ÿè þÿH‰Ç1Àè|ÿÿH‹”wH‹RƒztHƒÄ[]A\A]ÀHƒ=¸{uäH‹‚pH‹€ H…ÀtÑH‰ïÿÐ…ÀuȺH�5&Á1ÿèŸ þÿHƒÄ[H‰Ç]1ÀA\A]é«{ÿÿL‰i8ëŽf�óúéGþÿÿ€óúé7þÿÿ€óúé'þÿÿ€óúéþÿÿ€óúéþÿÿ€óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}è þÿ‹ÄçH‰ÞI‰E‰(¶·çˆT(I‹<$èí þÿH�5Æ2I‰$H�Œ@þÿÿH‹³2H�yH‰H‹]4HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ãff.„f�óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èa þÿ‹çH‰ÞI‰E‰(¶çˆT(I‹<$è= þÿH�5V0I‰$H�Œ@þÿÿH‹C0H�yH‰H‹í1HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ãff.„f�óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}è±þÿ‹ZæH‰ÞI‰E‰(¶MæˆT(I‹<$è�þÿH�5æ-I‰$H�Œ@þÿÿH‹Ó-H�yH‰H‹}/HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ãff.„f�óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èþÿ‹¥åH‰ÞI‰E‰(¶˜åˆT(I‹<$èÝþÿH�5v+I‰$H�Œ@þÿÿH‹c+H�yH‰H‹ -HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ãff.„f�óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}èQþÿ‹ðäH‰ÞI‰E‰(¶ãäˆT(I‹<$è-þÿH�5)I‰$H�Œ@þÿÿH‹ó(H�yH‰H‹�*HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ãff.„f�óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}è¡þÿ‹;äH‰ÞI‰E‰(¶.äˆT(I‹<$è}þÿH�5–&I‰$H�Œ@þÿÿH‹ƒ&H�yH‰H‹-(HƒçøH‰�¸H)ùH)Î�ÁÀÁéóH¥HƒÄ[]A\A]Ãff.„f�óúUH‰ÍSHcÚHƒÃ:HÁãHƒìH‹9H‰ÞèýþÿH�5ÖH‰EH�ŒÀøÿÿH‹ÃH�yH‰H‹í%HƒçøH‰�8H)ùH)Î�Á@ÁéóH¥HƒÄ[]Ã�óúATUSHƒìdH‹%(H‰D$1À�ÿ™�È�ÿ�~ �ÿ‡1H�úàHcºHÐ>ÿà�ÿ¬„t~J�ÿ-„–�ÿ.…z€ xq¸fDH‹T$dH+%(…ñHƒÄ[]A\Ãÿz„g�ÿ›u€ }€1ÀëÄ@ƒÿPu»H‹5œgH�=õ|èpS¸ë¡f„H‹=|èÔþÿH‹-mgHÇú{H…í„ÉH�5¥»H‰ïèZþÿA‰À¸E…À„Qÿÿÿf„H‰ïèˆþÿH‰¹{¸é/ÿÿÿ€H‹- gH�5U»H‰ïèªþÿ…À„JH�5 ×H‰ïè“þÿ…À„cH�5ûÖH‰ïè|þÿ…À…¸ÇFp¸éÈþÿÿH‹5©fH�=ú{è}R¸é«þÿÿ€ p¸é—þÿÿ€·óoHƒ ©pf%ø€Ìf‰Ýo¸éiþÿÿ�¶ÍoƒàùƒÈˆÁo¸éKþÿÿ€%­où¸é7þÿÿ€H‹=fè ~þÿ¸éþÿÿf�¶}oH‹-òeH�5%ÖƒãŸH‰ïˆcoèêþÿ…À„H�5÷ÕH‰ïèÓþÿ…À…[ƒË@¸ˆ1oéÀýÿÿ„‹Êl…Àu€ ÷z@é¢ýÿÿf.„1Àé‘ýÿÿf„€%înï¸éwýÿÿ€H‹-QeH�5/»H‰ïèRþÿ…ÀtVH�5{ÕH‰ïè?þÿ…À…÷·¢nf%þ €f‰•n¸é!ýÿÿf„€%~n÷¸éýÿÿ€·cnf%þ€Ìf‰Un¸éáüÿÿf„ƒË ¸ˆ6néÅüÿÿDÇ*n¸é¬üÿÿ@H�-¦ÔH‰-‚déMýÿÿDÇúm¸é|üÿÿ@H�5˜ÔH‰ïèaþÿ…À…ýƒË`¸ˆ¿méNüÿÿfDH�5tÔH‰ïè1þÿ…ÀuM€ ›m@¸é$üÿÿH�55ÔH‰ïè­ýýÿºH�5Ù·…À„qÿÿÿ1ÿèþÿH‰îH‰Ç1Àè%rÿÿéÝûÿÿºH�5ÔH‰ïè¼ýýÿ…Àt}ºH�5ÔH‰ïè¤ýýÿ…À„¨º H�5ÔH‰ïèˆýýÿ…À„H�5œÀH‰ïè�þÿ…À…¼¶èlƒàóƒÈˆÜl¸édûÿÿºH�5`·éRÿÿÿ1ÒH‰æH�}èýþÿH‹$H‰bl€:u H�PÿH…„ûÿÿH‹ cºH�5=·H�hé ÿÿÿ1ÒH‰æH�}è¶þÿH‹$H‰#l€:u H�PÿH…„ÖúÿÿH‹ÂbºH�5·H�héÄþÿÿH�5&ÓH‰ïè®þÿ…À…‹¶lƒàóƒÈˆ l¸é‘úÿÿ1ÒH‰æH�} è;þÿH‹$H‰ðk€:u#H…ÀxHƒ=Þk…UúÿÿHÇÍkÿÿÿÿéEúÿÿH‹1b1ÿºH�5³¶H�h èJþýÿH‰îH‰Ç1Àè]pÿÿëµH�5�ÒH‰ïè þÿ…ÀuH� -l¸éûùÿÿèNþýÿºH�5jÒH‰ïèÊûýÿ…Àu'H�5nÒH‰ïèÇþÿ…Àu9Çñk¸é·ùÿÿH�5‚ÒH‰ïè þÿ…Àu9Hƒ Äk¸é’ùÿÿH�5#¶H‰ïè{þÿ…Àu9Ç¥k¸ékùÿÿH�5=ÒH‰ïèTþÿ…Àu9Hƒ xk ¸éFùÿÿH�5ôÑH‰ïè/þÿ…Àu<ÇYk¸éùÿÿH�5ûÑH‰ïèþÿ…ÀuõÿÿH�5ØÎH‰ïè'ýýÿ…Àu€ tr¸éõÿÿº H�5ÀÎH‰ïèîöýÿ…Àu/L�e H�5³ÎL‰çèçüýÿ…Àu<€%4r߸Æ0rgéÓôÿÿH�5¯ÎH‰ïè¼üýÿ…Àu<€ r¸é¯ôÿÿH�5pÎL‰çè˜üýÿ…Àu@€ åq ¸Æáq�é„ôÿÿH�5gÎH‰ïèmüýÿ…À…€ ¶q¸é\ôÿÿºH�5#ÎL‰çè0öýÿ…À„‚ºH�5ÎL‰çèöýÿ…ÀuY1ÒH‰æH�}èÒþÿˆlqH‹$€8t+H‹ì[H�5e±1ÿºH�hèøýÿH‰îH‰Ç1Àèjÿÿ€ )q ¸éÏóÿÿºH�5c±é½÷ÿÿ1ÒH‰æH�}èhþÿˆqH‹$€8t+H‹‚[H�5ð1ÿºH�hè›÷ýÿH‰îH‰Ç1Àè®iÿÿ€%¿p߸éeóÿÿH�5LÍH‰ïèNûýÿ…Àu€ ›p¸éAóÿÿº H�5)ÍH‰ïèõýÿ…Àu+HƒÅ H�5Y¯H‰ïèûýÿ…Àu8Ç\p¸éþòÿÿH�5÷ÌH‰ïèçúýÿ…Àu8€ 4p¸éÚòÿÿH�5ÕH‰ïèÃúýÿ…Àu%Çp ¸é³òÿÿºH�5®Ìé¡öÿÿH�5“H‰ïè‹úýÿ…ÀuÇÙo¸é{òÿÿºH�57°éiöÿÿf�óúATUSHƒìdH‹%(H‰D$1À�ÿ™�È�ÿ�~ �ÿ‡1H�þÒHcºHÐ>ÿà�ÿ¬„t~J�ÿ-„–�ÿ.…z€ Xc¸fDH‹T$dH+%(…ñHƒÄ[]A\Ãÿz„g�ÿ›u€ Øn€1ÀëÄ@ƒÿPu»H‹5|YH�=µnèPE¸ë¡f„H‹=ñmè´òýÿH‹-MYHÇÚmH…í„ÉH�5…­H‰ïè:ùýÿA‰À¸E…À„Qÿÿÿf„H‰ïèh÷ýÿH‰™m¸é/ÿÿÿ€H‹-éXH�55­H‰ïèŠòýÿ…À„JH�5íÈH‰ïèsòýÿ…À„cH�5ÛÈH‰ïè\òýÿ…À…¸Ç&b¸éÈþÿÿH‹5‰XH�=ºmè]D¸é«þÿÿ€ îa¸é—þÿÿ€·ÓaHƒ ‰bf%ø€Ìf‰½a¸éiþÿÿ�¶­aƒàùƒÈˆ¡a¸éKþÿÿ€%�aù¸é7þÿÿ€H‹=ñWèìoþÿ¸éþÿÿf�¶]aH‹-ÒWH�5ȃãŸH‰ïˆCaèÊ÷ýÿ…À„H�5×ÇH‰ïè³÷ýÿ…À…[ƒË@¸ˆaéÀýÿÿ„‹ª^…Àu€ ·l@é¢ýÿÿf.„1Àé‘ýÿÿf„€%Î`ï¸éwýÿÿ€H‹-1WH�5­H‰ïè2÷ýÿ…ÀtVH�5[ÇH‰ïè÷ýÿ…À…÷·‚`f%þ €f‰u`¸é!ýÿÿf„€%^`÷¸éýÿÿ€·C`f%þ€Ìf‰5`¸éáüÿÿf„ƒË ¸ˆ`éÅüÿÿDÇ `¸é¬üÿÿ@H�-†ÆH‰-bVéMýÿÿDÇÚ_¸é|üÿÿ@H�5xÆH‰ïèAöýÿ…À…ýƒË`¸ˆŸ_éNüÿÿfDH�5TÆH‰ïèöýÿ…ÀuM€ {_@¸é$üÿÿH�5ÆH‰ïè�ïýÿºH�5¹©…À„qÿÿÿ1ÿèòñýÿH‰îH‰Ç1ÀèdÿÿéÝûÿÿºH�5÷ÅH‰ïèœïýÿ…Àt}ºH�5îÅH‰ïè„ïýÿ…À„¨º H�5äÅH‰ïèhïýÿ…À„H�5|²H‰ïèaõýÿ…À…¼¶È^ƒàóƒÈˆ¼^¸édûÿÿºH�5@©éRÿÿÿ1ÒH‰æH�}èÝùýÿH‹$H‰B^€:u H�PÿH…„ûÿÿH‹éTºH�5©H�hé ÿÿÿ1ÒH‰æH�}è–ùýÿH‹$H‰^€:u H�PÿH…„ÖúÿÿH‹¢TºH�5þ¨H�héÄþÿÿH�5ÅH‰ïèŽôýÿ…À…‹¶õ]ƒàóƒÈˆé]¸é‘úÿÿ1ÒH‰æH�} èùýÿH‹$H‰Ð]€:u#H…ÀxHƒ=¾]…UúÿÿHÇ­]ÿÿÿÿéEúÿÿH‹T1ÿºH�5“¨H�h è*ðýÿH‰îH‰Ç1Àè=bÿÿëµH�5pÄH‰ïèìóýÿ…ÀuH� ^¸éûùÿÿè.ðýÿºH�5JÄH‰ïèªíýÿ…Àu'H�5NÄH‰ïè§óýÿ…Àu9ÇÑ]¸é·ùÿÿH�5bÄH‰ïè€óýÿ…Àu9Hƒ ¤]¸é’ùÿÿH�5¨H‰ïè[óýÿ…Àu9Ç…]¸ékùÿÿH�5ÄH‰ïè4óýÿ…Àu9Hƒ X] ¸éFùÿÿH�5ÔÃH‰ïèóýÿ…Àu<Ç9]¸éùÿÿH�5ÛÃH‰ïèèòýÿ…ÀuõÿÿH�5¸ÀH‰ïèïýÿ…Àu€ 4d¸éõÿÿº H�5 ÀH‰ïèÎèýÿ…Àu/L�e H�5“ÀL‰çèÇîýÿ…Àu<€%ôc߸ÆðcgéÓôÿÿH�5�ÀH‰ïèœîýÿ…Àu<€ Éc¸é¯ôÿÿH�5PÀL‰çèxîýÿ…Àu@€ ¥c ¸Æ¡c�é„ôÿÿH�5GÀH‰ïèMîýÿ…À…€ vc¸é\ôÿÿºH�5ÀL‰çèèýÿ…À„‚ºH�5ï¿L‰çèôçýÿ…ÀuY1ÒH‰æH�}è²òýÿˆ,cH‹$€8t+H‹ÌMH�5E£1ÿºH�hèåéýÿH‰îH‰Ç1Àèø[ÿÿ€ éb ¸éÏóÿÿºH�5C£é½÷ÿÿ1ÒH‰æH�}èHòýÿˆÂbH‹$€8t+H‹bMH�5£¢1ÿºH�hè{éýÿH‰îH‰Ç1ÀèŽ[ÿÿ€%b߸éeóÿÿH�5,¿H‰ïè.íýÿ…Àu€ [b¸éAóÿÿº H�5 ¿H‰ïèõæýÿ…Àu+HƒÅ H�59¡H‰ïèîìýÿ…Àu%Çb¸éþòÿÿºH�5Ù¾éìöÿÿH�5ÈH‰ïè¶ìýÿ…ÀuÇäa ¸éÆòÿÿH�5—H‰ïè�ìýÿ…Àuǽa¸éŸòÿÿºH�5;¢é�öÿÿfDóúATUSHƒìdH‹%(H‰D$1À�ÿ™�È�ÿ�~ �ÿ‡1H�"ÅHcºHÐ>ÿà�ÿ¬„t~J�ÿ-„–�ÿ.…z€ XU¸fDH‹T$dH+%(…ñHƒÄ[]A\Ãÿz„g�ÿ›u€ ¸`€1ÀëÄ@ƒÿPu»H‹5|KH�=•`èP7¸ë¡f„H‹=ñ_è´äýÿH‹-MKHÇÚ_H…í„ÉH�5…ŸH‰ïè:ëýÿA‰À¸E…À„Qÿÿÿf„H‰ïèhéýÿH‰™_¸é/ÿÿÿ€H‹-éJH�55ŸH‰ïèŠäýÿ…À„JH�5íºH‰ïèsäýÿ…À„cH�5ÛºH‰ïè\äýÿ…À…¸Ç&T¸éÈþÿÿH‹5‰JH�=š_è]6¸é«þÿÿ€ îS¸é—þÿÿ€·ÓSHƒ ‰Tf%ø€Ìf‰½S¸éiþÿÿ�¶­SƒàùƒÈˆ¡S¸éKþÿÿ€%�Sù¸é7þÿÿ€H‹=ñIèìaþÿ¸éþÿÿf�¶]SH‹-ÒIH�5ºƒãŸH‰ïˆCSèÊéýÿ…À„H�5×¹H‰ïè³éýÿ…À…[ƒË@¸ˆSéÀýÿÿ„‹ªP…Àu€ —^@é¢ýÿÿf.„1Àé‘ýÿÿf„€%ÎRï¸éwýÿÿ€H‹-1IH�5ŸH‰ïè2éýÿ…ÀtVH�5[¹H‰ïèéýÿ…À…÷·‚Rf%þ €f‰uR¸é!ýÿÿf„€%^R÷¸éýÿÿ€·CRf%þ€Ìf‰5R¸éáüÿÿf„ƒË ¸ˆRéÅüÿÿDÇ R¸é¬üÿÿ@H�-†¸H‰-bHéMýÿÿDÇÚQ¸é|üÿÿ@H�5x¸H‰ïèAèýÿ…À…ýƒË`¸ˆŸQéNüÿÿfDH�5T¸H‰ïèèýÿ…ÀuM€ {Q@¸é$üÿÿH�5¸H‰ïè�áýÿºH�5¹›…À„qÿÿÿ1ÿèòãýÿH‰îH‰Ç1ÀèVÿÿéÝûÿÿºH�5÷·H‰ïèœáýÿ…Àt}ºH�5î·H‰ïè„áýÿ…À„¨º H�5ä·H‰ïèháýÿ…À„H�5|¤H‰ïèaçýÿ…À…¼¶ÈPƒàóƒÈˆ¼P¸édûÿÿºH�5@›éRÿÿÿ1ÒH‰æH�}èÝëýÿH‹$H‰BP€:u H�PÿH…„ûÿÿH‹éFºH�5›H�hé ÿÿÿ1ÒH‰æH�}è–ëýÿH‹$H‰P€:u H�PÿH…„ÖúÿÿH‹¢FºH�5þšH�héÄþÿÿH�5·H‰ïèŽæýÿ…À…‹¶õOƒàóƒÈˆéO¸é‘úÿÿ1ÒH‰æH�} èëýÿH‹$H‰ÐO€:u#H…ÀxHƒ=¾O…UúÿÿHÇ­OÿÿÿÿéEúÿÿH‹F1ÿºH�5“šH�h è*âýÿH‰îH‰Ç1Àè=TÿÿëµH�5p¶H‰ïèìåýÿ…ÀuH� P¸éûùÿÿè.âýÿºH�5J¶H‰ïèªßýÿ…Àu'H�5N¶H‰ïè§åýÿ…Àu9ÇÑO¸é·ùÿÿH�5b¶H‰ïè€åýÿ…Àu9Hƒ ¤O¸é’ùÿÿH�5šH‰ïè[åýÿ…Àu9Ç…O¸ékùÿÿH�5¶H‰ïè4åýÿ…Àu9Hƒ XO ¸éFùÿÿH�5ÔµH‰ïèåýÿ…Àu<Ç9O¸éùÿÿH�5ÛµH‰ïèèäýÿ…Àuõÿÿº H�5IJH‰ïèòÚýÿ…Àu/L�e H�5·²L‰çèëàýÿ…Àu<€%øU߸ÆôUgé÷ôÿÿH�5³²H‰ïèÀàýÿ…Àu<€ ÍU¸éÓôÿÿH�5t²L‰çèœàýÿ…Àu@€ ©U ¸Æ¥U�é¨ôÿÿH�5k²H‰ïèqàýÿ…À…€ zU¸é€ôÿÿºH�5'²L‰çè4Úýÿ…À„‚ºH�5²L‰çèÚýÿ…ÀuY1ÒH‰æH�}èÖäýÿˆ0UH‹$€8t+H‹ð?H�5i•1ÿºH�hè ÜýÿH‰îH‰Ç1ÀèNÿÿ€ íT ¸éóóÿÿºH�5g•éá÷ÿÿ1ÒH‰æH�}èläýÿˆÆTH‹$€8t+H‹†?H�5Ç”1ÿºH�hèŸÛýÿH‰îH‰Ç1Àè²Mÿÿ€%ƒT߸é‰óÿÿH�5P±H‰ïèRßýÿ…Àu€ _T¸éeóÿÿº H�5-±H‰ïèÙýÿ…Àu+HƒÅ H�5]“H‰ïèßýÿ…Àu%Ç T¸é"óÿÿºH�5ý°é÷ÿÿH�5ìH‰ïèÚÞýÿ…ÀuÇèS ¸éêòÿÿH�5»öH‰ïè³Þýÿ…ÀuÇÁS¸éÃòÿÿºH�5_”é±öÿÿf.„óúATUSHƒìdH‹%(H‰D$1À�ÿ™�Ø�ÿ�~ �ÿ‡±H�f·HcºHÐ>ÿà�ÿ-„Ì~?�ÿ.…–€ „G¸f.„H‹T$dH+%(…¾HƒÄ[]A\ÃÿP„bƒÿzuÕH‹-¾=H�5œ“H‰ïè¿Ýýÿ…À„wH�5ä­H‰ïè¨Ýýÿ…À…à· Gf%þ €f‰þF¸ë…D1Àéyÿÿÿf„H‹=ñQè´ÖýÿH‹-M=HÇÚQH…í„YH�5…‘H‰ïè:ÝýÿA‰À¸E…À„)ÿÿÿf„H‰ïèhÛýÿH‰™Q¸éÿÿÿ€H‹-é<H�55‘H‰ïèŠÖýÿ…À„ÚH�5í¬H‰ïèsÖýÿ…À„óH�5Û¬H‰ïè\Öýÿ…À…ÎÇ&F¸é þÿÿH‹5‰<H�=zQè](¸éƒþÿÿ€ îE¸éoþÿÿ€·ÓEHƒ ‰Ff%ø€Ìf‰½E¸éAþÿÿ�¶­EƒàùƒÈˆ¡E¸é#þÿÿ€%�Eù¸éþÿÿ€H‹=ñ;èìSþÿ¸éòýÿÿf�¶]EH‹-Ò;H�5¬ƒãŸH‰ïˆCEèÊÛýÿ…À„¢H�5׫H‰ïè³Ûýÿ…À…ƒË@¸ˆEé˜ýÿÿ„€%þD÷¸éýÿÿ€H‹5a;H�=ZPè5'¸é[ýÿÿ€%ÆDï¸éGýÿÿ€·«Df%þ€Ìf‰�D¸é!ýÿÿ�ƒË ¸ˆ†Dé ýÿÿDÇzD¸éôüÿÿ@H�-öªH‰-Ò:é½ýÿÿDÇJD¸éÄüÿÿ@H�5ôªH‰ïè±Úýÿ…Àu?€ D@¸éœüÿÿ@H�5ÀªH‰ïè‰Úýÿ…À…܃Ë`¸ˆçCénüÿÿºH�5¥ªH‰ïèJÔýÿ…À„»ºH�5˜ªH‰ïè.Ôýÿ…À„úº H�5ŽªH‰ïèÔýÿ…À„VH�5&—H‰ïè Úýÿ…À… ¶rCƒàóƒÈˆfC¸éæûÿÿH�5ÿ©H‰ïèwÓýÿºH�5£�…À„ëþÿÿ1ÿèÜÕýÿH‰îH‰Ç1ÀèïGÿÿ¸é¥ûÿÿºH�5©�ëÔ1ÒH‰æH�}èIÞýÿH‹$H‰®B€:u H�PÿH…„]ûÿÿH‹U9ºH�5‰�H�h1ÿènÕýÿH‰îH‰Ç1Àè�Gÿÿé-ûÿÿ1ÒH‰æH�}èîÝýÿH‹$H‰[B€:u H�PÿH…„ûÿÿH‹ú8ºH�5V�H�hë£H�5a©H‰ïèéØýÿ…À…‹¶PBƒàóƒÈˆDB¸éÄúÿÿ1ÒH‰æH�} èvÝýÿH‹$H‰+B€:u#H…ÀxHƒ=B…„úÿÿHÇBÿÿÿÿétúÿÿH‹l81ÿºH�5îŒH�h è…ÔýÿH‰îH‰Ç1Àè˜FÿÿëµH�5˨H‰ïèGØýÿ…ÀuH� hB¸é.úÿÿè‰ÔýÿºH�5¥¨H‰ïèÒýÿ…Àu'H�5©¨H‰ïèØýÿ…Àu9Ç,B¸éêùÿÿH�5½¨H‰ïèÛ×ýÿ…Àu9Hƒ ÿA¸éÅùÿÿH�5^ŒH‰ïè¶×ýÿ…Àu9ÇàA¸éžùÿÿH�5x¨H‰ïè�×ýÿ…Àu9Hƒ ³A ¸éyùÿÿH�5/¨H‰ïèj×ýÿ…Àu<Ç”A¸éRùÿÿH�56¨H‰ïèC×ýÿ…Àuý¸éa÷ÿÿH�5–¦H‰ïèRÕýÿ…Àu€ ·>¸é=÷ÿÿH�5€¦H‰ïè.Õýÿ…Àu€ –>€¸é÷ÿÿH�5Z¦H‰ïè Õýÿ…Àu€%r>¸éõöÿÿH�5@¦H‰ïèæÔýÿ…Àu€ O>¸éÑöÿÿH�5¦H‰ïèÂÔýÿ…Àu€%+>þ¸é­öÿÿH�5Š‹H‰ïèžÔýÿ…Àu¶>ƒàçƒÈˆù=¸é}öÿÿH�5Ö¥H‰ïènÔýÿ…Àu¶Õ=ƒàçƒÈˆÉ=¸éMöÿÿH�5‚H‰ïè>Ôýÿ…Àu¶§=ƒàçƒÈˆ›=¸éöÿÿH�5¥H‰ïèÔýÿ…Àu€%w=ç¸éùõÿÿH�5b¥H‰ïèêÓýÿ…ÀtÜH�5W¥H‰ïè×Óýÿ…ÀuÇÙ=¸é¿õÿÿH�5J¥H‰ïè°Óýÿ…ÀuǶ=¸é˜õÿÿH�5!¥H‰ïè‰Óýÿ…ÀuÇ�=¸éqõÿÿº H�5¥H‰ïèMÍýÿ…Àu/L�e H�5¥L‰çèFÓýÿ…Àu)€%3H߸Æ/Hgé*õÿÿºH�5-¥éVùÿÿH�5â¤L‰çè Óýÿ…Àu€ ÷G ¸ÆóG�éîôÿÿºH�5½¤L‰çèÊÌýÿ…À„‚ºH�5©¤L‰çè®Ìýÿ…ÀuY1ÒH‰æH�}èl×ýÿˆ¦GH‹$€8t+H‹†2H�5ÿ‡1ÿºH�hèŸÎýÿH‰îH‰Ç1Àè²@ÿÿ€ cG ¸éaôÿÿºH�5ý‡é�øÿÿ1ÒH‰æH�}è×ýÿˆÿà�ÿ-„Ì~?�ÿ.…–€ ô:¸f.„H‹T$dH+%(…¾HƒÄ[]A\ÃÿP„bƒÿzuÕH‹-.1H�5 ‡H‰ïè/Ñýÿ…À„wH�5T¡H‰ïèÑýÿ…À…à·{:f%þ €f‰n:¸ë…D1Àéyÿÿÿf„H‹=aEè$ÊýÿH‹-½0HÇJEH…í„YH�5õ„H‰ïèªÐýÿA‰À¸E…À„)ÿÿÿf„H‰ïèØÎýÿH‰ E¸éÿÿÿ€H‹-Y0H�5¥„H‰ïèúÉýÿ…À„ÚH�5] H‰ïèãÉýÿ…À„óH�5K H‰ïèÌÉýÿ…À…ÎÇ–9¸é þÿÿH‹5ù/H�=ÊDè͸éƒþÿÿ€ ^9¸éoþÿÿ€·C9Hƒ ù9f%ø€Ìf‰-9¸éAþÿÿ�¶9ƒàùƒÈˆ9¸é#þÿÿ€%ý8ù¸éþÿÿ€H‹=a/è\Gþÿ¸éòýÿÿf�¶Í8H‹-B/H�5uŸƒãŸH‰ïˆ³8è:Ïýÿ…À„¢H�5GŸH‰ïè#Ïýÿ…À…ƒË@¸ˆ�8é˜ýÿÿ„€%n8÷¸éýÿÿ€H‹5Ñ.H�=ªC襸é[ýÿÿ€%68ï¸éGýÿÿ€·8f%þ€Ìf‰ 8¸é!ýÿÿ�ƒË ¸ˆö7é ýÿÿDÇê7¸éôüÿÿ@H�-fžH‰-B.é½ýÿÿDǺ7¸éÄüÿÿ@H�5džH‰ïè!Îýÿ…Àu?€ ‹7@¸éœüÿÿ@H�50žH‰ïèùÍýÿ…À…܃Ë`¸ˆW7énüÿÿºH�5žH‰ïèºÇýÿ…À„»ºH�5žH‰ïèžÇýÿ…À„úº H�5þ�H‰ïè‚Çýÿ…À„VH�5–ŠH‰ïè{Íýÿ…À… ¶â6ƒàóƒÈˆÖ6¸éæûÿÿH�5o�H‰ïèçÆýÿºH�5�…À„ëþÿÿ1ÿèLÉýÿH‰îH‰Ç1Àè_;ÿÿ¸é¥ûÿÿºH�5�ëÔ1ÒH‰æH�}è¹ÑýÿH‹$H‰6€:u H�PÿH…„]ûÿÿH‹Å,ºH�5ù€H�h1ÿèÞÈýÿH‰îH‰Ç1Àèñ:ÿÿé-ûÿÿ1ÒH‰æH�}è^ÑýÿH‹$H‰Ë5€:u H�PÿH…„ûÿÿH‹j,ºH�5Æ€H�hë£H�5ÑœH‰ïèYÌýÿ…À…‹¶À5ƒàóƒÈˆ´5¸éÄúÿÿ1ÒH‰æH�} èæÐýÿH‹$H‰›5€:u#H…ÀxHƒ=‰5…„úÿÿHÇx5ÿÿÿÿétúÿÿH‹Ü+1ÿºH�5^€H�h èõÇýÿH‰îH‰Ç1Àè:ÿÿëµH�5;œH‰ïè·Ëýÿ…ÀuH� Ø5¸é.úÿÿèùÇýÿºH�5œH‰ïèuÅýÿ…Àu'H�5œH‰ïèrËýÿ…Àu9Çœ5¸éêùÿÿH�5-œH‰ïèKËýÿ…Àu9Hƒ o5¸éÅùÿÿH�5ÎH‰ïè&Ëýÿ…Àu9ÇP5¸éžùÿÿH�5è›H‰ïèÿÊýÿ…Àu9Hƒ #5 ¸éyùÿÿH�5Ÿ›H‰ïèÚÊýÿ…Àu<Ç5¸éRùÿÿH�5¦›H‰ïè³Êýÿ…Àuÿà�ÿ-„Ì~?�ÿ.…–€ d.¸f.„H‹T$dH+%(…¾HƒÄ[]A\ÃÿP„bƒÿzuÕH‹-ž$H�5|zH‰ïèŸÄýÿ…À„wH�5Ä”H‰ïèˆÄýÿ…À…à·ë-f%þ €f‰Þ-¸ë…D1Àéyÿÿÿf„H‹=Ñ8蔽ýÿH‹--$HǺ8H…í„YH�5exH‰ïèÄýÿA‰À¸E…À„)ÿÿÿf„H‰ïèHÂýÿH‰y8¸éÿÿÿ€H‹-É#H�5xH‰ïèj½ýÿ…À„ÚH�5Í“H‰ïèS½ýÿ…À„óH�5»“H‰ïè<½ýÿ…À…ÎÇ-¸é þÿÿH‹5i#H�=8è=¸éƒþÿÿ€ Î,¸éoþÿÿ€·³,Hƒ i-f%ø€Ìf‰�,¸éAþÿÿ�¶�,ƒàùƒÈˆ�,¸é#þÿÿ€%m,ù¸éþÿÿ€H‹=Ñ"èÌ:þÿ¸éòýÿÿf�¶=,H‹-²"H�5å’ƒãŸH‰ïˆ#,èªÂýÿ…À„¢H�5·’H‰ïè“Âýÿ…À…ƒË@¸ˆñ+é˜ýÿÿ„€%Þ+÷¸éýÿÿ€H‹5A"H�=ú6è¸é[ýÿÿ€%¦+ï¸éGýÿÿ€·‹+f%þ€Ìf‰}+¸é!ýÿÿ�ƒË ¸ˆf+é ýÿÿDÇZ+¸éôüÿÿ@H�-Ö‘H‰-²!é½ýÿÿDÇ*+¸éÄüÿÿ@H�5Ô‘H‰ïè‘Áýÿ…Àu?€ û*@¸éœüÿÿ@H�5 ‘H‰ïèiÁýÿ…À…܃Ë`¸ˆÇ*énüÿÿºH�5…‘H‰ïè*»ýÿ…À„»ºH�5x‘H‰ïè»ýÿ…À„úº H�5n‘H‰ïèòºýÿ…À„VH�5~H‰ïèëÀýÿ…À… ¶R*ƒàóƒÈˆF*¸éæûÿÿH�5ß�H‰ïèWºýÿºH�5ƒt…À„ëþÿÿ1ÿè¼¼ýÿH‰îH‰Ç1ÀèÏ.ÿÿ¸é¥ûÿÿºH�5‰tëÔ1ÒH‰æH�}è)ÅýÿH‹$H‰Ž)€:u H�PÿH…„]ûÿÿH‹5 ºH�5itH�h1ÿèN¼ýÿH‰îH‰Ç1Àèa.ÿÿé-ûÿÿ1ÒH‰æH�}èÎÄýÿH‹$H‰;)€:u H�PÿH…„ûÿÿH‹ÚºH�56tH�hë£H�5A�H‰ïèÉ¿ýÿ…À…‹¶0)ƒàóƒÈˆ$)¸éÄúÿÿ1ÒH‰æH�} èVÄýÿH‹$H‰ )€:u#H…ÀxHƒ=ù(…„úÿÿHÇè(ÿÿÿÿétúÿÿH‹L1ÿºH�5ÎsH�h èe»ýÿH‰îH‰Ç1Àèx-ÿÿëµH�5«�H‰ïè'¿ýÿ…ÀuH� H)¸é.úÿÿèi»ýÿºH�5…�H‰ïèå¸ýÿ…Àu'H�5‰�H‰ïèâ¾ýÿ…Àu9Ç )¸éêùÿÿH�5��H‰ï軾ýÿ…Àu9Hƒ ß(¸éÅùÿÿH�5>sH‰ïè–¾ýÿ…Àu9ÇÀ(¸éžùÿÿH�5X�H‰ïèo¾ýÿ…Àu9Hƒ “( ¸éyùÿÿH�5�H‰ïèJ¾ýÿ…Àu<Çt(¸éRùÿÿH�5�H‰ïè#¾ýÿ…Àu¾ýÿ1ÿºH�5Poè‹´ýÿH‰ï¾H‰Â1Àè¾ýÿ1ÿºH�5soèf´ýÿH‰ï¾H‰Â1Àèô½ýÿ1ÿºH�5–oèA´ýÿH‰ï¾H‰Â1ÀèϽýÿ1ÿºH�5±oè´ýÿH‰ï¾H‰Â1À誽ýÿ1ÿºH�5Ôoè÷³ýÿH‰ï¾H‰Â1Àè…½ýÿ1ÿºH�5ÿoèÒ³ýÿH‰ï¾H‰Â1Àè`½ýÿ1ÿºH�5Zpè­³ýÿH‰ï¾]H‰Â1Àé:½ýÿf.„óúUºH‰ýH�5\m1ÿèu³ýÿH‰ï¾H‰Â1Àè½ýÿºH�5‡m1ÿèP³ýÿH‰ï¾H‰Â1ÀèÞ¼ýÿºH�5òm1ÿè+³ýÿH‰ï¾H‰Â1Àè¹¼ýÿºH�5n1ÿè³ýÿH‰ï¾H‰Â1À蔼ýÿºH�58n1ÿèá²ýÿH‰ï¾H‰Â1Àèo¼ýÿºH�5Sn1ÿè¼²ýÿH‰ï¾H‰Â1ÀèJ¼ýÿºH�5vn1ÿè—²ýÿH‰ï¾H‰Â1Àè%¼ýÿºH�5¡n1ÿèr²ýÿH‰ï¾]H‰Â1Àéÿ»ýÿff.„@óúUºH‰ýH�5l1ÿè5²ýÿH‰ï¾H‰Â1ÀèûýÿºH�5Gl1ÿè²ýÿH‰ï¾H‰Â1Àèž»ýÿºH�5úl1ÿèë±ýÿH‰ï¾H‰Â1Àèy»ýÿºH�5m1ÿèÆ±ýÿH‰ï¾H‰Â1ÀèT»ýÿºH�58m1ÿ衱ýÿH‰ï¾H‰Â1Àè/»ýÿºH�5[m1ÿè|±ýÿH‰ï¾H‰Â1Àè »ýÿºH�5†m1ÿèW±ýÿH‰ï¾]H‰Â1Àéäºýÿ@óúUºH‰ýH�5 k1ÿè%±ýÿH‰ï¾H‰Â1À賺ýÿºH�57k1ÿè±ýÿH‰ï¾H‰Â1À莺ýÿºH�5êk1ÿèÛ°ýÿH‰ï¾]H‰Â1Àéhºýÿ„óúéwÿÿÿ€óúégÿÿÿ€óúUºH‰ýH�5„m1ÿè…°ýÿH‰ï¾H‰Â1Àèºýÿ1ÿºH�5­mè`°ýÿH‰ï¾H‰Â1Àèî¹ýÿ1ÿºH�5Ømè;°ýÿH‰ï¾H‰Â1Àèɹýÿ1ÿºH�5ómè°ýÿH‰ï¾H‰Â1À褹ýÿ1ÿºH�5nèñ¯ýÿH‰ï¾H‰Â1Àè¹ýÿ1ÿºH�5Anè̯ýÿH‰ï¾H‰Â1ÀèZ¹ýÿ1ÿºH�5ln觯ýÿH‰ï¾H‰Â1Àè5¹ýÿ1ÿºH�5�n肯ýÿH‰ï¾H‰Â1Àè¹ýÿ1ÿºH�5ºnè]¯ýÿH‰ï¾H‰Â1Àèë¸ýÿ1ÿºH�5ånè8¯ýÿH‰ï¾H‰Â1ÀèÆ¸ýÿ1ÿºH�5oè¯ýÿH‰ï¾H‰Â1À衸ýÿ1ÿºH�5;oèî®ýÿH‰ï¾H‰Â1Àè|¸ýÿ1ÿºH�5VoèÉ®ýÿH‰ï¾H‰Â1ÀèW¸ýÿ1ÿºH�5yo褮ýÿH‰ï¾H‰Â1Àè2¸ýÿ1ÿºH�5¤oè®ýÿH‰ï¾H‰Â1Àè ¸ýÿ1ÿºH�5ÏoèZ®ýÿH‰ï¾H‰Â1Àèè·ýÿ1ÿºH�5pè5®ýÿH‰ï¾H‰Â1Àè÷ýÿ1ÿºH�55pè®ýÿH‰ï¾H‰Â1Àèž·ýÿ1ÿºH�5`pèë­ýÿH‰ï¾H‰Â1Àèy·ýÿ1ÿºH�5‹pèÆ­ýÿH‰ï¾H‰Â1ÀèT·ýÿ1ÿºH�5®pè¡­ýÿH‰ï¾H‰Â1Àè/·ýÿ1ÿºH�5Ùpè|­ýÿH‰ï¾H‰Â1Àè ·ýÿ1ÿºH�5qèW­ýÿH‰ï¾H‰Â1Àèå¶ýÿ1ÿºH�5/qè2­ýÿH‰ï¾H‰Â1ÀèÀ¶ýÿ1ÿºH�5Zqè ­ýÿH‰ï¾H‰Â1Àè›¶ýÿ1ÿºH�5eqèè¬ýÿH‰ï¾H‰Â1Àèv¶ýÿ1ÿºH�5˜qèìýÿH‰ï¾H‰Â1ÀèQ¶ýÿ1ÿºH�5Ãq螬ýÿH‰ï¾H‰Â1Àè,¶ýÿ1ÿºH�5îqèy¬ýÿH‰ï¾H‰Â1Àè¶ýÿ1ÿºH�5rèT¬ýÿH‰ï¾H‰Â1Àèâµýÿ1ÿºH�5¾I‰ÅHÇ@èàz¹º>L‰ç¾ èÉzI‹D$I�uH‰ïÿPHI‹D$I�u¿ÿPHL‰ÿè�{‹»H‹5¬L‰çè¨ýÿI‰Øét@<@…ÈüÿÿI‹MA¸H‰êL‰æI‹¼$øè;¤ýÿ…À„£üÿÿI‹„$øH‰ïH‹@ÿP D‹.H‰ÅE…À„ÂüÿÿfDI‹MM‹EH‰ê¿H�5¡t1À躪ýÿI‹Eö@…, ·PH�5þy¿1ÀfÁêƒâ莪ýÿémüÿÿf„H‹T$0I�sHƒæøI‰‰ÂH‹LøI‰LøL‰ÚH)òÐH)Óƒàøƒø‚¡üÿÿƒàø1҉уÂH‹< H‰<9Ârïé†üÿÿf�H‹D$¿k_1É1ÒH»__nm_thnA¸H�pöH‰Xöf‰~H‹=‡è¦ýÿH…Àt €x„£¿L‹=�èʤýÿº¾D‹IH� 5yI‰ÆH‰Ç1Àè%®ýÿL‰þL‰÷ƒ(è“¥ýÿL�5ÎMI‰ÇH‹ L‰þH‹xèæ«ýÿL‰ÿèN ýÿ¾L‰ÿèá¦ýÿH‹â1ÒL‰ÿ‹pI‹Gÿ��¿Ç¹è4¤ýÿºH�5¶xL‰ÿH‰–èY˜H‹T$L‰ñL‰ÿI‰ÀA¹H�5•xH‰Ã趘H‹T$L‰ñL‰ÿA¹L�H�5yxè’˜¾H‰ßè…§ýÿ¿軣ýÿfïÀ¹1öH‰ƒ¸º>L‰ÿI‰ÆèöwH‰ßèÎx‹H‹5ùL‰ÿèi¥ýÿA¸1ÉL‰òH‰ÞL‰ÿè£ýÿL‰ÿ諟ýÿI‹7L‰ÿèÀÀH‹ Ç�`DÿÿÿH…í„—‹Eƒø„ˆL�5[Lƒø„ÝúÿÿI‹E1ÿM‹mºI‹¬$øH�5BrH‹H‹Xè¡ýÿL‰éL‰âH‰îH‰ÇI‰Ø1Àèÿÿé€H‹H‹OH�5wL‹G¿H‹H‹P1Àè³§ýÿéðøÿÿfD¿L‹=L臢ýÿº¾D‹H� wI‰ÆH‰Ç1Àèâ«ýÿL‰þL‰÷ƒåèP£ýÿL�5‹KI‰ÇH‹ÇL‰þH‹x裩ýÿL‰ÿè žýÿ¾L‰ÿ螤ýÿH‹Ÿ1ÒL‰ÿ‹pI‹Gÿ��¿0Çvèñ¡ýÿºH�5–vL‰ÿH‰Sè–H‹T$L‰ñL‰ÿA¹L�þH�5NvH‰Ãèo–H‹0L‰ÿH‹T$A¹L�ÓH� Fv‹p…öH�5aÆIDöè7–H‹T$L‰ñL‰öA¹L�ŸL‰ÿè–¾H‰ßè ¥ýÿ¿è@¡ýÿfïÀ1ö¹H‰ƒ¸º>L‰ÿÇ@H‰D$èru¹º>L‰ÿ¾ è[u¹º>L‰ÿ¾èDuH‰ßèv‹VH‹5GL‰ÿè·¢ýÿH‹T$1ÉH‰ÞA¸L‰ÿèO ýÿL‰ÿè÷œýÿI‹7L‰ÿè ¾H…ít?‹­ ƒø…hýÿÿ‹ Ö…É„UøÿÿH‹T$‰éH�5„o1À¿èp¥ýÿé6øÿÿƒ=m „øÿÿH‹D$XdH+%(…HƒÄh[]A\A]A^A_ľL‰ÿèÓ£ýÿ¿è  ýÿH‰ïI‰‡¸I‰ÅHÇI‹D$L‰îÿPH¹º>L‰ç¾è3tL‰ÿè u‹EH‹56L‰ç覡ýÿA¸L‰ê1ÉL‰þL‰çè@ŸýÿL‰çèè›ýÿI‹4$L‰çèü¼‹�P‰…À…*ÿÿÿ¿L‹%) èdŸýÿº¾D‹ãH� )tH‰ÅH‰Ç1À迨ýÿL‰æH‰ïƒÂè- ýÿH‰ÅH‹«H‰îH‹x臦ýÿH‰ïèïšýÿH‰ï¾è‚¡ýÿH‹ƒ1ÒH‰ï‹pH‹Eÿ��¿ÇZèÕžýÿH‰ïºH�5®sH‰7èú’L‰ñL‰öH‰ïI‰ÄH‹/H�ÐrL�Ù‹@…ÀH�¾rHDÐE1ÉèA“L‰ç¾è4¢ýÿ¾¿èe§ýÿ¹1öH‰ïI‰„$¸º>I‰Åè¦rL‰çè~s‹¸H‹5©H‰ïè ýÿL‰æA¸1ÉL‰êH‰ïè³�ýÿH‰ïè[šýÿH‹uH‰ïèo»é¯ýÿÿf.„I‹MA¸H‰êL‰æI‹¼$øèœýÿ…À„{ôÿÿ¶l$(I‹UH‰èöB„™ôÿÿƒÀ€¶ÀH�h€éŠôÿÿfDI‹MA¸H‰êL‰æI‹¼$øèÛýÿ…À„+ôÿÿI‹„$øI‹UH‰ïH‹@öB„ÿP@H‰Åé7ôÿÿH‹T$L‰ñL‰ç» A¹L�sH�5�Áè瑾 L‰ÿèÚ ýÿ¿ è�ýÿ¹º>L‰çI‰‡¸¾I‰ÅHÇÇ@èAq¹1öL‰çº>è-qI‹D$I�uH‰ïÿPHépöÿÿf„I‹„$øI‹UH‰ïH‹@öBtWÿPXH‰Åépóÿÿ@‹T$0‰ÀA‰‹TüA‰TüéÕóÿÿ�H�5Ïp¿1Àèm¡ýÿI‹Eé¸öÿÿ@ÿP8H‰Åé)óÿÿDÿPPH‰ÅéóÿÿD‰À·TþfA‰Tþé‚óÿÿèyšýÿf„óúAVI‰öAUI‰ÕATUH‰ýS1ÛHƒìdH‹%(H‰D$1ÀL�d$ë,fDH‰ê¾L‰çè¤ýÿ…À~DL‰ê¾L‰çHƒÃAÿÖ1ÒH‰ÞH‰ïè5¥ýÿ…ÀtÉ1ÀH‹T$dH+%(uHƒÄ[]A\A]A^Ãf�¸ëÚèÔ™ýÿ@óúATH�5RpA¼SH‰ûHƒìèP�ýÿ…Àt7H�5RmH‰ßè=�ýÿ…Àt$H�5%pH‰ßè*�ýÿ…Àt¶ƒè0tE1ä…ÀA”ÄHƒÄD‰à[A\Ãf.„¶CE1äƒèx…ÀA”ÄëÙff.„óúATH�5ÂoA¼SH‰ûHƒìèÀœýÿ…À„‹H�5¤oH‰ß詜ýÿ…ÀtxH�5«lH‰ßA¼è�œýÿ…Àt_€;0uW€{xuQ¶CH�SE1äH�5_ÙëD¶JöDNtIƒÄHƒÂ¶„Àt!¶ÈöDNuÜ<-t<:u HƒÂëáfDE1äHƒÄL‰à[A\Ãf�óúAWAVAUATUSH�ìˆL‹¿�L‹§dH‹%(H‰D$x1ÀM…ÿ„�I‰ý�I‹ŸH…Ûué_€H‹H…Û„Lƒ{uîI‹¬$ÐH9k uàL‹µ¸M…ö„ðH‹E@I‹¼$ÈH‰D$è¢þÿÿH‰ÇH‰Åèw™ýÿI‹´$ÈA‰èL‰ïH‰ÁH�OýÿÿH‰$èF¸H‹H‹SL‰ïH�t$ÇD$ HÇD$H‹€HÇD$HÇD$(L‹ ¸HÇD$0L)àIG0HÐH‰D$8I‹‡˜H�DL‰òH‰D$@è<�ýÿH‹s1ÒL‰ïI·˜èW¢ýÿL‹$…ÀuH‹t$L‰êL‰÷L‰$è[›ýÿH9D$L‹$ta1ÀH‹T$xdH+%(…H�Ĉ[]A\A]A^A_ÄM‹M…ÿ…ƒþÿÿºH�5'h1ÿèp–ýÿH‰Ç1Àè†ÿÿ¸롸fïÀL‰Ö¹ H9ÅH�|$XD$XL�t$PHÇD$PRSDSHFÅHÇD$pH‰Âè.šýÿH‹<$èE“ýÿH‹t$@L‰òL‰ïè5�ýÿ…À„=ÿÿÿH‹–H‹�I‹G0L)àHCHÇ‚ÈH‰‚À¸é ÿÿÿH‹}@蟗ýÿH‰…¸I‹¬$ÐL‹µ¸éìýÿÿèß•ýÿff.„@óúATHƒìdH‹%(H‰D$1À‹|íÇD$ƒøÿtH‹T$dH+%(ucHƒÄA\Ã@L�d$E1À1Ò1öL‰áH�=(×è}ŸýÿH…Àt ‹D$ƒøÿt4…À•À¶À‰í묀E1ÀL‰á1Ò1öH�=ÏkèBŸýÿëÈè+•ýÿH�„s¾�H�=ºkè3õþÿóúHƒìè3ÿÿÿH�=khè'œýÿH…ÀtR‹P H‹@‰¹þH‰¶þH�„k€ ` H‰iâH¸Ç H‰fHƒÄÃf„Çjþë¶@AWAVL�5EkAUATL�%JìUH‰ýSHƒìH‰t$@è“þÿÿIƒ<$„³L�=9ì1Ûë&DL‰îH‰ïèÝ—ýÿ…Àt=IƒÇ(ƒÃIƒè„‚A‹G M‹/…ÀtÔèGþÿÿH‰ïƒø•À¶ÀIÅL‰îè —ýÿ…ÀuÃHcÛH‹L$L‰öH‰ïH�›I�ÄH‰HÇ@ èv—ýÿ…ÀuèýýÿÿH�-yj…ÀH�qjHDèéLÿÿÿHƒÄ[]A\A]A^A_ÃH�æq¾´H�=4jè­óþÿff.„f�UH‰ý1ÒHƒìH‹=ÿödH‹%(H‰D$1ÀH‰æè—–ýÿH‰ïH‰Æè¼þÿÿH‹,$H;-ÑötH‰-ÈöH‹D$dH+%(u.HƒÄ]Ãf�ºH�5Äd1ÿèÍ’ýÿH‰îH‰Ç1ÀèàÿÿH‹,$ë»èõ’ýÿDATUH‰õHƒìèaÿÿÿL‹%jöA¶$<,tA„Àu HƒÄ]A\ÃDH�5™d1ÿºèm’ýÿHƒÄL‰æH‰Ç]1ÀA\éyÿÿf„IƒÄH‰ïL‰%öHƒÄ]A\éöþÿÿfDóúAVAUATUS‰ûHƒìdH‹%(H‰D$1Àèyüÿÿ�»Óþÿÿƒÿ6‡Ã�ýÿH�koHcºHÐ>ÿàMcäH�O«IÁäJct H�=�i‰5Áéètýÿÿ·5= D·öH�=ùièYýÿÿ¸H‹T$dH+%(…PHƒÄ[]A\A]A^ÃÇrÿ·5ï ëµDÇž ·5× ë�DÇŠ ·5¿ ë…DÇ2é·5§ éjÿÿÿf�Çé·5� éRÿÿÿf.„Ç> ·5o é2ÿÿÿf.„Ç" ·5O éÿÿÿf.„H�=æhètýÿÿ·5- éðþÿÿ„H�=/hèTýÿÿ·5 éÐþÿÿ„H�=Nhè4ýÿÿ·5íé°þÿÿ„H�=[hèýÿÿ·5Íé�þÿÿ„H�=³gèôüÿÿ·5­épþÿÿ„H�=ÙgèÔüÿÿ·5�éPþÿÿ„H�=ãgè´üÿÿ·5mé0þÿÿ„H�=Ùfè”üÿÿ·5Méþÿÿ„H�=Ógètüÿÿ·5-éðýÿÿ„¾H�=×gè?ûÿÿ·5éËýÿÿH‹-Ió¾:H‰ïè�ýÿH…À„²I‰ä1ÒH�xA‰ÅL‰æA)íèì—ýÿH�=¿fH‰ÆèíúÿÿH‹$¶<.„Å„À…›H‹-ïò1ÒL‰æH‰ïè²—ýÿH‹$¶ €ù:”„É”ÁÊtHcðH=ÿÿ†ýÿÿL‹5¶òMcíH�-\¨E1äH�áef�L‰êH‰ÞL‰÷è’Œýÿ…Àu B€<+„ÊüÿÿH‹]HƒÅAƒÄH…ÛuÒ1ÿºH�5HƒÆ…ÿu݉ÖÁæò‰ÒHÑH‰ÊHÁêH1ÊHÁâ�âüH�Â0aéXýÿÿº0aéNýÿÿH��d¾zH�=ö\èoæþÿèÊ™þÿèå—þÿDóúUSHƒì¶?ó¨…ŸH�-…®¨uL‹Rþ…ÀuB‹ ÄÝH�ÅžºH�-^ë€H‹hH…í„‹‹HƒÀ9Ñuéf„èûïÿÿ…Àt&H‰ï诅ýÿH�xèV‡ýÿH‰îÆ_H‰ÃH�xH‰ÝèaƒýÿH‰-BÓHƒÄ[]é/âþÿ€ºH�5DX1ÿè5…ýÿH‰Ç1ÀèK÷þÿ¶tòé8ÿÿÿ€H�-icé|ÿÿÿf.„f�óúǶ?òƒà<tH‹ ¢ñH� Š…Ét3‹añH�¯…Òt"ƒ=·òH�xÕuƒ=«òH�PûHEÂË56ñH�“yH�\c…öHDÂÃDAUI‰ýATE1äUSH�•ÜHƒìèÔîÿÿHƒ=lÜu(ëp„L‰îH‰ïè%ˆýÿ…Àt9HƒÃ(AƒÄHƒ{ètJ‹C H‹+…ÀtØè“îÿÿL‰îƒø•À¶ÀHÅH‰ïèì‡ýÿ…ÀuÇMcäH�ÜK�¤‹DÐ HƒÄ[]A\A]ÃHƒÄ1À[]A\A]Ãff.„óú€¸tÃAUATUH‰õSH‰ûHƒìL‹gH‰÷èÔƒýÿA€<$@Lcèt:L‰êH‰îL‰çè\�ýÿA‰À¸E…Àu C€<,@¸t3HƒÄ[]A\A]Ä€}_uÀƒèH�uI�|$HcÐè�ýÿ…ÀtÃë¦H‰±ü1ÀëÂDóúSH‹6H‰ÓH�=åVºèä€ýÿ…ÀuÇ[ÄóúHƒìH‹WH�5øX1À¿èщýÿ¸HƒÄÀóúAWAVAUATUSH�ìˆdH‹%(H‰D$x1ÀèfàþÿèíÿÿD‹ ÎúE…É…QH‹=²úH…ÿ„H‹-*ðH…íuéãH‹­øH…í„ÓH‹EƒxuæèÁèÿÿ…À„˜º+AH�5ì+H‰ïèU�ýÿH…À„©"H‹-ÅïH� ÞéÿÿH‹•H‰ŠÀH‹ 1úH‰‚ÐH‰ŠÈHÇ@@5H‹Eƒx„�DºH�5Ü1ÿèÍ�ýÿH‰îH‰Ç1ÀèàóþÿH‹-YïH‹…H�5;ø¹2H‹çÙH�¸ÐóH¥‹ —Ùƒˆ¸ ‹=~Ù‰�`÷ÙÒ‰�¬…ÿˆ�H‰ïèYH‹ûîH‰D$0H‹@H‹8èÚQH‹‹ýH…À„.H‹@`H‹=§îL�%J,H�5Á,ǧüL‰âH‰D$@芇ýÿHc=“üHÁçèÚ‚ýÿH‹=kîL‰âH�5 MH‰jüÇhüèS‡ýÿHc5\üºH‹=HüH� ™IèTýÿH‹õüH‹HPH‰L$H…É„y‹PX…ÒŽºH‹D$@H‹L$1íHƒÀëƒÅHƒÀ(9Õ„–H9uìH‹D$H�xH‰=ôûè‚ýÿ¶H‰ÝûH‰ÇH‰Á„ÒtH�ÁöPŒuÆ_¶QHƒÁ„ÒuäH‹]ü9hXŽ4H‹L$@HcÅÇD$ ‰l$H�€L�<ÁH‹D$I9G…ãI‹?¶è€ýÿH�xè­�ýÿI‰Ä€û@„©M‹/¾@L‰ïèa€ýÿ¾L‰çM‰éH‰ÃH‹öL�·*HÇÂÿÿÿÿ‹HH�E¦…ÉH� �3LEÀ1ÀèЊýÿH‹=áì1É1ÒE1ÀL‰æèj‚ýÿH…Àt €x„‹H‹¬õL� _*L�z¥HÇÂÿÿÿÿH� à(¾L‰ç‹@…ÀH�Õ¥LEÈHƒìAÿ71ÀèbŠýÿH‹=sìXE1ÀZ1É1ÒL‰æèú�ýÿH…À„ñ¶@1É<”Á‰L$H…Û…5<„-H‹"õM‹L�Ò)H� »2HÇÂÿÿÿÿ¾L‰ç‹@…ÀH�O¥LEÀ1Àèã‰ýÿL‰çè«~ýÿH�xèR€ýÿL‰æH‰ÅH‰Çèd|ýÿ1ÿ€}@¾@@”ÇHïèý~ýÿH‰D$8H…ÀtÆ@H‹ÀùLc-ÁùL‰d$(E1öI‰ìH‰$L‰í€L9õv6J�\5L‰çHÑëI‰ÝIÁåL,$I‹uèÔ�ýÿ…Àˆ „¦L�sL9õwÊL‰åL‹d$(¶EH�5‡JèÑwýÿ…À¸DèE¾�M‹vM…öu×A¾a…í„$H‹$H‹8èísýÿH�xè”uýÿE‰ñ¾H� –H‰ÅI‹D$(HÇÂÿÿÿÿA¾H‰ïL‹1Àèã~ýÿI‹|$(H‰îè–qýÿH‰ïI‰D$è™pýÿIƒ|$…þÿÿI‹t$(H�=.1ÀèjåþÿéîýÿÿDH‹ÙàH‹CH‰\$H‹8è¸CH‰ßèÐJHƒ=`ï„ H‹»àL�%ÐH…Ûtb€L‰æH‰ßèmuýÿH‰ÅH…Àtöÿÿ‹ñÞ…Û…öÿÿé�ôÿÿºH�5è«1ÿè�fýÿL‰îH‰Ç1Àè”ØþÿH‹-µâ‹E@…Àu¶¯Ó¨„H‹EH…À„ H‰[â‹]â‹_â…Ò…XÇQ⺉Jâ)ЃÀ‰âH˜H�<…èàgýÿHc âH‰úáH‰Ç…Ò~HÁâ¾ÿè�gýÿL‹%âD‹-ûáE1öA‹D$@D‰í…ÀŽ-I‹\$HD‰,$E1ÿE1öI‰ÝéÐDD‹@Aƒøÿt~D‰Ã+$H‹5‘áD‰D$HcÛHÁãHÞHcƒùÿtWH� ‰L‹ º1ÿM‹lÍH�5xD‰L$èNeýÿ‹t$L‰âH‰ÇL‰é1ÀèZ×þÿ‹`áD‹L$H‹50áL‹%iá‰$HÞD‰M‹l$HAƒÆLíH‹}H…ÿtkè.eýÿAÆ€}$tH‹}èeýÿE�tA‹D$@IƒÇD9øŽÑH‹ áK�,¿E‰ùHÁåJƒ<ùI�D-…ÿÿÿ€x$… ÿÿÿM‹l$HLí뤀H‹}ë�D‰í‹¹à�ûÿÿW�ýÿÿOH‹=Šà‹�àè—dýÿ¿I‰À‹ià�D �CA�FH˜J�DH‰èßè«€H‹=äßèß;éLèÿÿ1ÿºH�5lèdýÿ9ë‰îMóH‰Ç1Àè&Öþÿë‹L‰ëD‹,$…ÀŽcÿÿÿIcÕAºHƒÃD‰íL‹àL‹ ßß1ÀI)Òëƒ;ÿt'HƒÀHƒÃ(A9D$@Ž)ÿÿÿIƒ<À‰Æu߀{ tÞƒ;ÿuÙ‰êD)êHcÒI� ‘ƒ9ÿt#HcÕLÒI�‘f„H‰ÑHƒÂƒÅƒzüÿuð‰1‰+ëŸ1ÿºH�5¼¨H‹m(èScýÿH‰ÇH‹D$xdH+%(…ŒH�ĈH‰î1À[]A\A]A^A_éAÕþÿL‰çèI`ýÿ1ÿºH�5‹ècýÿH‰ÇH‹D$xdH+%(…?H�Ĉ1À[]A\A]A^A_é÷Ôþÿ‹5ß9ÆŽšüÿÿ‰ñ‹íÞ)Á‰ðƒÁ9Ñ�˜üÿÿ‰ ØÞ‰Êé‹üÿÿE1öE…ÿAžÆAƒÆbéÉîÿÿ…Ò…ãûÿÿA‹D$@éòÿÿE1í1Û…ÀŽòÿÿI‹D$HO�t­J‹,ðD¶}A€ÿ?tV¾@H‰ïèúbýÿH…ÀtD1ÀA€ÿ@”ÀH�|èbdýÿ¾@H‰ÇH‰ÃèBcýÿH…À„ÆL‹%WÞI‹D$HJ‰ð»A‹D$@IƒÅD9胅ۄ—ñÿÿI‹|$HHcðº(H� g*èr`ýÿL‹%ÞémñÿÿǸ¹éMàÿÿ€L‹L$E1À¹ÿÿÿÿ1ÒH‹=âÝL‰þÇD$PèJ²D‹T$PE…Ò…ÜðÿÿH‹‹RÁêƒòƒâˆP#éÅðÿÿI‹NH� H�5 1À¿è7hýÿéÔöÿÿM…ítL‰ê1öL‰çè€UL‰ïèXbýÿL‰ïèP^ýÿH‰ïèH^ýÿéåÿÿ…À…K‹Kƒùÿ…TòÿÿéTòÿÿf.„H‰îL‰÷èå^ýÿé‚ôÿÿ¾.H‰ïèƒaýÿH…À…¹ôÿÿºH�5®1ÿè·`ýÿH‰îH‰Ç1ÀèÊÒþÿH‹-ëÜé‰óÿÿºH�5A€ÿtÎL‰î1ÿè‚`ýÿH‰îA¶×¹H‰Ç1ÀèŒÒþÿH‹-­ÜéKóÿÿL‰ÿèˆbýÿI‰ÇéÁøÿÿ‹ zØ…É„däÿÿ1ÿè«|H‹=äÛèß7éLäÿÿH‹D$H‹¶H‰0Ü„À„ÍùÿÿL‹D$H1öH¿ €�HÑHƒÂ€ù-wH‰øHÓèƒàEðLE¶„ÀuÝ@„ö„‰ùÿÿL‰ÝÛé}ùÿÿM‹4$ºH�5ÿ1ÿè©_ýÿH‰ÇL‰ö1Àè¼ÑþÿL‹3é‰þÿÿH�=] èÈ]ýÿéöÿÿºH�57üéÍâÿÿ¿xèHaýÿH�xH‰ÁH‰ÂHÇHƒçøHÇ@p1ÀH)ùƒÁxÁéóH«ÇBÿÿÿÿHÇBÿÿÿÿHÇB ÿÿÿÿHÇB(ÿÿÿÿHÇBhÿÿÿÿH‰WÛéøëÿÿH‹-£Ìé”ÝÿÿH‹?Û1ÿºH�5ÙýH‹@HJ‹,ðèÜ^ýÿH‰ÇH‰î1ÀèïÐþÿé´üÿÿ¿(è `ýÿH‹51¬ºH‰ÇI‰Åè‰hýÿ…À„{H‰ïèy`ýÿH‰ÅL�` H‹ÌL‹p(M…ö…ûóÿÿé<ýÿÿf„H‹@(H‹�øH‰×H‰T$èÈ\ýÿH‹T$…À„q‹‚¸H‹Š°…ÀަóÿÿƒèH‰l$H‰ÍH�DÁH‰\$0H‹\$L‰d$(L‹$$H‰D$L‰l$ ëHƒÅH9l$„¾H‹EL‰âH‰ÞL‹hL‰ïè²[ýÿ…Àu×M‰èH‰éH‹\$0L‹l$ ‹üÕL‹d$(H‹l$…Ò…²H‹$1ÒL‰çI�4èôQé”óÿÿM‹4$º1ÿD‰D$H�5¨ü‰ $è€]ýÿ‹ $‹T$L‰öH‰Ç1ÀèŒÏþÿL‹3éYüÿÿH‹=…ÕH…ÿ…ÇàÿÿéÒàÿÿA¾cé{éÿÿ1ÿE1ÿé1ïÿÿH‹l$L‹l$ L‹d$(é–òÿÿ1ÿºH�5pôè]ýÿH‰Ç1Àè)ÏþÿécþÿÿL‰Â¿H‰L$H�5¶èÛcýÿH‹L$H‹L‹@é$ÿÿÿH‰$1ÿºH�5(¢èÃ\ýÿH‹4$H‰Ç1ÀèÕÎþÿé²àÿÿèë\ýÿff.„óúATHƒìdH‹%(H‰D$1Àƒ=‹´ÿÇD$tE¶¾Éƒà<uH‹D$dH+%(uHƒÄA\ÃH‹D$dH+%(uhHƒÄA\éeßýÿDL�d$E1À1Ò1öL‰áH�=žèefýÿH…Àt ‹D$ƒøÿt4…À•À¶À‰´ë‚€E1ÀL‰á1Ò1öH�=·2è*fýÿëÈè\ýÿH�l:¾�H�=¢2è¼þÿff.„óúAWAVAUATUSH‰ûHƒìH‹oH‰ïè¿[ýÿH�5H�lüH‰ïè«Zýÿ…Àt'H�5lH‰ïè˜Zýÿ…ÀtHƒÄ1À[]A\A]A^A_ÃH‹{H‹5�×èðÿH‰�×H…ÀtЋP@…ÒŽÙH‹@Hƒê1íH�’H�XL�dÐ0H‹;è8[ýÿ�PƒÀ9êMèHƒÃ(I9ÜuäHcýèÌ\ýÿH‹-×H‰Å‹r@…öŽ÷E1ÿL�-ßL�%èH�€�ëDH‹ùÖIƒÇD9z@ŽÃH‹JHK�¿H�ÁL‹pèþÄÿÿI‰ØL‰é¾…ÀM‰ñHÇÂÿÿÿÿH‰ïMDÄ1ÀèÉeýÿH‹=ÚÇA¸H‰î¹ºèZ]ýÿI‰ÀH…Àt2A€xuƒAÆ@H‹=§ÇL‰ÆIÇ@(è]ýÿébÿÿÿf.„ºH�5üÚ1ÿH‰D$èøYýÿH‰Ç1ÀèÌþÿL‹D$륀H‰ïH‰T$èWýÿH‹T$ƒzu€ ÇH‹ZHƒûÿ„ËH‹LÇHƒ=ÄÑH‰½±H‰^ÐH‹€Çµ±H‰˜„�¿(èÞýÿH�—É¿0ÇH‰Å‹ÓɃøƒÐÿH‹ÂH‰]HÇE H‰E‹óÈÇE‰EH‹BÑèÍÝýÿH‹UH� 0Ç=H‰P‹UÇ@‰PH‰h H‰HÇ@(H‰CH‹)Õƒx ÿt;H�=40èOÔÿÿ…ÀH‹Õu$HcP H‰±ÏHcP$ƒúÿtH‰©Ïf„ƒx(ÿt2H�=Á/èÔÿÿ…Àu"H‹ËÔHcP(Hc@,H‰|σøÿtH‰xÏHƒÄ¸[]A\A]A^A_Ã@1ÿéXýÿÿf„óúAWAVAUATUSH‰ûH�ì˜dH‹%(H‰„$ˆ1Àè€ÂÿÿH�=ÿ™è”(H‹S(¶BHƒà<t5E1íH‹„$ˆdH+%(…û H�ĘD‰è[]A\A]A^A_ÃfDH‹‚D‹ˆ€E…Ét¸D‹€`E…Àt¬H‹ÎH‹kH‹0H‰ïèWýÿI‰ÄH…À„¿èUYýÿH‰ïH‰ÃèšYýÿHƒ=ÊHÇH‰C„ÙH‹êÉH‰¾L‰çH‰ØÉèã`ýÿA‰Å…À„ˆ1Ò¾<L‰çè‰býÿL�¼$„L‰â¾L‰ÿè1aýÿ¶œ$…1ÒL‰ç¶„$„Áãö„$†Áàö„$‡ÁàÃ�³„Hcöè/býÿL‰â¾L‰ÿèß`ýÿ¶„$…¶”$„Áàж”$†Áâж”$‡ÁâЄ…þÿÿ�³ˆ1ÒL‰çHcöè×aýÿL‰â¾L‰ÿè‡`ýÿ�³Œ1ÒL‰ç¶„$„Hcö¶¬$…D¶¬$†D¶´$‡ˆ$è�aýÿL‰â¾L‰ÿè?`ýÿ¶„$…¶”$„Áàж”$†Áâж”$‡ÁâЉÀH‰D$PH…À„Ûýÿÿ¶$@¶ÅAÁå�sÁàAÁæHcöL‰çÐ1ÒDèDð‰ÀH‰D$ èaýÿL‰â¾L‰ÿè¾_ýÿ�s1ÒL‰ç¶¬$…¶„$„HcöÁåÅHcÅH‰$èÒ`ýÿL‰â¾L‰ÿè‚_ýÿ¶„$…¶”$„Áà�DH˜HÃH‰\$`…í„8L�t${1ÉL‰t$(H‰Íf.„�s 1ÒL‰çHcöèp`ýÿL‰â¾L‰ÿè _ýÿ¶„$…�sL‰ç¶”$„HcöÁàж”$†Áâж”$‡ÁâD�41Òè`ýÿL‰â¾L‰ÿèÏ^ýÿ¶´$‡1ÒL‰ç¶Œ$†¶„$…D¶¬$„@ˆt$�sHcöˆL$ˆD$èÑ_ýÿL‰â¾L‰ÿè�^ýÿ1ÒH‰ÞL‰ç¶„$„ˆD$0¶„$…ˆD$8¶„$†ˆD$@¶„$‡ˆD$Hè„_ýÿH‹|$(L‰â¾è2^ýÿH‹L$ L9ñr,¶D$¶T$ÁàÁâDèЋT$ÁâЉÀLðH9Á‚~HƒÅHƒÃ(H9,$…ªþÿÿHÇD$HL‹t$(E1ÒM‰õHÇD$XH‹\$`HÇD$@M‰ÖHÇD$8HÇD$0HÇD$(HÇD$ë4fDA�}.rda„A�}.bss„´IƒÆHƒÃ(L94$„‚�s1ÒL‰çHcöè’^ýÿL‰â¾L‰ÿèB]ýÿ¶„$…�s L‰ç¶”$„HcöÁàж”$†Áâж”$‡ÁâÐ1Ò‰ÀH‰D$è<^ýÿL‰â¾L‰ÿèì\ýÿ¶„$…�s$L‰ç¶”$„HcöÁàж”$†Áâж”$‡Áâ�,1Òèì]ýÿL‰â¾L‰ÿèœ\ýÿ¶„$…H‰ÞL‰ç¶”$„Æ„$ƒÁàж”$†Áâж”$‡ÁâÐ1Ò‰ÀH‰D$è‘]ýÿL‰â¾L‰ïèA\ýÿA�}.dat…£þÿÿfAƒ}a…—þÿÿH‹D$‹= ÊH‰l$HèH‰D$(…ÿ„“þÿÿHƒìÿt$L‹L$8L‹D$(H�NÿL‰é¿1ÀH�5…òè˜XýÿXZé]þÿÿ�1ÿºH�5:òè�QýÿH‰îH‰Ç1Àè Ãþÿé‰ùÿÿH‰)Äé%úÿÿ@1ÿºH�5bûèUQýÿH‰îH‰Ç1ÀèhÃþÿéNùÿÿfA�}ta…áýÿÿA€}…ÖýÿÿH‹D$‹5QÉH‰l$0HèH‰D$8…ö„ÄýÿÿHƒìÿt$L‹L$HL‹D$@é,ÿÿÿHÇD$HHÇD$XHÇD$@HÇD$8HÇD$0HÇD$(HÇD$f�H‹\$PH‰ßèƒRýÿH‹t$H1ÒL‰çI‰Åè\ýÿL‰âH‰ÞL‰ïè³ZýÿH‹-ÄÌL‰èH+D$ H‰$H…í„ÆH‹]PA¶EA¶M E¶}E¶uˆD$A¶EˆD$A¶E ˆD$ A¶E!ˆD$HA¶E"ˆD$PA¶E#ˆD$`A¶EˆD$iA¶EˆD$jA¶EˆD$kA¶EˆD$lA¶E ÁàÈA¶MÁáÈA¶MÁáD�$L$$H…ÛuéÜ@H‹H…Û„ÌH�{L‰æè�Sýÿ…Àuä‹ÚÇ…À…ÜA½é¡÷ÿÿA€}…AüÿÿH‹D$‹ ®ÇH‰l$@HèH‰D$X…É„!üÿÿHƒìÿt$L‹L$hL‹D$Pé‰ýÿÿ¶T$8¶L$0M‰ðH‹\$ H‹|$PÁâL‹t$(ʶL$@H‰ÞHþÁáÊ‹L$HÁáÊH‰Á‰ÒH)ÙHÚH9ðHCÏL)ÂH‰T$HH‰L$PéDûÿÿ¶D$jH‹ $AÁæH‰ï¶T$i¶t$ÁàD¶l$жT$kÁæAÁåDþÁâDîЋT$lAöL‰öL‰t$ÁâD�,¶D$H¶T$ ÁàжT$PÁâЋT$`Áâ�H˶C¶ÁàжSÁâжSÁâ‰ÒHÊL‰áè�U‰D$…À‰M…ö„šþÿÿH‹$E1öL�=¬$J�,(é¿�A»L9T$(†D‰\$ HƒìE1ÉE1ÀL‰T$H�D$|D‰ñL‰âPH‹=0ÊL‰îè£AYAZD‹\$tL‹T$E…ÛD‹\$ uD‰X$D‹ñÅE…Àt?E…ÛH� ¯÷M‰ÑM‰èH�ÃøH�5šî¿HEÁHƒìL‰áH�ûP1ÀèkTýÿ^_IƒÆHƒÃHƒÅL9t$„Äýÿÿ¶C¶L‰þÁàжSÁâжSÁâD�,L,$ºL‰ïèþJýÿ…Àt±¶E¶UÁàжUÁâжUÇD$tÁâD�L9T$†ÖþÿÿL9T$0wA»L9T$8‡ÏþÿÿL9T$@–ÀE1ÛL;T$XA’ÃA!Ãé³þÿÿL‰â¿1ÀA½H�5Æöè–Sýÿé¯ôÿÿ¿x1ÛèuNýÿH�xH‰ÁH‰ÆHÇHƒçøHÇ@pH‰èH‰õH)ùƒÁxÁéóH«ÇFÿÿÿÿHÇFÿÿÿÿHÇF ÿÿÿÿHÇF(ÿÿÿÿHÇFhÿÿÿÿH‰5€ÈéÐûÿÿH‹$I‰ßJ�,(E1íHƒ|$uOézüÿÿ„L;t$(ƒ¡L‰áH‰ÚèZ?‹ (ÄÇ@$…É…üIƒÅIƒÇHƒÅL9l$„0üÿÿ¶E¶UE‰èH‹=ÈÁàжUÁâжUÁâD�4A¶GA¶ÁàÐA¶WÁâÐA¶WÁâÂH‹$‰ÒH�‹D$B�4(L;t$ƒTÿÿÿL;t$0r L;t$8‚MÿÿÿL;t$@r L;t$X‚;ÿÿÿH‰ÚL‰áè•>‹cÃÇ@$…Ò„;ÿÿÿH�;öHƒìM‰ñI‰ØL‰áPH�”øH�5ýë1À¿èáQýÿ[A^éÿÿÿH�ãôëÇèKýÿff.„óúUºH‰ýH�5´1ÿèµJýÿH‰ï¾H‰Â1ÀèCTýÿ1ÿºH�5Ýè�JýÿH‰ï¾H‰Â1ÀèTýÿ1ÿºH�5èkJýÿH‰ï¾H‰Â1ÀèùSýÿ1ÿºH�5#èFJýÿH‰ï¾H‰Â1ÀèÔSýÿ1ÿºH�5Fè!JýÿH‰ï¾H‰Â1Àè¯Sýÿ1ÿºH�5qèüIýÿH‰ï¾H‰Â1ÀèŠSýÿ1ÿºH�5œè×IýÿH‰ï¾H‰Â1ÀèeSýÿ1ÿºH�5¿è²IýÿH‰ï¾H‰Â1Àè@Sýÿ1ÿºH�5êè�IýÿH‰ï¾H‰Â1ÀèSýÿ1ÿºH�5 èhIýÿH‰ï¾H‰Â1ÀèöRýÿ1ÿºH�58 èCIýÿH‰ï¾H‰Â1ÀèÑRýÿ1ÿºH�5k èIýÿH‰ï¾H‰Â1Àè¬Rýÿ1ÿºH�5† èùHýÿH‰ï¾H‰Â1Àè‡Rýÿ1ÿºH�5© èÔHýÿH‰ï¾H‰Â1ÀèbRýÿ1ÿºH�5Ô è¯HýÿH‰ï¾H‰Â1Àè=Rýÿ1ÿºH�5ÿ èŠHýÿH‰ï¾H‰Â1ÀèRýÿ1ÿºH�5’éèeHýÿH‰ï¾H‰Â1ÀèóQýÿ1ÿºH�5½éè@HýÿH‰ï¾H‰Â1ÀèÎQýÿ1ÿºH�5@ èHýÿH‰ï¾H‰Â1Àè©Qýÿ1ÿºH�5k èöGýÿH‰ï¾H‰Â1Àè„Qýÿ1ÿºH�5– èÑGýÿH‰ï¾H‰Â1Àè_Qýÿ1ÿºH�5¹ è¬GýÿH‰ï¾H‰Â1Àè:Qýÿ1ÿºH�5ä è‡GýÿH‰ï¾H‰Â1ÀèQýÿ1ÿºH�5 èbGýÿH‰ï¾H‰Â1ÀèðPýÿ1ÿºH�5: è=GýÿH‰ï¾H‰Â1ÀèËPýÿ1ÿºH�5e èGýÿH‰ï¾H‰Â1Àè¦Pýÿ1ÿºH�5p èóFýÿH‰ï¾H‰Â1Àè�Pýÿ1ÿºH�5£èèÎFýÿH‰ï¾H‰Â1Àè\Pýÿ1ÿºH�5Î è©FýÿH‰ï¾H‰Â1Àè7Pýÿ1ÿºH�5ù è„FýÿH‰ï¾H‰Â1ÀèPýÿ1ÿºH�5 è_FýÿH‰ï¾H‰Â1ÀèíOýÿ1ÿºH�5G è:FýÿH‰ï¾H‰Â1ÀèÈOýÿ1ÿºH�5BèèFýÿH‰ï¾H‰Â1Àè£Oýÿ1ÿºH�5µèèðEýÿH‰ï¾H‰Â1Àè~Oýÿ1ÿºH�5€éèËEýÿH‰ï¾H‰Â1ÀèYOýÿ1ÿºH�5s è¦EýÿH‰ï¾H‰Â1Àè4Oýÿ1ÿºH�5>è�EýÿH‰ï¾H‰Â1ÀèOýÿ1ÿºH�5©è\EýÿH‰ï¾H‰Â1ÀèêNýÿ1ÿºH�5<éè7EýÿH‰ï¾H‰Â1ÀèÅNýÿ1ÿºH�5çéèEýÿH‰ï¾H‰Â1Àè Nýÿ1ÿºH�5RêèíDýÿH‰ï¾H‰Â1Àè{Nýÿ1ÿºH�5ÍêèÈDýÿH‰ï¾H‰Â1ÀèVNýÿ1ÿºH�58ëè£DýÿH‰ï¾H‰Â1Àè1Nýÿ1ÿºH�5è~DýÿH‰ï¾H‰Â1Àè Nýÿ1ÿºH�5~èYDýÿH‰ï¾H‰Â1ÀèçMýÿ1ÿºH�5yè4DýÿH‰ï¾H‰Â1ÀèÂMýÿ1ÿºH�5üèDýÿH‰ï¾H‰Â1Àè�Mýÿ1ÿºH�5èêCýÿH‰ï¾H‰Â1ÀèxMýÿ1ÿºH�5BèÅCýÿH‰ï¾H‰Â1ÀèSMýÿºH�5w1ÿè CýÿH‰ï¾H‰Â1Àè.MýÿºH�5ªê1ÿè{CýÿH‰ï¾H‰Â1Àè MýÿºH�5 1ÿèVCýÿH‰ï¾H‰Â1ÀèäLýÿºH�5 1ÿè1CýÿH‰ï¾H‰Â1Àè¿LýÿºH�531ÿè CýÿH‰ï¾H‰Â1ÀèšLýÿºH�5N1ÿèçBýÿH‰ï¾]H‰Â1ÀétLýÿ@óúAWAVAUATUSHƒìHdH‹%(H‰D$81Àè­ÿÿ¶ò¯ƒà<…·‹Áº…À„H‹"°H‹CH‰\$ H‹8èH‰ßèH‹ƒ1Ò1ÿH‹ °H‹€H‰9¾H…Ét6@H‹��H…Àt@��H‹@H…ÀuñH‹‰øH…ÉuÕHcúHÁçèéCýÿL‹-²¯H‰$M…í„úÇD$M‹¥�M…ä„ëM‰æëB„D‹xH‹(º1ÿH�5kéè¶AýÿD‰áD‰úH‰îH‰Ç1ÀèóþÿM‹vM…ö„¤I‹FpD‹`(H‹X0AöÄtáH�=ͧH9øtÕI‹nhH…ÛtŸL‰ïè×?ýÿ…À„¡L‰öL‰ïM‹¥°è=KýÿHcøè%CýÿL‰áL‰öL‰ïH‰ÂI‰Çè1Jýÿ…ÀŽ"HëƒèL‰l$M‰ýI‰ÜI�lÇ‹\$éf.„I‹MH‹QöB…ÞH‹O·‹@9„ÌH‹H‹�x€„9H‹@ H�5§H9pp„ìD·BH‹AHcó¶JHÁæH4$fAÁèLà‰^ AƒàH‰ÀéAiÀè¶É È=’e„8�z=�>„7=Â]…$‹…Àt>ƒøt9f„H�5!è1ÿºD‰D$è(@ýÿ‹t$H‰Ç1Àè:²þÿf.„IƒÅL9í„ó‹ 1¸…É„õþÿÿI‹EH�5ê¿H‹H‹H‹P1ÀèÄFýÿéÏþÿÿH‹@»H‹¹»H‰�¸¶­ƒà<uH‹D$ H‹€Ç€`H‹ÿ­H‰$H…À… L‹5Ó·M…ö„òH�5hÿL‰÷è#GýÿH‰ÅH…À„)H‹˜»H…À„¤Hƒ8tmD‹XH‰éE…Û…sº¾H�=¸éè«HýÿH‹\»ºH‰îH‹8èTH‹�¬H‹€Hƒ¸…hH‰î¿ è+AýÿH‹»HƒxtEH‰éº ¾H�=`éèDHýÿH‹õººH‰îH‹xèìH‰î¿ èß@ýÿH‹кD‹@l‹HhAƒøÿ„KH�$é¾H‰ï1ÀèHýÿH‹¢ºƒx ÿuD‹H(Aƒùÿ„ÍH‰î¿ è‰@ýÿH‹zº‹H$ƒùÿ…%‹H ƒùÿtH�ûè¾H‰ï1Àè¨GýÿH‹IºD‹@,‹H(Aƒøÿ„'H�Ýè¾H‰ï1ÀèzGýÿH‹ºD‹P0E…Ò�0D‹@@E…À�¡‹pX…ö�TH‰ïèf=ýÿƒøÿu!H�5F1ÿºèŽ=ýÿL‰öH‰Ç1À衯þÿ�H‹=«H�5éèí?ýÿH…Àt ‹P(ƒâïƒÊ ‰P(H‹D$8dH+%(…?HƒÄH[]A\A]A^A_Ãf„=€>…åüÿÿIƒÅÆFƒÃL9í…ýÿÿ�‰\$L‹l$L‰ÿè/:ýÿM‹vM…ö…\ûÿÿM‹­øM…í…õúÿÿHcD$L‹,$ºH� =èH‰ÃH‰ÆL‰ïè_;ýÿ…Û„Ó�SÿH‹•¸L‰éHÁâI�\HÇÂÿÿÿÿë„HƒÁHƒÀH9Ët.H‰ÖH‹HÁê H9òt HƒÀHƒàüHƒÀ€yuÒHƒÁHƒÀH9ËuÒHƒÀHÇÅÿÿÿÿIÇÄÿÿÿÿHƒàüH‰ÇH‰¸è>ýÿH‰$L‹t$ H‰¸H‰Á1ÀHÇø·ë|fDA¾}H�4I‹FA�çÿÁç HcÿLÿÿP`H‹É·HƒÀA€}H‰¹·u(H¨·I¿} H‰ÆI‹FÿP`H‹š·HƒÀH‰�·IƒÅL9,$„6H‹ r·M‹}L+=w·L‰ûH�ãðÿÿL9ã„lÿÿÿ¨t#H�P@H‰ÖÆDÿH‰ÐH�RƒæuìH‰5·HƒýÿtH)èH�t)H‰ÇI‹FÿPHH‹ ·I‹FH ·H‰ßI‰ÜH‰ÎÿPHH‹-ø¶H‹ é¶H�EH‰æ¶éñþÿÿf„=}„�=ú…šúÿÿÆF ƒÃé¾úÿÿfDI‹>H�5øäH‰T$H‰L$è�>ýÿH‹L$H‹T$…À…éùÿÿéˆúÿÿ„H‹PH‹|$ E1ÉE1À1ÉH�5ȧèÓ8ýÿH…À„Zúÿÿ¶P€útQ€ú…HúÿÿI‹MH‹Qé—ùÿÿÆFƒÃé,úÿÿ@ÆFƒÃéúÿÿ@1ÒÆFƒÃf‰V éúÿÿfDf�xBi…ôùÿÿH‹PHH‹@PH‹ŠH‹H‹�ˆH‹ÐH…À„Îùÿÿ€x„ÄùÿÿH�  H9H(…kÿÿÿé®ùÿÿºH�51ÿè«9ýÿL‰îH‰Ç1À辫þÿH‹5µH‹=µH…ö…çH‹`µHƒ=ð´H‰‡¸„±ùÿÿH‹= µè?;ýÿ‹iµH‹ú´1öH‰AµH‰ÅH�@(D�$�H‰$H‰ïMcäL‰ãHËHµH‰\$D�,…McíIÝ�è¹:ýÿH‹D$ HcÛLëH‹€‹€¬ƒøÿ„±HcøH‹D$ H�uH‹@ÿ��H‹µ‹@hƒøÿt7L‹|$ HcøH‹ ¬´I‹GH�qÿP`H‹š´H�p H‹ß´HcxlI‹GÿP`H‹ý³L‹|$ H‹q´H‹RpH�p H‹z0H‰ÚH+=S´H)ÂI‹GH×ÿPHH‹5g´H‰ßèG6ýÿH‰ßèo8ýÿHc=d´H�lH‹$´1ÛH�pI‹GÿPHH‹´Hc=!´H�pI‹GÿPHH‹÷³Hc=´H�pI‹GÿPHH‹^³H‹׳H‹RpH�pH‹z0H‹$H+=¸³H)ÂI‹GH×ÿPHH‹,³H‹¥³H‹RpH�p H‹z0H‹T$H+=…³H)ÂI‹GH×ÿPHH‹ù²H‹r³H‹RpH�p$H‹z0L‰êH+=T³H)ÂI‹GH×ÿPHL‹=˜³A‹G@…Àrét÷ÿÿAÆ$_H‹@HI�|$J‹t0è(5ýÿH‹=™¤1É1ÒL‰æA¸è:ýÿH…Àt€xuH‹P0H‹9³H‰ØL‰çHƒÃè4ýÿL‹=*³A‹G@9ØŽHI‹GHL�4›IÁæJ‹|0èð6ýÿH�xè—8ýÿI‰ÄH‹­‹@…ÀH‹é²„H‹PHJ‹t2€>@…IÿÿÿL‰çè�4ýÿéTÿÿÿL‹-½²I‹}H…ÿHD=~²H‰=ÿ±èŠ8ýÿH� #w¶H‰á±„ÒtDöQŒuÆ_¶PHƒÀ„ÒuëH‹$H‰ßèï;ýÿ1öH‰ßèõ<ýÿI‰ÆH…À„— ‹O¢…À…- ¾L‰÷E1äèK:ýÿA€NIL‰÷èN-H‹‡£H‰D$H…Û„—f„H‹-9±H…ítr@1Òƒ}¸uH‹3H‹}èÇ4ýÿ…À”•ÀH‹mH…ít„ÀuÒ„ÒtH‹t$H‹x0H‰èH+=Œ­H+�­HÇH‹CÿPHL‰þH‰ïHƒD$èz/ýÿH‰ïè¢1ýÿL‹|$E‰ñD+ �­H�lH‹CIcùL‰þÿP`L‰øL‹=�­‹L$HƒÀH‰D$I‹GHB‰L(�A‰D$IƒÄE9g@ŽMñÿÿI‹GHK� ¤L�,ÍLèD‹pAƒþÿ…›þÿÿL‹=<­ëÈf�M…ÀtðH‹$­D‰ö+5­ÁæH‹<8I‹@pHcöH+=¶¬IxhHx0H‹CH4$ÿPHL‹=ô¬I‹wHLîéÑþÿÿè;6ýÿè†0þÿ¾1ÿèJ3þÿH‹œÿP8H‹=™™H‹5‚™1ÒH�L$4ƒ€™ÇD$4HÇq¢Ç_¢Ç�™è˜YH‹=¡«é¥öÿÿƒùÿ„ÉñÿÿH�ßÚ¾H‰ï1Àè­9ýÿH‹N¬é§ñÿÿD‹H A‰ÈH�ÂÚD‰ÉH‰ï¾1Àè�9ýÿH‹"¬D‹@,‹H(Aƒøÿ…Ùñÿÿƒùÿ„íñÿÿH�ÁÚ¾H‰ï1ÀèJ9ýÿH‹ë«D‹P0E…ÒŽÐñÿÿH‰éº ¾H�=™Úè 9ýÿH‹¾«D‹H0E…ÉŽ£ñÿÿ1ÛL�-ªXL�=|ÚëF€€x…€x…/€x…VH‰î¿ HƒÃèq1ýÿH‹b«9X0ŽKñÿÿH‰éº¾L‰ïèŒ8ýÿH‹=«H�[H‰îL�$ÅH‹R8H‹<Â1Òè'H‹«H‹x8LçHƒH‰øt@H‰éº¾L‰ÿè:8ýÿH‹ëª1ÒH‰îH‹@8J‹| èàH‹ѪH‹x8LçH‰ø€x„%ÿÿÿH�=™ÙH‰éº¾èì7ýÿH‹�ªH‹x8LçH‰ø€x„ûþÿÿH�=kÙH‰éº¾è¸7ýÿH‹iªH‹x8LçH‰ø€x„ÑþÿÿH‰éº¾H�=1Ùè„7ýÿH‹5ªL`8L‰à€x„ªþÿÿH‰éº¾H�= ÙèS7ýÿéŒþÿÿº¾H�=<Øè87ýÿéˆîÿÿ1ÿºH�5Ùè�-ýÿ¾H‰ïH‰Â1Àè7ýÿéËïÿÿ‹H$ƒùÿ…pýÿÿD‹@,Aƒøÿ„ŒïÿÿéjïÿÿH‰éº ¾H�=¾ØèÑ6ýÿH‹‚©‹JX…ÉŽ�ïÿÿE1äL�-oVë]1ÒH‰îèfHƒ{t'º¾H�=�ØH‰éè†6ýÿH‹{1ÒH‰îè8H‰î¿ IƒÄè'/ýÿH‹©D9bXŽïÿÿH‹R`K�¤H‰é¾L‰ïH�ºè56ýÿL‹;M…ÿt;H‹sH…öt L‰ÿèl0ýÿ…Àt&1ÒH‰îL‰ÿèËH‰éº¾H�=ûièò5ýÿH‹C1ÒH‰îH�xè ¿.H‰îè“.ýÿH‹{H…ÿ…ÿÿÿ‹K H�ÒÜH‰ï1À¾è½5ýÿéÿÿÿH�=Z×H‰éº¾è�5ýÿH‹@¨‹x@…ÿŽ4îÿÿ1ÛL�-.UL�%/×H‰ÂëJ„A€!…ÈA€"…áA€#…úH‰î¿ HƒÃèî-ýÿH‹ß§9Z@Ž#H‹RHH�›H‰é¾L‰ïL�<ºèý4ýÿI‹?1ÒH‰îè°I‹H…ÿtI‹7è//ýÿ…À…°A‹OƒùÿtL‰â¾H‰ï1ÀèÌ4ýÿA€ „QÿÿÿH‰éº¾H�=dÖè˜4ýÿA€!„8ÿÿÿH‰éº ¾H�=IÖèt4ýÿA€"„ÿÿÿH‰éº¾H�=/ÖèP4ýÿA€#„ÿÿÿH‰éº¾H�=Öè,4ýÿéèþÿÿH‰éº¾H�=hè4ýÿI‹1ÒH‰îèÀÿé$ÿÿÿH‰Ðéªìÿÿ¨t*H‹58¦H�P@H‰ÑÆDÿH‰ÐH�RƒáuìH‰¦HƒýÿtH)èH‹¦H‰ÇH‹D$ H�t*H‹PÿRHH‹=z¥H‹5ë¥H;w@ƒiðÿÿH‹Ò¥f�HƒÆÆD0ÿH‹=P¥H;w@rêH‰5»¥é>ðÿÿ1ÿºH�5Ôè»)ýÿH‹4$H‰Ç1Àè½™þÿé­óÿÿH‹+1ÿºH�5öÓè’)ýÿH‰ÇH‰î1À襛þÿéþéÿÿH‰éº¾H�= Ôè÷2ýÿH‹—¾H‰ïH�PH‹€H‹ˆ1ÀèÜ2ýÿéOêÿÿH‹D$ 1ÿH‹@L‹¸�è.ýÿH�uH‰ÇAÿ×é?ðÿÿH� *ŽH9H(…nôÿÿé”ôÿÿH‹<$H� `Ôº1öè„'ýÿH‹ŤH�xHƒçüH‰=¶¤è©*ýÿH‹=2¤1öHÇ�¤H‰ޤHƒ@…³þÿÿéïÿÿfDH‹4$H�=Ó訚þÿéåôÿÿH�=äÐè—šþÿéÄôÿÿ1ÿºH�5tÐè_(ýÿH‹4$H‰Ç1ÀèqšþÿéÊèÿÿH‹ƒØL‹#ºH�5fÐH‹(é*õÿÿ1ÿºH�5¨Ðè(ýÿL‰öH‰Ç1Àè.šþÿé²èÿÿèD(ýÿ@óúAWAVAUA‰ÕATI‰üUSH‰óHƒìHdH‹%(H‰D$81À¶•ƒà<„;¾$H‰ßèf(ýÿH‰$H‰ÅH…Àt)I‰ÇI)ßI�è{)ýÿL‰úH‰ÞI‰ÆH‰ÇH‰$è&,ýÿCÆ>HÇD$ H�D$ H‰D$H‰D$(E…í„ ‹=2£…ÿuYL�=ß„M�·ðI‹?H…ÿt01Ò1öèÇ™ýÿI‰GH…Àt‹°�…öuA‹W‰��f.„IƒÇ0M9÷u¿ÇÕ¢¶F”E‹|$(L‰æƒà<tk€H‹¾øè„,ýÿH‰ÆH…ÀtPHƒ~pH‹–øuÞ‹N(‰È‰ÏD1ø�瀃à øuÇöBD@uÁH‹‚H…Àtö@Xu¯D‰øƒñƒð ȃðA‰ÇëœAöÇ…õE1À1É¿ L‰D$L�=Œ–H‰L$è«ýÿ¿ÇH‰Æ‹¾–ƒøƒÐÿI‹ÇÇFH‰F‹ã•‰FH�FþH‰FèpÑþÿHƒìD‰êL‰çÿt$L‹D$(I‰ÁH‹L$ H‹t$è{¼ýÿZYI‰Å¶/“ƒà<„?M‹eM�}M…ätI€Aƒ|$u.I‹D$¾$L‹0L‰÷èS&ýÿH…ÀtH…ítL‰öH‰ßèn)ýÿ…Àx M‰çM‹$$M…äu¾Hƒ|$ tH‹D$(L‰ H‹D$ I‰H‹D$8dH+%(…+HƒÄHL‰è[]A\A]A^A_ÃH‹<$1Ò1öè×ýÿH…À„ÊýÿÿH‹P8E1íH…Ò„�f.„‹R(…Ò„4A3T$(ƒâ„&L‹p0L�xèL;pðt)ºH�5AÕ1ÿèÖ$ýÿºH�5îÔH‰Ç1Àèà–þÿM‹?M…ÿ„M;wH…úE‹‡¤E…ÀxÞI‹WPI�GH…Ò…}ÿÿÿI‰Åë‘H‰4$1íéüüÿÿL�Æ‚A÷Çt=Iƒè0AöÇt3I�è�AöÇu&H‹<$ºH�5Îè"ýÿL�ú�…ÀI�@0LEÀI‹HH…É…¶ýÿÿI‹81Ò1öL‰D$袖ýÿL‹D$H‰ÁI‰@H…À…�ýÿÿI�PD‰þL‰çèþ—ýÿL‹D$H…ÀH‰Á…pýÿÿH‹ ¶ŽédýÿÿH‹|$H‰Á1ÒL‰æH‰$è ¶ýÿL‹,$éÞýÿÿf�M…ítyI�}L‰é1ÒL‰æèêµýÿé/þÿÿA‹L$xA¾¿(AÓæè-¨ýÿÇ‹ñ“ƒúƒÒÿI‹×L‰pHÇ@ H‰P‹“Ç@‰PA‹T$xI‰EhI‹E8‰Pxé^ýÿÿA½~éÇûÿÿèb#ýÿf�óú¶BXE1Àƒà<…rAWAVAUATUH‰ÕSH‰óHƒìD‹5ÞL‹bM‰÷E…öu9L�-I‰Å1ÀH…ÿtè«"ýÿK�|5HÇèN$ýÿL‹C¾H� ÎI‰ÅH‰Ç1ÀHÇÂÿÿÿÿèª-ýÿL‰ïH� Vèk"ýÿH� ÜÍM�t1ÀëFL‹YšM…Àt(¾L‰÷1ÀM‰áHÇÂÿÿÿÿèc-ýÿH‰îL‰ïè¨÷þÿ…Àu;H‹ HƒÃH…ÉtX‹Cø…Àu¹¾L‰÷1ÀM‰àHÇÂÿÿÿÿè(-ýÿH‰îL‰ïèm÷þÿ…ÀtÅL‰mA¸HƒÄD‰À[]A\A]A^A_ÃDD‰ÀÃ@L‰ïè¸ýÿE1ÀëÔóúH� ŸÍH��ÌéÉüþÿf„óúUH‰ÍSHcÚHƒÃ=HÁãHƒìH‹9H‰ÞèM"ýÿH�5æMH‰EH�Œ`øÿÿH‹ÓMH�yH‰H‹]UHƒçøH‰�˜H)ùH)Î�Á ÁéóH¥HƒÄ[]Ã�óúAWAVAUI‰ÕATI‰ôUSH‰ûHƒìhD‹œH‰L$dH‹%(H‰D$X1ÀE…À…@H�l$,H‹KA¸L‰æI‹¼$øH‰êè® ýÿ…À„ÖI‹„$øH‰ïL�|$0H‹@ÿP8º¾L‰ÿH‰D$H‹H� ®öD‹œH‹L‹0A�@‰ô›1Àè•+ýÿL‰ÿè] ýÿM‰êI)ƒøƒ¶¨…6 …Àt¶T$0Aˆ¨…B I‹FH�T$ L‰öL‹KHÇD$ L‹2™¹H�=&�H‹€pRL‰ÒL�5æÊjjjÿ�8H‹D$@H‹@H‰D$0HƒÄ ƒ=›�…‰D‹%ÊšE…ä…�H‹CL‹ �¿·@L‰L$fÁèƒàA‰ÇèA!ýÿº¾D‹À˜H� öI‰ÄH‰Ç1Àèœ*ýÿH‹t$L‰çƒ�˜è"ýÿI‰ÄH‹†˜L‰æH‹xèb(ýÿL‰çèÊýÿ¾L‰çè]#ýÿH‹^˜1ÒL‰ç‹pI‹D$ÿ��ƒ=ØŒ¿uƒ=ŠšHÿƒçHƒÇÇ˜è• ýÿºH�5JõL‰çH‰÷—èºHƒìL‰ñL‰öjH‹T$ A¹L‰çL�™ƒH‰ÃèAûƒ=fŒA[]…±D‹šA¶ïE…Ò…ÍHƒìL‰êL‰ñA¹jL�TƒH�5qDL‰çÇÜ™èëúAX¾AYH‰ßèª#ýÿ¿èàýÿfïÀ¹L‰çH‰ƒ¸º>¾I‰ÅHÇ@èpû¹º>L‰ç¾ èYûI‹D$H‰ïI�u½ÿPHI‹D$I�u¿ÿPHH‰ßè ü‹æ–H‹5×–L‰çèG!ýÿI‰èé1€H‹T$0I�rHƒæøI‰‰ÂI‹LøI‰LøL‰ÒH)òÐI)×ƒàøƒø‚3ýÿÿƒàø1҉уÂI‹<H‰<9Ârïéýÿÿf.„¿k_I�uö1É1ÒH¸__nm_thnA¸I‰Eöf‰~H‹=\ŠèïýÿH…Àt €x„¯¿H‹-dŠèŸýÿº¾D‹–H� óI‰ÆH‰Ç1Àèú'ýÿH‰îL‰÷ƒý•èhýÿL�5£ÇH‰ÅH‹ß•H‰îH‹xè»%ýÿH‰ïè#ýÿ¾H‰ïè¶ ýÿH‹·•1ÒH‰ï‹pH‹Eÿ��¿ÇŽ•è ýÿºH�5‹òH‰ïH‰k•è.HƒìL‰ñL‰êjI‰ÀA¹H‰ïH�5fòI‰Çè·øL‰êL‰ñH‰ïA¹L�ñ€H�5LòÇ$èŽøYL‰ÿ^¾èO!ýÿ¿è…ýÿ¹1öH‰ïI‰‡¸º>I‰ÆHÇè ùL‰ÿèøù‹Ò”H‹5ÔH‰ïè3ýÿA¸1ÉL‰òL‰þH‰ïèÍýÿH‰ïèuýÿH‹uH‰ïè‰:H‹ÒˆÇè‡�`DÿÿÿHƒ|$„Õ‹ ‰ƒø„ÆL�5!ƃø„]ûÿÿH‹L‹k1ÿºI‹¬$øH�5 ìH‹L‹pèÍýÿL‰éL‰âH‰îH‰ÇM‰ð1Àè׌þÿéßf�L‹{M‹´$ø1ÿºH�5&ëè‘ýÿL‰ùL‰âL‰öH‰Ç1À螌þÿéóùÿÿf„H‹H‹OH�5�ðL‹G¿H‹H‹P1Àè;!ýÿé–ùÿÿfD¿H‹-Ô‡èýÿº¾D‹Ž“H� ŸðI‰ÆH‰Ç1Àèj%ýÿH‰îL‰÷ƒm“èØýÿL�5ÅH‰ÅH‹O“H‰îH‹xè+#ýÿH‰ïè“ýÿ¾H‰ïè&ýÿH‹'“1ÒH‰ï‹pH‹Eÿ��¿0Çþ’èyýÿºH�5ðH‰ïH‰Û’èžýHƒìL‰ñL‰êjA¹H‰ïI‰ÇL�~H�5Ïïè#öH‹´’H‹T$(H�5@A¹L�S~H� ÆïH‰ï‹@Ç$…ÀIDöèäõH‹T$ L‰ñL‰öA¹L�~H‰ïÇ$è½õX¾ZL‰ÿè~ýÿ¿è´ýÿfïÀ1ö¹I‰‡¸º>H‰ïÇ@H‰D$èFö¹º>H‰ï¾ è/ö¹º>H‰ï¾èöL‰ÿèðö‹Ê‘H‹5»‘H‰ïè+ýÿH‹T$1ÉL‰þA¸H‰ïèÃýÿH‰ïèkýÿH‹uH‰ïè7Hƒ|$tG‹†ƒø…ýÿÿD‹%I“E…䄸ÿÿ‹L$H‹T$¿1ÀH�5éèèÜýÿé^øÿÿ€ƒ=Õ…„:øÿÿH‹D$XdH+%(…HƒÄh[]A\A]A^A_þH‰ßèCýÿ¿èyýÿH‹|$H‰ƒ¸I‰ÅHÇI‹D$L‰îÿPH¹º>L‰ç¾èõH‰ßèÙõ‹³�H‹5¤�L‰çèýÿA¸L‰ê1ÉH‰ÞL‰çè®ýÿL‰çèVýÿI‹4$L‰çèj6‹Ô’�P‰Ë’…À…0ÿÿÿ¿L‹%—„èÒýÿº¾D‹Q�H� —íH‰ÅH‰Ç1Àè-"ýÿL‰æH‰ïƒ0�è›ýÿH‰ÅH‹�H‰îH‹xèõýÿH‰ïè]ýÿH‰ï¾èðýÿH‹ñ�1ÒH‰ï‹pH‹Eÿ��¿ÇÈ�èCýÿH‰ïºH�5íH‰¥�èhúH�QìL‰öH‰ïI‰ÄH‹™�L�J{‹HH�1ì…ÉL‰ñHDÐHƒìE1ÉjèÙò^¾_L‰çèšýÿ¾¿èË ýÿ¹1öH‰ïI‰„$¸º>I‰ÅèlóL‰çèDô‹�H‹5�H‰ïèýÿL‰æA¸1ÉL‰êH‰ïèýÿH‰ïèÁýÿH‹uH‰ïèÕ4é­ýÿÿHƒìA¹L‰ñL‰êjL�‡zH�5¤;L‰çè(òX¾ ZH‰ßèéýÿ¿ èýÿ¹º>L‰çH‰ƒ¸¾I‰ÅHÇÇ@è°ò¹1öL‰çº>èœòI‹D$H‰ïI�u½ ÿPHéO÷ÿÿ‹T$0‰ÀA‰A‹TüA‰TüéÆôÿÿ„‰ÀA·TþfA‰Tþé«ôÿÿèèýÿ„óúégzÿÿ€óúAWAVAUATUSH�ìˆL‹¿�L‹§dH‹%(H‰D$x1ÀM…ÿ„�I‰ý�I‹ŸH…Ûué_€H‹H…Û„Lƒ{uîI‹¬$ÐH9k uàL‹µ¸M…ö„ðH‹E@I‹¼$ÈH‰D$èòzÿÿH‰ÇH‰ÅèÇýÿI‹´$ÈA‰èL‰ïH‰ÁH�/ÿÿÿH‰$è–4H‹_�H‹SL‰ïH�t$ÇD$ HÇD$H‹€HÇD$HÇD$(L‹ ¸HÇD$0L)àIG0HÐH‰D$8I‹‡˜H�DL‰òH‰D$@è¼ýÿH‹s1ÒL‰ïI·˜è§ýÿL‹$…ÀuH‹t$L‰êL‰÷L‰$è«ýÿH9D$L‹$ta1ÀH‹T$xdH+%(…H�Ĉ[]A\A]A^A_ÄM‹M…ÿ…ƒþÿÿºH�5wä1ÿèÀýÿH‰Ç1ÀèÖ„þÿ¸롸fïÀL‰Ö¹ H9ÅH�|$XD$XL�t$PHÇD$PRSDSHFÅHÇD$pH‰Âè~ýÿH‹<$è•ýÿH‹t$@L‰òL‰ïèeýÿ…À„=ÿÿÿH‹æH‹�I‹G0L)àHCHÇ‚ÈH‰‚À¸é ÿÿÿH‹}@èïýÿH‰…¸I‹¬$ÐL‹µ¸éìýÿÿè/ýÿff.„@óúATHƒìdH‹%(H‰D$1À‹èlÇD$ƒøÿtH‹T$dH+%(ucHƒÄA\Ã@L�d$E1À1Ò1öL‰áH�=gSèÍýÿH…Àt ‹D$ƒøÿt4…À•À¶À‰‰l묀E1ÀL‰á1Ò1öH�=ÿ¼è’ýÿëÈè{ýÿH�´¾¾�H�=è¼èƒqþÿóúHƒìè3ÿÿÿH�=ZSèwýÿH…ÀtR‹P H‹@‰ {H‰{H�Ôç€ ° H‰¹^H¸ÿÿÿÿÇ]}H‰¶~HƒÄÃf„Ǻzë¶@AWAVL�5•çAUATL�%ºkUH‰ýSHƒìH‰t$@è“þÿÿIƒ<$„¨L�=¡k1Ûë"DL‰îH‰ïè-ýÿ…Àt4IƒÇ ƒÃIƒðt{A‹G M‹/…ÀtØèKþÿÿH‰ïƒøIƒÕL‰îèùýÿ…ÀuÌHcÛ‹L$L‰öH‰ïHÁãI�‰H Ç@èÑýÿ…ÀuèþÿÿH�-Ôæ…ÀH�ÌæHDèéWÿÿÿHƒÄ[]A\A]A^A_ÃH�!½¾ÈH�=m»èpþÿ„UH‰ý1ÒHƒìH‹=_sdH‹%(H‰D$1ÀH‰æèýÿH‰ïH‰ÆèÌþÿÿH‹,$H;-1stH‰-(sH‹D$dH+%(u.HƒÄ]Ãf�ºH�5$á1ÿè-ýÿH‰îH‰Ç1Àè@�þÿH‹,$ë»èUýÿDATUH‰õHƒìèaÿÿÿL‹%ÊrA¶$<,tA„Àu HƒÄ]A\ÃDH�5ùà1ÿºèÍýÿHƒÄL‰æH‰Ç]1ÀA\éÙ€þÿf„IƒÄH‰ïL‰%rrHƒÄ]A\éöþÿÿfDóúAV�ï-AUATUSHƒìdH‹%(H‰D$1Àƒÿ9‡1ýÿH�ªºHcºHÐ>ÿàMcäH�v:IÁäB‹D HcðH�=åå‰5ièˆýÿÿ„·å‰f„·óH�=Qæèaýÿÿ¸H‹T$dH+%(…ŸHƒÄ[]A\A]A^ÃÇÊ{·“‰ëµDÇÚh·{‰ë�DÇÂh·c‰ë…D·U‰f�Ë€f‰I‰éhÿÿÿ„·5‰€Ï f‰+‰éJÿÿÿf.„·‰€Ïf‰ ‰é*ÿÿÿf.„·õˆ€Ïf‰ëˆé ÿÿÿf.„·Õˆ€Ïf‰ˈéêþÿÿf.„H�5ÿãH�=äèÍýÿÿ·¢ˆéÁþÿÿ�H‹-™p¾:H‰ïèl ýÿH…À„ùI‰ä1ÒH�xA‰ÅL‰æA)íè<ýÿH�=äH‰ÆèíûÿÿH‹$¶<.„ „À…âH‹-?p1ÒL‰æH‰ïèýÿH‹$¶ €ù:”„É”ÁÊt H=ÿÿ†þÿÿL‹5 pMcíH�-o8E1äH�4ãDL‰êH‰ÞL‰÷èâ ýÿ…Àu B€<+„³ýÿÿH‹]HƒÅAƒÄH…ÛuÒ1ÿºH�5ŒÞèß ýÿL‰öH‰Ç1Àèò}þÿé­ýÿÿDH�=;ãèüÿÿ·�‡é ýÿÿH�=Öãèüÿÿ·i‡éˆýÿÿ„H�=ãèäûÿÿ·I‡éhýÿÿ„H�=>ãèÄûÿÿ·)‡éHýÿÿ„H�=Kãè¤ûÿÿ· ‡é(ýÿÿ„H�5pâH�=‚âè üÿÿ·â†éýÿÿ�H�= âèdûÿÿ·Ɇéèüÿÿ„H�=ãèDûÿÿ·©†éÈüÿÿ„¾H�=ãèúÿÿ·„†é£üÿÿH‹=ynH�5ŸÊè]ýÿH‰fxH…À…müÿÿH‹-VnºH�5ÊÜ1ÿès ýÿH‰ÇH‰î1Àè†|þÿ·+†éJüÿÿf.„H�= âè¤úÿÿ· †é(üÿÿ„H�=âè„úÿÿ·é…éüÿÿ„·Õ…€Ïf‰Ë…éêûÿÿf.„·µ…Ç…éÊûÿÿf.„H‹=ñ„èôýÿH‹-�mHÇÚ„H…í„H�5ÅÁH‰ïèz ýÿ…À„rûÿÿH‰ïèº ýÿH‰«„é^ûÿÿfDÇŽd·3…éRûÿÿf�Ǧ„·…é:ûÿÿf.„ÇŠ„·û„éûÿÿf.„Çn„·Û„éúúÿÿf.„H‹=Él1öè2â··„éÖúÿÿfDÇ2„·›„éºúÿÿf.„H‹=‰lèä ýÿ·y„H‰„é‘úÿÿ�·e„€Ë€f‰[„ézúÿÿf.„·E„ƒË@f‰;„é�þÿÿf.„Çbc·„é:úÿÿf.„ÇBc·ûƒéúÿÿf.„Ç>c·Ûƒéúùÿÿf.„Çc·»ƒéÚùÿÿf.„Ç>ƒ·›ƒéºùÿÿf.„Ç®u·{ƒéšùÿÿf.„ÇŽu·[ƒézùÿÿf.„džb·;ƒéZùÿÿf.„H‹=)kè„ ýÿ·ƒH‰†‚é1ùÿÿ�ǃ·û‚éùÿÿf.„H‹=éj·Þ‚ÇØ‚H…ÿ„ïøÿÿ€?„æøÿÿH‰æ1ÒèŒýÿH‰ýaéÐøÿÿÇ‚·›‚éºøÿÿf.„Ç‚·{‚éšøÿÿf.„Ƕa·[‚ézøÿÿf.„H‹=Ij¾è¯ß·4‚éSøÿÿÇRt·‚é:øÿÿf.„ƒ%m�ß·þ�éøÿÿDƒ U� ·æ�éøÿÿDH‹=Ùi¾è?ß·Ä�éã÷ÿÿÇ�·«�éÊ÷ÿÿf.„ÇÂs·‹�éª÷ÿÿH‰ïI‰äèßýÿA‰Åé8ùÿÿH�-oÜH‰-iiéüÿÿ1ÿºH�5ö×è�ýÿH‰Ç1Àè—wþÿéüøÿÿH�zL‰æ1ÒèýÿH�=óÜH‰ÆèµôÿÿH‹$¶éËøÿÿè„ýÿ@óúAWAVAUATUSHƒìèIóÿÿ¶rr‹d`ƒà…Òu6<t&‹5g`…öu º@<u‹ È€º…É….‰!`‰[`<„ÚH‹àmH‹ ¡RH�PH�þpH9Áƒ„H‹5~RH�AH‰{RH‰1Hƒ=È_H‰aR„ZL�=´_1íë4ƒú„/ƒú… I‹L‰2…íuH‰}IƒÇ ƒÅIƒ?„¿(Mcw èîˆýÿH� gtÇH‰Ã‹¨tM‰õƒøƒÐÿH‹ÁL‰sHÇC H‰C‹ÅsÇC‰CA‹GM‹g…À…‹¿0葈ýÿ¿H‰ÂÇ=H‹CH‰T$H‰B‹CH‰Z ‰BH‹…QÇBL‰bÇB(èNˆýÿH‹T$Ç@HÇH‹sH‰H‰CH‰PA‹Wƒú…ïþÿÿI‹fD‰*éûþÿÿè{ñÿÿƒøIƒÔédÿÿÿ€I‹D‰*éÕþÿÿDH‹ QH�oH9ІëH�PøH‹@øH‰êPH‰ÛP‹Õ|9Ó|wHƒÄ[]A\A]A^A_ÃfD1ÿºH�5ªÕèÕýÿHƒÄ[H‰Ç]1ÀA\A]A^A_éÝtþÿH‹–P¶:H�r…ÿtYA¸1ÉA)ð‰úÁâúHÊH‰ÑHÁéH1ÑA�0¶>HƒÆ…ÿu݉ÖÁæò‰ÒHÑH‰ÊHÁêH1ÊHÁâ�âüo]égýÿÿ1ÒëñH�—¯¾ H�=û­è–bþÿèñþÿè þÿff.„�óúUSHƒì¶_o¨…ŸH�-Ê­¨uL‹¾}…ÀuB‹ ô\H�¥-ºH�-<Úë€H‹hH…í„‹‹HƒÀ9Ñuéf„èËïÿÿ…Àt&H‰ïèÏýÿH�xèvýÿH‰îÆ_H‰ÃH�xH‰Ýè�ÿüÿH‰-bOHƒÄ[]éO^þÿ€ºH�5<ª1ÿèUýÿH‰Ç1Àèksþÿ¶”né8ÿÿÿ€H�-i®é|ÿÿÿff.„�óúATƒ=3\ÿUSH‹F0ÆGL‹fH‰G0H‹F(H‰G(t/M…ät¿蘅ýÿH‹©nL‰`H‰H‰›n[]A\ÃfDH‹oº1ÿH‰óH�5û©è®ýÿL‰âH‰îH‰Ç1Àè¾rþÿ‹\|…Àt L‹cë—fDºH�5üž1ÿèuýÿH‰Ç1Àè‹rþÿºH�5Ÿ1ÿèXýÿH‰Ç1ÀènrþÿÇ|ë®f�óúǶmƒà<t@‹ âlH� Ó…Ét*‹¡lH�ê÷…Òtƒ=÷mH�ØAH�ÁHEÂÃ@‹5~lH�;ÃH�Ü­…öHDÂÃff.„f�óúǶÿlƒà<t@‹ blH�ƒ‰…Ét*‹!lH�Ь…ÒtöÓlH�øòH�¡ÏHDÂÃ@‹5þkH�ËwH�4f…öHDÂÃff.„f�óúL‹ålM…À„úH� ueëM‹€øM…À„ÞI‹@ƒxuæA‹€ …ÀtÛI‹€H…Àtö@XuÉI‹¸�H…ÿt½DH‹‡èH‹��H‰ÐH…Òuëq€H,H‹€èH‹€�H…ÀtRö@,uLH9ÈtÞH9HpuØ·p,f�æ€f�îf÷Æ€þtÃH‰Op¶B,�O(€¨t!ƒàýˆB,H‹‚èH‹��H…Òt¶B,¨ußH‹H…ÿ…jÿÿÿM‹€øM…À…"ÿÿÿÃ�óúH‹ÅkH‹@ƒx•À¶ÀÃfDAUI‰ÍATI‰ÔUD‰ÅSH‰ûH‰÷HƒìH‹3H‰ðH øt$H…ÿtwH…ötrè½ýÿ…ÀtHƒÄ[]A\A]ÃfDH‹sH‰ðL àtM…ätwH…ötrL‰çèŠýÿ…ÀuÍH‹sL‰èH ðtM…ít=H…öt8L‰ïèhýÿ…Àu«‰è+CHƒÄ[]A\A]Ã@HƒÿÀHƒÄ[ƒÈ]A\A]Ã@IƒýÀƒÈéqÿÿÿf.„IƒüÀHƒÄ[ƒÈ]A\A]Ãff.„�Hƒ=HX„—AUI‰ýATE1äUSH�?XHƒìë'f„L‰îH‰ïèÅýÿ…Àt4HƒÃ AƒÄHƒ{ðtJ‹C H‹+…ÀtØèãêÿÿL‰îƒøHƒÕH‰ïè‘ýÿ…ÀuÌMcäH�ÓWIÁäB‹D HƒÄ[]A\A]ÀHƒÄ1À[]A\A]Ã1ÀÄH…ÿtKUH‰ýSHƒìè�üüÿH�xH‰Ãè1þüÿH‹2yH‰îL�@H‰$yH‰L‰ÇH�SèÍýÿHƒÄ[]ÃfD1ÀÃff.„f�óú¶Uiƒà<uÃDé#ýÿóúAWAVAUA‰ÕATI‰üUSH‰óHƒìHdH‹%(H‰D$81À¶iƒà<„;¾$H‰ßèVüüÿH‰$H‰ÅH…Àt)I‰ÇI)ßI�èkýüÿL‰úH‰ÞI‰ÆH‰ÇH‰$èýÿCÆ>HÇD$ H�D$ H‰D$H‰D$(E…í„ ‹=y…ÿuYL�=�[M�·ðI‹?H…ÿt01Ò1öè·mýÿI‰GH…Àt‹°�…öuA‹W‰��f.„IƒÇ0M9÷u¿ÇÁx¶6hE‹|$(L‰æƒà<tk€H‹¾øètýÿH‰ÆH…ÀtPHƒ~pH‹–øuÞ‹N(‰È‰ÏD1ø�瀃à øuÇöBD@uÁH‹‚H…Àtö@Xu¯D‰øƒñƒð ȃðA‰ÇëœAöÇ…õE1À1É¿ L‰D$L�=|jH‰L$èò~ýÿ¿ÇH‰Æ‹®jƒøƒÐÿI‹ÇÇFH‰F‹Ói‰FH�6ÒH‰Fè`¥þÿHƒìD‰êL‰çÿt$L‹D$(I‰ÁH‹L$ H‹t$èk�ýÿZYI‰Å¶gƒà<„?M‹eM�}M…ätI€Aƒ|$u.I‹D$¾$L‹0L‰÷èCúüÿH…ÀtH…ítL‰öH‰ßè^ýüÿ…Àx M‰çM‹$$M…äu¾Hƒ|$ tH‹D$(L‰ H‹D$ I‰H‹D$8dH+%(…+HƒÄHL‰è[]A\A]A^A_ÃH‹<$1Ò1öè³kýÿH…À„ÊýÿÿH‹P8E1íH…Ò„�f.„‹R(…Ò„4A3T$(ƒâ„&L‹p0L�xèL;pðt)ºH�51©1ÿèÆøüÿºH�5Þ¨H‰Ç1ÀèÐjþÿM‹?M…ÿ„M;wH…úE‹‡¤E…ÀxÞI‹WPI�GH…Ò…}ÿÿÿI‰Åë‘H‰4$1íéüüÿÿL�vYA÷Çt=Iƒè0AöÇt3I�è�AöÇu&H‹<$ºH�5 ¢èöüÿL�ªX…ÀI�@0LEÀI‹HH…É…¶ýÿÿI‹81Ò1öL‰D$è’jýÿL‹D$H‰ÁI‰@H…À…�ýÿÿI�PD‰þL‰çèîkýÿL‹D$H…ÀH‰Á…pýÿÿH‹ ¦bédýÿÿH‹|$H‰Á1ÒL‰æH‰$èû‰ýÿL‹,$éÞýÿÿf�M…ítyI�}L‰é1ÒL‰æèÚ‰ýÿé/þÿÿA‹L$xA¾¿(AÓæè|ýÿÇ‹ágƒúƒÒÿI‹×L‰pHÇ@ H‰P‹gÇ@‰PA‹T$xI‰EhI‹E8‰Pxé^ýÿÿA½~éÇûÿÿèR÷üÿf�óúAWAVAUATA‰ÔUSH‰ûHƒìHH‹—øH‹ ŠdH‰t$H‹BÇD$$‹xH‹A‹@‰<$‰D$ƒÿuH‹ƒè‹@‰D$$¶þcƒà<„)‹<$ƒÿ”Àƒ|$@”Æößc…ý„À„@„ö„ù‹s(ÇD$8@öÆ„ìH‹‚ö€� „ØL‹ƒèAö@ „ÆL‹=aM…ÿtUH�u\DI‹G8H9Ðt7H…Àt2H‹¸èöG t%D‹P(A1òD‰Ð©uA‹@,9G,„C€M‹ M…ÿu·H� H‰D$÷Æt,H�H‰D$@öÆtƒæH�H�HDÂH‰D$H‹�€ˆ� ë‹s(@öÆ…÷ÇD$8E…ä„qD‹zrE…Àu`L�-æSI�­°€I‹}H…ÿt/1Ò1öèÆgýÿI‰EH…Àt‹¸�…ÿuA‹U‰��f„IƒÅ0I9íu¿ÇrD¶-EbAöÅu/H‹;º H�5oè«òüÿ…ÀuL‹=pSM…ÿ…#€Aƒå‹k(H‰ÞA€ý„„@H‹¾øèLúüÿH‰ÆH…ÀtlHƒ~puå‹F(‰Â%€1êƒâ ÂuÒH‹¾øöGD@uÅH‹‡H…Àtö@Xu³H‹“øH‰ÙH‰t$èGÿüÿH‹t$…Àt–‹F(ƒõƒð èƒð‰Åë„@÷Å uJL�-)TM‹}M…ÿ„ßHƒìL‰ùD‰âE1ÉjH‹t$(M‰èH‰ßè}ŠýÿI‰ÇXZHƒÄHL‰ø[]A\A]A^A_Ã@öÅ„>A‰îAƒæt/ƒ<$„<H‹|$ºH�5EL�-QSèlñüÿ…À„{ÿÿÿL�-ÝR÷Å„hÿÿÿI�Å�÷Å@…UÿÿÿI�íð÷Å…BÿÿÿIƒÅ0@öÅ„4ÿÿÿE…öt/ƒ<$„åH‹|$ºH�5· L�-¦Rèñðüÿ…À„ÿÿÿL�ÒQ@öÅI�@ÐIDÀI‰ÅéåþÿÿfDH‹|$1Ò1öèzeýÿI‰ÇH…À„uýÿÿI‹w8L�57£HÇD$L�-ç¢H…ö„Îf.„‹F(…À„3C(¨uNƒ<$…ðƒ|$…åH‹“èH‹†è‹J,9H,u#¶=¼_ƒç@€ÿ…‰Hƒ¸ÀtpDM‹g0I�oèM;gðt"ºL‰ö1ÿè3òüÿºL‰îH‰Ç1ÀèAdþÿ�H‹mH…í„CL;eH…9D‹�¤E…ÉxÝH‹uPL�}H…ö…<ÿÿÿL‰|$ë•H‹@H3B©ðÿu†H‹“øH‹=h_H‰ÙèÀüüÿ…ÀuH‹D$Iƒ8IDÇH‰D$éTÿÿÿI�L‰ù1ÒH‰Þèãƒýÿé¦ýÿÿE1íE1ÿéwýÿÿƒÿ„ôL‹t$ºH�5ó L‰÷è1ïüÿÇD$8…À…ßûÿÿA€~aÇD$8„'H�¸ H‰D$é»ûÿÿI‹}H‰|$H…ÿt|1Ò1öè¦cýÿI‰ÇM‰}M…ÿ…úüÿÿH‹ Ÿ>I�U‰îH‰ßèeýÿI‰ÇH…À…ÙüÿÿL‹=¾[éÍüÿÿf„Hƒ|$A¼~„UûÿÿL‹|$1ÒH‰ÞI�L‰ùèø‚ýÿé»üÿÿƒ<$„KH‹D$€xa”À¶À‰D$L‹5_[M…ö„1É1À‰l$$E1ÿH‰\$0H‰ÅH‰ËHÇ$L‰l$(D‰d$<ëI„À…´M…ÿ„5„À…-I‹F8H…Àt‹@(¨t ¨L‰4$IEîI‹F L‰óH…À„ I‰ÆA‹¶Œ…öxÈM‹n0ºH�5r L‰ïè°íüÿ…Àu¬A€}a‹L$8A”Ä”ÀE¶ä…É…(¶ÀH�=Y I�tèŒóüÿ…À„ D9d$”ÀHƒ|$…DÿÿÿL‰t$éBÿÿÿ‹D$$ƒøtBƒø ”À¶À‰D$8H�ê HED$ƒ|$H‰D$„õøÿÿéÜùÿÿ1Àƒ|$$”À‰D$éµþÿÿH�z ƒ|$ÇD$8H‰D$„¾øÿÿé¥ùÿÿH�V H‰D$é”ùÿÿI‹F8H…À„ãþÿÿ‹@(¨„ØþÿÿM‰÷éÆþÿÿH‰èL‹l$(‹l$$H‹\$0D‹d$I‰Å1ÀH…ÿtè»íüÿK�|5HÇè^ïüÿL‹C¾H� "™I‰ÅH‰Ç1ÀHÇÂÿÿÿÿèºøüÿL‰ïH�°$è{íüÿH� ì˜M�t1ÀëFL‹qhM…Àt(¾L‰÷1ÀM‰áHÇÂÿÿÿÿèsøüÿH‰îL‰ïè¸Âþÿ…Àu;H‹ HƒÃH…ÉtX‹Cø…Àu¹¾L‰÷1ÀM‰àHÇÂÿÿÿÿè8øüÿH‰îL‰ïè}Âþÿ…ÀtÅL‰mA¸HƒÄD‰À[]A\A]A^A_ÃDD‰ÀÃ@L‰ïèÈéüÿE1ÀëÔóúH� ¯˜H� —éÙÇþÿf„óúHƒìH�=/.èÌóüÿH…ÀtW‹P H‹@‰^VH‰[V‹‘Y€ [ € ‡YǽX%þÿùÇêX ‰_YHƒÄÃfDÇ V8ë±@óúº ¾¿éõ„óú1ö1ÿé3óúé‡àþÿ€óúAUI‰õATI‰ÌUHcïSH�uHcÚHƒÃHÁãHƒìI‹}è‘ìüÿ·þH‰ÞI‰Ef‰(¶îˆT(I‹<$èkìüÿfoC"fo K"foS"fo["I‰$H�D fo%Z"fo-b"HP X0`@hPHƒÄ[]A\A]ÃATI‰üUH‹-ógS‰óHcE0�Pƒâü9Ð|-ƒÀH‹}8ƒàüH˜H�4€HÁæH…ÿtyèÔëüÿH‰E8H‹-¹gHcE0H�@H‹E8fïÀL‰çH�,ÐHÇEEèÁìüÿH‰EöÃtÆEöÃtÆEöÃtÆEƒãtÆEH‹bgƒ@0[]A\Ãf„H‰÷è(ìüÿH‰E8H‹-=gHcE0ë‚€Hc5ùf;5ËfS‰ûH‹=áft�Vˆ7‰ÛfHcÒÆ[Ãf��F2ƒÆ3‰œfHcöH…ÿtè÷êüÿHc5°fH‰¡fH‰Çë½@H‰÷è¨ëüÿHc5‘fH‰‚fH‰ÇëžDóúUHƒìdH‹%(H‰D$1À�ÿ—t/�ÿ™„˃ÿztnH‹T$dH+%(…3HƒÄ]Ã@H‹=Áaè„æüÿH‹-MHǪaH…í„IH�5U¡H‰ïè íüÿA‰À¸E…ÀtŸé6„H‹-ÙLH�5·¢H‰ïèÚìüÿ…À„âH�5ÿ¼H‰ïèÃìüÿ…À…3·&Vf%þ €f‰V¸é?ÿÿÿDH‹-�LH�5Í H‰ïè"æüÿ…ÀtvH�5‰¼H‰ïèæüÿ…À„ÇH�5w¼H‰ïèøåüÿ…À„ˆH�5i¼H‰ïèáåüÿºH�5  …À„�1ÿèFèüÿH‰îH‰Ç1ÀèYZþÿ¸é±þÿÿ€ÇzU¸é–þÿÿ@·[Uf%þ€Ìf‰MU¸ésþÿÿ�H�-Ö»H‰-²KH‰ïè êüÿH‰;`¸éKþÿÿf„ÇU¸é.þÿÿ@H�5¼»H‰ïèyëüÿ…À„‘ºH�5¨»H‰ïèMåüÿ…À„¥ºH�5›»H‰ïè1åüÿ…À„к H�5‘»H‰ïèåüÿ…À„/H�5)¨H‰ïèëüÿ…À…ä¶uTƒàóƒÈˆiT¸é‹ýÿÿf„€ NT@¸éqýÿÿ€Ç:T¸éVýÿÿ@1ÒH‰æH�}èbïüÿH‹$H‰ÇS€:u H�PÿH…„lþÿÿH‹nJºH�5¢žH�hé<þÿÿ1ÒH‰æH�}èïüÿH‹$H‰ˆS€:u H�PÿH…„%þÿÿH‹'JºH�5ƒžH�héõýÿÿH�5‹ºH‰ïèêüÿ…À…�¶zSƒàóƒÈˆnS¸é�üÿÿ1ÒH‰æH�} è îüÿH‹$H‰US€:uH…ÀxH…À…©ýÿÿHÇ7Sÿÿÿÿé™ýÿÿH‹›IºH�5ž1ÿH�h è´åüÿH‰îH‰Ç1ÀèÇWþÿH‹Së³H�5ó¹H‰ïèoéüÿ…ÀuH� �S¸éøûÿÿºH�5Ò¹H‰ïè2ãüÿ…ÀuSH�5Ö¹H‰ïè/éüÿ…ÀuÇYS¸é¹ûÿÿèråüÿH�5«�H‰ïèéüÿ…Àu%Ç-S¸é�ûÿÿºH�5îºé­üÿÿH�5�¹H‰ïèËèüÿ…ÀuÇõR¸éUûÿÿH�5l�H‰ïè¤èüÿ…ÀuÇÎR¸é.ûÿÿºH�5`�éNüÿÿff.„óú¶ÕQ‰Âƒâ€úu H� €R¨uö½Qt‹QR…ÀÇCRé*Aþÿf.„HƒìºH�5¨û1ÿè)äüÿH‰Ç1Àè?VþÿÇ RHƒÄéì@þÿff.„�óúATUS¾oXH‰û‰èÁí‰Âƒâ¨@u;L‹g(ƒÍ„ÒtAöD$D@uPAöD$D@u[1À]A\Ã�‰îL‰çè¶èüÿ[1À]A\À„Òt L‹g(AöD$D@u…ítÌL‹c(AöD$D@tÀëÆfD1ÿºH�5ûèmãüÿL‰æH‰Ç1Àè€UþÿëÆff.„óúAW1ÀAVAUATUSHƒìD¶zXAöÇ„ÿL‹bI‰ýH‹~I‰öH‰ÓèGãüÿL‰çH‰Åè<ãüÿHÅAƒç…çL‰ïè'ãüÿH�|èÍäüÿHƒì¾M‰áAUM‹FH‰ÇH‰ÅHÇÂÿÿÿÿ1ÀH� mýè îüÿXH‰ÞZH‰ïèc¸þÿ…À„ÖH‰kH‹{(¾èIìüÿA‰À¸E…Àt^H‹S(öBD@tT¶CX‰Âƒâ€út-ºH�5Ì’1ÿèaâüÿºH�5 ýH‰Ç1ÀèkTþÿ¶CX¨„�H‹{(L‰æèëüÿ¸HƒÄ[]A\A]A^A_ÀH�}èïãüÿM‹FM‰á¾H‰ÇH‰Å1ÀHÇÂÿÿÿÿH� ýèHíüÿH‰ÞH‰ïè�·þÿ…À…*ÿÿÿH‰ï‰D$ èùÞüÿ‹D$ HƒÄ[]A\A]A^A_ÃfDH‹{èçäüÿI‰Äé`ÿÿÿff.„@AVAUI‰õATU‰ÕS€?uH‹w^L‰h‰h[]A\A]A^ÀH‰ûè˜äüÿI‰ÄH9Ãt2…íH�ê–I‰Ø‹6^H� þûH‹5 ^H�= ùHDÈ1Àè>SþÿH‹^H‹;è?Þüÿ¾.L‰çè²áüÿH…ÀtL‰çè%ãüÿH‰éoÿÿÿD…íL‰çH�Ê·L�5�LDðèüàüÿH�xè£âüÿM‰ñM‰à¾H‰H‹®]H� ¹”HÇÂÿÿÿÿH‹81Àèöëüÿéÿÿÿ�óúAWH� ÓFAVAUATUSHƒìH‹‡H‹WH‹€˜ L‹‚pH‹X0L‹x(H‹CpH9È„)L‹°èI‰üI‹nHH…í„ÒHkhH‹C@L‰D$H‰î¿L�hðÿ’�I‹D$L‰ïH�uÿ��I‹D$H�u¿ÿ��H�ML‰þL‰çL‹D$ÇE GNUI‹€ E‰èH‹P è”H‹sh1ÒIvL‰çL‹k@èëüÿA‰À1ÀE…ÀtHƒÄ[]A\A]A^A_ÃDL‰âL‰îH‰ïèäüÿI9Å”ÀHƒÄ[¶À]A\A]A^A_Ãf.„H‹«¸H…í…"ÿÿÿH‹{@L‰D$è"áüÿI‹T$L‹D$H‰ƒ¸H‰Åéûþÿÿf„ºH�5,÷1ÿè ßüÿH‰Ç1Àè#Qþÿ¸éUÿÿÿf„AVAUL�-E÷ATL�%,LUH�-$ûSH‰ûƒ{wl‹CHcD…Hè>ÿà@H‹S¹€:.„�D‹C(H‹=;LL‰æèsÜüÿ…ÀuhL‹sL‰î1ÿºè|ÞüÿH‰ÇL‰ö1Àè�PþÿëFDH‹[ƒ{v”[]A\A]A^ÃDH‹{èWÿÿÿH‹{ èNÿÿÿH‹[(éeÿÿÿDH‹{è7ÿÿÿH‹[ éNÿÿÿfDH‹S1É€:.…cÿÿÿ€ztÜéXÿÿÿff.„óúƒtÃDH‹éçþÿÿ€óúUSH‰óHƒìH‹vH;s‡•H�vH‹K H‰ýHÁàHH9H uMH‹{1ÒèòßüÿH‹SH‰EH�RHƒÂHÁàH‹H‰M¶HH‹ƒá‰EH‰è‰M H‰SHƒÄ[]ÀºH�5¨�1ÿè=ÝüÿH�5øº§H‰Ç1ÀèGOþÿH‹së„�HÇC1ÀHÇC HƒÄ[]ÀóúATUH‰ýSH‰óHƒìL‹fdH‹%(H‰D$1ÀM…äuHÇFA¼H‹{è.åüÿL9àvIH‹sH‹{H‰âH�FH‰CèßüÿH‹$‰Ñ‰UH9ʺHEÂH‹T$dH+%(uHƒÄ[]A\ÃHÇC1ÀëØèŸÜüÿff.„@óúAUATUHƒì0dH‹%(H‰D$(1ÀH‰4$H‰T$H‰L$HÇD$HÇD$ H…ÿtH‹§IH‹@ƒxt%H‹D$(dH+%(…ÀHƒÄ0]A\A]À¶!Iƒà<tÍI‰äH�5ÀþÿÿH‰ýL‰âè¥Øüÿ…ÀxQL‰âH�5×ýÿÿH‰ïè?ãüÿ…ÀyžH‰ïè“Úüÿ‰Çè\Ûüÿ1ÿºH�5^ôH‰ÅèvÛüÿH‰îH‰Ç1Àè‰Mþÿégÿÿÿ@H‰ïèXÚüÿ‰Çè!Ûüÿ1ÿºH�5ÓóI‰Åè;ÛüÿL‰îH‰Ç1ÀèNMþÿéxÿÿÿèdÛüÿ@óúAWAVAUATUSHƒìHdH‹%(H‰D$81À¶GHƒà<…œ‹V…À„ÜH‹wHH‹CH‰\$ H‹8èÖ²H‰ßèιH‹ƒ1Ò1ÿH‹ \HH‹€H‰†XH…Ét;f„H‹��H…Àt@��H‹@H…ÀuñH‹‰øH…ÉuÕHcúHÁçè9ÜüÿL‹-HH‰$M…í„ÚÇD$M‹¥�M…ä„ËM‰æëB„D‹xH‹(º1ÿH�5»�èÚüÿD‰áD‰úH‰îH‰Ç1ÀèLþÿM‹vM…ö„„I‹FpD‹`(H‹X0AöÄtáH�=@H9øtÕI‹nhH…ÛtŸL‰ïè'Øüÿ…À„�L‰öL‰ïM‹¥°è�ãüÿHcøèuÛüÿL‰áL‰öL‰ïH‰ÂI‰Çè�âüÿ…ÀŽHëƒèL‰l$M‰ýI‰ÜI�lÇ‹\$é×f.„I‹MH‹QöB…®H‹ŸR‹@9„œH‹H‹�x€„éH‹@ H�5^?H9pp„¤D·BH‹AHcó¶JHÁæH4$fAÁèLà‰^ AƒàH‰ÀéAiÀè¶É È=Â]„à� =€>„=�>…×1ÒÆFƒÃf‰V €IƒÅL9í„‹ µS…É„%ÿÿÿI‹EH�5›‚¿H‹H‹H‹P1ÀèDßüÿéÿþÿÿH‹°TH‹1VH‰�¸¶ƒEƒà<uH‹D$ H‹€Ç€`H‹FH‰$H…À… L‹5[SM…ö„òH�5è—L‰÷è£ßüÿH‰ÅH…À„9H‹VH…À„´Hƒ8tmD‹XH‰éE…Û…ƒº¾H�=8‚è+áüÿH‹ÔUºH‰îH‹8èÔ¬H‹EH‹€Hƒ¸…xH‰î¿ è«ÙüÿH‹”UHƒxtEH‰éº ¾H�=à�èÄàüÿH‹mUºH‰îH‹xèl¬H‰î¿ è_ÙüÿH‹HUD‹@l‹HhAƒøÿ„[H�¤�¾H‰ï1Àè�àüÿH‹Uƒx ÿuD‹H(Aƒùÿ„ÝH‰î¿ è ÙüÿH‹òT‹H$ƒùÿ…5‹H ƒùÿtH�{�¾H‰ï1Àè(àüÿH‹ÁTD‹@,‹H(Aƒøÿ„7H�]�¾H‰ï1ÀèúßüÿH‹“TD‹P0E…Ò�@D‹@@E…À�±‹pX…ö�dH‰ïèæÕüÿƒøÿu!H�5Æ1ÿºèÖüÿL‰öH‰Ç1Àè!Hþÿ�H‹=™CH�5“�èmØüÿH…Àt ‹P(ƒâïƒÊ ‰P(H‹D$8dH+%(…OHƒÄH[]A\A]A^A_Ãf„=’e„=}…ÍIƒÅÆFƒÃL9í…ýÿÿfD‰\$L‹l$L‰ÿèŸÒüÿM‹vM…ö…|ûÿÿM‹­øM…í…ûÿÿHcD$L‹,$ºH� ý€H‰ÃH‰ÆL‰ïèÏÓüÿ…Û„Ó�SÿH‹ýRL‰éHÁâI�\HÇÂÿÿÿÿë„HƒÁHƒÀH9Ët.H‰ÖH‹HÁê H9òt HƒÀHƒàüHƒÀ€yuÒHƒÁHƒÀH9ËuÒHƒÀHÇÅÿÿÿÿIÇÄÿÿÿÿHƒàüH‰ÇH‰…Rè€ÖüÿH‰$L‹t$ H‰hRH‰Á1ÀHÇ`Rë|fDA¾}H�4I‹FA�çÿÁç HcÿLÿÿP`H‹1RHƒÀA€}H‰!Ru(HRI¿} H‰ÆI‹FÿP`H‹RHƒÀH‰÷QIƒÅL9,$„6H‹ ÚQM‹}L+=ßQL‰ûH�ãðÿÿL9ã„lÿÿÿ¨t#H�P@H‰ÖÆDÿH‰ÐH�RƒæuìH‰�QHƒýÿtH)èH�t)H‰ÇI‹FÿPHH‹ vQI‹FH sQH‰ßI‰ÜH‰ÎÿPHH‹-`QH‹ QQH�EH‰NQéñþÿÿf„I‹>H�5�}H‰T$H‰L$è'×üÿH‹L$H‹T$…À…1úÿÿé úÿÿH‹PH‹|$ E1ÉE1À1ÉH�5h@èsÑüÿH…À„zúÿÿ¶P€ú„}€ú…dúÿÿI‹MH‹Qéãùÿÿ€‹…À„Fúÿÿƒø„=úÿÿ1ÿºD‰D$H�5¢zèµÒüÿ‹t$H‰Ç1ÀèÇDþÿéúÿÿf�ÆFƒÃéúÿÿ@ÆFƒÃéôùÿÿ@f�xBi…äùÿÿH‹PHH‹@PH‹ŠH‹H‹�ˆH‹ÐH…À„¾ùÿÿ€x„´ùÿÿH� �8H9H(…?ÿÿÿéžùÿÿºH�5‚1ÿèÒüÿL‰îH‰Ç1Àè.DþÿH‹5çOH‹=`NH…ö…çH‹ÈOHƒ=PNH‰‡¸„¡ùÿÿH‹=lNè¯Óüÿ‹ÑOH‹ZN1öH‰©OH‰ÅH�@(D�$�H‰$H‰ïMcäL‰ãH˰OH‰\$D�,…McíIÝ�è)ÓüÿH‹D$ HcÛLëH‹€‹€¬ƒøÿ„±HcøH‹D$ H�uH‹@ÿ��H‹{O‹@hƒøÿt7L‹|$ HcøH‹ OI‹GH�qÿP`H‹OH�p H‹GOHcxlI‹GÿP`H‹]ML‹|$ H‹ÙNH‹RpH�p H‹z0H‰ÚH+=»NH)ÂI‹GH×ÿPHH‹5ÏNH‰ßè·ÎüÿH‰ßèßÐüÿHc=ÌNH�lH‹ŒN1ÛH�pI‹GÿPHH‹xNHc=‰NH�pI‹GÿPHH‹_NHc=„NH�pI‹GÿPHH‹¾LH‹?NH‹RpH�pH‹z0H‹$H+= NH)ÂI‹GH×ÿPHH‹ŒLH‹ NH‹RpH�p H‹z0H‹T$H+=íMH)ÂI‹GH×ÿPHH‹YLH‹ÚMH‹RpH�p$H‹z0L‰êH+=¼MH)ÂI‹GH×ÿPHL‹=NA‹G@…Àréd÷ÿÿAÆ$_H‹@HI�|$J‹t0è˜ÍüÿH‹= =1É1ÒL‰æA¸è�ÒüÿH…Àt€xuH‹P0H‹¡MH‰ØL‰çHƒÃè‰ÌüÿL‹=’MA‹G@9ØŽHI‹GHL�4›IÁæJ‹|0è`ÏüÿH�xèÑüÿI‰ÄH‹…H‹@…ÀH‹QM„H‹PHJ‹t2€>@…IÿÿÿL‰çèñÌüÿéTÿÿÿL‹-%MI‹}H…ÿHD=æLH‰=_KèúÐüÿH� “¶H‰AK„ÒtDöQŒuÆ_¶PHƒÀ„ÒuëH‹$H‰ßè_Ôüÿ1öH‰ßèeÕüÿI‰ÆH…À„— ‹¿:…À…- ¾L‰÷E1äè»ÒüÿA€NIL‰÷èî²H‹÷;H‰D$H…Û„—f„H‹-™JH…ítr@1Òƒ}¸uH‹3H‹}è7Íüÿ…À”•ÀH‹mH…ít„ÀuÒ„ÒtH‹t$H‹x0H‰èH+=ôGH+õGHÇH‹CÿPHL‰þH‰ïHƒD$èêÇüÿH‰ïèÊüÿL‹|$E‰ñD+ ÷GH�lH‹CIcùL‰þÿP`L‰øL‹=÷G‹|$HƒÀH‰D$I‹GHB‰|(�G‰D$IƒÄE9g@Ž=ñÿÿI‹GHK� ¤L�,ÍLèD‹pAƒþÿ…›þÿÿL‹=¤GëÈf�M…ÀtðH‹ŒGD‰ö+5oGÁæH‹<8I‹@pHcöH+=GIxhHx0H‹CH4$ÿPHL‹=\GI‹wHLîéÑþÿÿè«ÎüÿèöÈýÿ¾1ÿèºËýÿH‹ƒ4ÿP8H‹= 2H‹5ò11ÒH�L$4ƒð1ÇD$4HÇá:ÇÏ:Çý1èòH‹=Eé¥öÿÿƒùÿ„¹ñÿÿH�Os¾H‰ï1ÀèÒüÿH‹¶Fé—ñÿÿD‹H A‰ÈH�2sD‰ÉH‰ï¾1ÀèñÑüÿH‹ŠFD‹@,‹H(Aƒøÿ…Éñÿÿƒùÿ„ÝñÿÿH�1s¾H‰ï1ÀèºÑüÿH‹SFD‹P0E…ÒŽÀñÿÿH‰éº ¾H�= sè}ÑüÿH‹&FD‹H0E…ÉŽ“ñÿÿ1ÛL�-ñL�=ìrëF€€x…€x…/€x…VH‰î¿ HƒÃèáÉüÿH‹ÊE9X0Ž;ñÿÿH‰éº¾L‰ïèüÐüÿH‹¥EH�[H‰îL�$ÅH‹R8H‹<Â1Òè—œH‹€EH‹H8LáHƒyH‰Èt@H‰éº¾L‰ÿèªÐüÿH‹SE1ÒH‰îH‹@8J‹| èPœH‹9EH‹H8LáH‰È€x„%ÿÿÿH‰éº¾H�=üqè\ÐüÿH‹EH‹H8LáH‰È€x„ûþÿÿH�=ÛqH‰éº¾è(ÐüÿH‹ÑDH‹x8LçH‰ø€x„ÑþÿÿH‰éº¾H�=¡qèôÏüÿH‹�DL`8L‰à€x„ªþÿÿH‰éº¾H�=yqèÃÏüÿéŒþÿÿº¾H�=¬pè¨Ïüÿéxîÿÿ1ÿºH�5�qèÆüÿ¾H‰ïH‰Â1ÀèŽÏüÿé»ïÿÿ‹H$ƒùÿ…pýÿÿD‹@,Aƒøÿ„|ïÿÿéZïÿÿH‰éº ¾H�=.qèAÏüÿH‹êC‹JX…ÉŽqïÿÿE1äL�-ßîë]1ÒH‰îèÖšHƒ{t'º¾H�=ñpH‰éèöÎüÿH‹{1ÒH‰î訚H‰î¿ IƒÄè—ÇüÿH‹€CD9bXŽïÿÿH‹R`K�¤H‰é¾L‰ïH�ºè¥ÎüÿL‹;M…ÿt;H‹sH…öt L‰ÿèÜÈüÿ…Àt&1ÒH‰îL‰ÿè;šH‰éº¾H�=kèbÎüÿH‹C1ÒH‰îH�xèš¿.H‰îèÇüÿH‹{H…ÿ…ÿÿÿ‹K H�BuH‰ï1À¾è-ÎüÿéÿÿÿH�=ÊoH‰éº¾èÿÍüÿH‹¨B‹x@…ÿŽ$îÿÿ1ÛL�-žíL�%ŸoH‰ÂëJ„A€!…ÈA€"…áA€#…úH‰î¿ HƒÃè^ÆüÿH‹GB9Z@Ž#H‹RHH�›H‰é¾L‰ïL�<ºèmÍüÿI‹?1ÒH‰îè ™I‹H…ÿtI‹7èŸÇüÿ…À…°A‹OƒùÿtL‰â¾H‰ï1Àè<ÍüÿA€ „QÿÿÿH‰éº¾H�=ÔnèÍüÿA€!„8ÿÿÿH‰éº ¾H�=¹nèäÌüÿA€"„ÿÿÿH‰éº¾H�=ŸnèÀÌüÿA€#„ÿÿÿH‰éº¾H�=ƒnèœÌüÿéèþÿÿH‰éº¾H�=‡è~ÌüÿI‹1ÒH‰îè0˜é$ÿÿÿH‰Ðéšìÿÿ¨t*H‹5 @H�P@H‰ÑÆDÿH‰ÐH�RƒáuìH‰…@HƒýÿtH)èH‹m@H‰ÇH‹D$ H�t*H‹PÿRHH‹=Ú>H‹5S@H;w@ƒiðÿÿH‹:@f�HƒÆÆD0ÿH‹=°>H;w@rêH‰5#@é>ðÿÿ1ÿºH�5tlè+ÂüÿH‹4$H‰Ç1Àè-2þÿé­óÿÿH‹+1ÿºH�5flèÂüÿH‰ÇH‰î1Àè4þÿéîéÿÿH‰éº¾H�=zlègËüÿH‹p/¾H‰ïH�uèH‹€H‹ˆ1ÀèLËüÿé?êÿÿH‹D$ 1ÿH‹@L‹¸�è€ÆüÿH�uH‰ÇAÿ×é?ðÿÿH�=š&H9x(…nôÿÿé”ôÿÿH‹<$H� mº1öèô¿üÿH‹-?H�xHƒçüH‰=?èÃüÿH‹=’=1öHÇ?H‰ö>Hƒ@…³þÿÿéïÿÿfDH‹4$H�=tkè3þÿéåôÿÿH�=Tiè3þÿéÄôÿÿ1ÿºH�5ähèÏÀüÿH‹4$H‰Ç1Àèá2þÿéºèÿÿH‹ƒØL‹#ºH�5ÖhH‹(é*õÿÿ1ÿºH�5iè‹ÀüÿL‰öH‰Ç1Àèž2þÿé¢èÿÿè´Àüÿ@óúAWA‰÷AVAUATUSH‰ûH�ìØL‹o‰T$L‰ïdH‹%(H‰„$È1ÀH‹Ð-H‹@H‹0è´¿üÿH…À„ÿH‰ÅèîÁüÿL‰ïI‰Æè3ÂüÿHƒ=³2IÇI‰F„‚H‹ƒ2L‰0�MD€¾H‰ïL‰5j2èuÉüÿA‰Æ…À„ŠöED@„˜H‹I-H‹@H9E…ƒE…ÿ…zH�t$(H‰ïèUÄüÿ…À„�H‹D$(H…À„WL‹5X*H‰)=Ç=M…ö„"1À@AöFY„Å…À…½I‹~(H…ÿ„°öGD@„¦èé¿üÿI‰ÇH…À„ÍL‹%Î<M…äué @M‹$$M…ä„ûI‹t$L‰ÿè¾üÿ…ÀtâM‹D$¾/L‰ÇL‰D$ès¿üÿH…ÀuÆH‹|$H�5•ÙèÝÉüÿH…Àt°L‹D$H�PL‰ÿL)ÂL‰ÆèÀüÿ…Àu•ÇC<¸fDM‹vHM…ö…#ÿÿÿ…À…‹t$…ötCL‹d$(M…ä„ýL�5.Ùë@M‹$$M…ä„ãI‹|$ºL‰öèñ»üÿ…ÀuÝDL�5A;H‰ïL‰öèF½üÿ…À…H‹}è5Áüÿ‹ ;*I‰Ä…É…ÜL‹=Í(1ÿL�l$0HÇ#:M…ÿué �M‹HM…ÿt7AöGYtðH…ÿuëI‹(H…ÿtâè�¾üÿ¨„�M‹HH‹=â9M…ÿuÎDH…ÿ„¿A¾ë'€L‰50é|ýÿÿ@D‹5�)E…ö…(H‹„$ÈdH+%(…*H�ÄØD‰ð[]A\A]A^A_Ã@H‰ïE1öè-ÅüÿëÃI‹(L‰îè<¼üÿ…À…lI‹H9D$0„.H‹/9¾/H‹xH‰|$è|½üÿH‹|$H…À…)ÿÿÿH�5š×èâÇüÿH…À„ÿÿÿI‹(HƒÀH‰D$èg½üÿH‰ÁH…À„sH‹Ô8H‹T$H‰ÏH‰L$H‹pH)òèÛ½üÿH‹L$…À…ÉþÿÿH‹§81ÿºH�5ÉÕH‰L$L‹PL‹HL‰T$L‰L$è-¼üÿH‹L$H‹T$H‹t$H‰Ç1Àè4.þÿézþÿÿ€1ÿºH�5êÖèõ»üÿL‰êL‰æH‰Ç1Àèõ+þÿéüýÿÿ1ÿºH�52ÕèÍ»üÿH‰îH‰Ç1Àèà-þÿé½ýÿÿH‰ïL‰æè�ÄüÿH‹;H…ÿtè�¼üÿ¾¨u¾H‰ïèŠÀüÿH‹;)H�5Ì(H‰ïH‰(H�…øH‰ )H‹Eÿ�À…À…ßýÿÿ1ÿºH�5`òèC»üÿH‰îH‰Ç1ÀèV-þÿéºýÿÿ�H‰ïèHÃüÿéÛýÿÿºH�5Wù1ÿE1öè »üÿL‰îH‰Ç1Àè +þÿé°ýÿÿ„‹ª8émüÿÿD1ÿºH�5úÓèͺüÿH‰îH‰Ç1Àèà,þÿé>ûÿÿH‹D$8H9ä7…ÀýÿÿH…À„·ýÿÿL‰=î6L‰ÿéÎüÿÿfDM‹O(ºH�5xÕ1ÿL‰L$èlºüÿH‹t$H‰Ç1Àè},þÿH‹=®6é‘üÿÿ�H‰ïE1öèeÂüÿéøüÿÿI‹F(H‹8èt½üÿI‰Çéûÿÿ‹T$…Ò„üÿÿI‰ÄéËûÿÿI‹èO½üÿH‰Áé|ýÿÿèBºüÿf�óúAWAVAUATUH‰ýH‰÷SHƒìX‰T$ ‰L$$D‰D$dH‹%(H‰D$HH‹F€8/H‰D$„êH…í„Y€}„OH‹H‰D$0H‹D$H‰ÇH‰D$8è¾¹üÿHƒÀH‰D$(D¾5U&H‰ïè!ºüÿH‰D$H…À„sL‹|$H‹D$(L‰ûH)ëH�<è*»üÿI‰ÆH‰ÇL9ýtH‰ÚH‰îèÔ½üÿAÆ/I�|H‹t$1Ûè·üÿé5f„H�5ôüH‰ïèá¼üÿ…ÀtH�5ÔH‰ïèμüÿ…À…oH‹D$0H…À„hL‹M…É„UA€9/„ªL‰L$èx¹üÿH‹|$H‰ÅèÛ¸üÿH‰ïH‰ÃèиüÿH�|èvºüÿL‹L$I‰èH� ºÓH‰ÃH‰Ç¾1ÀHÇÂÿÿÿÿèÎÃüÿ¾/H‰ßè�¹üÿH…À„XÆH‰ßH‰Ýèz¸üÿD‰ÿM)ôHÇèºüÿI‰ÇM…í„€IƒÅ¾H‰ÇM‰ñAUE‰àH� DÓ1ÀSHÇÂÿÿÿÿèfÃüÿH‰ßè.¸üÿ^_A�\L‰÷M‰þèµüÿH‰ïèµüÿ‰ß¾$L÷è…¸üÿI‰ÄH…À„q¾/L‰çI�\$èg¸üÿL‰÷I‰ÅèÜ·üÿI‰ÇM…ítAÆEA¶D$H‰Ú<{u A¶D$I�T$H�j±üÿ…ÀuA¶F< „< „ L‰ðA€ü=u 釀D¶`HƒÀE„ätA€ü=tA€ü wæH¹:L£ásÖL9ðuéL@HƒèI9Æ„;€xÿ/tíI‹?L)ðI‰ÄH…ÿ„4I‹GI‹OH�PI�4H9΃>I‰W¶›ˆI‹I?L‰âL‰öèJ·üÿI‹MgM‰gBÆ L‰ïèÒ¶üÿ…À„JþÿÿH‰ï貯üÿL‰ïè:²üÿ¸H‹T$xdH+%(…H�Ĉ[]A\A]A^A_ÀM�F@A¶€ú „>€ú „5„ÒtŒL‰ÀH‰ÁD¶`HƒÀA€ü „"A€ü „E„äuÛH�AH‰D$„Ò„PÿÿÿHÇD$€ú/twH‹|$¾/L‰D$èè²üÿL‹D$I‰ÆL‰ÇL‰D$(èã±üÿL+t$I�|H‰D$ IƒÆè{³üÿH‹t$L‰òH‰ÇH‰D$è&¶üÿH‹D$H‹L$ H‹t$(J�<0H�Qè ¶üÿL‹D$H�L$01Ò1öL‰ÇH‰L$ 迺üÿ…Àu1E1öHƒ|$0tH‹D$8L‰ÿJ‹4ðIƒÆè‹üÿÿL;t$0räH‹|$ èú­üÿH‹|$è@®üÿL‹D$E„ä„hþÿÿA¶€ú …ÂþÿÿIƒÀé¬þÿÿ@ÆA¶HƒÁH‰L$„Ò…æþÿÿL‹D$ë¾f„I‹?E1ä1ÀH…ÿ…ÌýÿÿH�¸I‰è²üÿIÇGI‰H‰Çé×ýÿÿJ�´!I‰w英üÿI‰H‰ÇI‹GH�Péžýÿÿ1Àéìýÿÿ蜰üÿff.„�óúAWAVAUATUH‰õSHƒìL‹?H‰|$H‰÷M…ÿt[èV°üÿD¾%úM‰þH‰ÃE‰åDH‰ÚL‰öH‰ïèÒ­üÿ…ÀuA¶„Àt2D8èt-D‰æL‰÷è•°üÿH…Àt0L�pëÊf.„èû±üÿH‹L$H‰HƒÄ[]A\A]A^A_Ã@L‰ÿèØ¯üÿH�|è~±üÿHƒìD¾ nHÇÂÿÿÿÿUL‹|$H‰ÃH‰ÇH� wb¾1ÀM‹èɺüÿI‹?葬üÿI‰XZHƒÄ[]A\A]A^A_Ãff.„f�óúAWI‰÷AVI‰þAUM‰ÅATUH‰ÕSHƒì8‹G@‰L$L‰L$‰D$H…Ò„)H…ö…0I‰×H‹D$M‹fHÇA‹^@…Û„"D‹D$L‰éH‰êL‰þL‰çè¼°ÿÿ…ÀŽäƒû„ HcÃD‹D$L‰éH‰êH�€L‰þHÁàL�PØH‰$K�<L‰T$ H‰|$èw°ÿÿL‹ $…À�»H‹|$D�[ÿ„lƒûL‹T$ „NE…ÛŽ~E1ÒL‰d$E‰ÜL‰t$(E‰Ö‰\$ ë@E�qE9æ�»G� &H‹L$H‰êL‰þAÑùD‹D$IcÁD‰ $H�€H�ÁL‰éH‰ßèê¯ÿÿ…À„"D‹ $y´E�aÿë²fDH…ö„Úþÿÿ€H…íIDïéÇþÿÿ@E1ÛE1É‹D$ƒÀƒàà9Ã|?ƒÃ L‰L$ƒãàD‰$HcÛH�4›HÁæM…ä„ñL‰çè‘®üÿA‹^@D‹$I‰FHL‹L$I‰ÄMÌA9ÛtD)ÛI�|$(L‰æHcÛH�›HÁâ芴üÿIÇD$ fïÀL‰ÿA$AD$èZ¯üÿH‰ïI‰$èN¯üÿI‰D$M…ít L‰ïè<¯üÿI‰Å‹D$M‰l$A‰D$AƒF@HƒÄ8L‰à[]A\A]A^A_Ã@tE1ÉE1ÛéÿÿÿI‰ÜH‹D$ÇëÊA‰Ûéþþÿÿ„A»A¹(éåþÿÿ€H‰÷èp®üÿA‹^@L‹L$I‰FHD‹$I‰Äé ÿÿÿ€IcÆL‹d$‹\$ L‰é‰D$ H�€D‹D$H‰êL� ÅL‰þL‹t$(K�< L‰L$H‰<$è®ÿÿH‹<$L‹L$…ÀD‹T$ ~5E�ZIƒÁ(éVþÿÿM‰Ñ…À…KþÿÿDH‹D$I‰üÇé÷þÿÿDE‰Ó…%þÿÿI‰üé ÿÿÿA¹(A»é þÿÿfDóúAVAUATA¼UH‰õSH‹wH‰ûH…ötoH‰ÏHƒÆI‰ÖE‰Åèm¯üÿA‰Ä…ÀuVH‹sH‰ðH ètH…ítuH…ötpH‰ïèH¯üÿ…ÀuDH‹3L‰ðH ðtM…ötDH…öt?L‰÷è'¯üÿ…Àu#D;k t A�ÄE¶äG�d$ÿ[D‰à]A\A]A^Ã@A‰Ä[]D‰àA\A]A^Ã�IƒþEäAƒÌëÓHƒý[]EäAƒÌD‰àA\A]A^Ãf„óúAWL‰ÀI‰÷AVAUM‰ÅATUH‰ÕSH‰ûHƒì(M…ÀD‹WXL‹g`L‹\$`HDƉL$L‰L$AÇ‹wX…ö„HD‰T$Hƒì‰ÊI‰èASH‰ÁA‰ÑL‰çL‰úL‰\$pè*°A‰ÆXZL‹\$`A‹ …Ét!IcÖH�’M�$ÄHƒÄ(L‰à[]A\A]A^A_Ã@D‹T$IcÆ‹sXH� €AƒÂHÁáAƒâðA9òŽßIÌA9ötD)öI�|$(HcöH�¶L‰æHÁâè1±üÿL‹sPM…öuéûM‹6M…ö„ìI�~H‰î設üÿ…ÀuäIÇD$ fïÀA$AD$M…ÿt L‰ÿèÏ«üÿI‰D$‹D$M‰t$A‰D$ M…í„‹L‰ïè««üÿI‰$H‹D$H…Àt H‰Çè•«üÿH‰D$H‹D$I‰D$ƒCXéÿþÿÿDAƒÂAƒâð�IÿÿÿE1ö1ɃÆH‰L$ƒæðHcÆH�4€HÁæM…ätjL‰çè"ªüÿ‹sXH‹L$H‰C`I‰ÄéêþÿÿfDI‹D$ésÿÿÿfDH‰ïè©üÿH�xè·ªüÿH‰îI‰ÆH‹CPI�~I‰L‰sPIÇF赦üÿéìþÿÿH‰÷航üÿ‹sXH‹L$H‰C`I‰Äé€þÿÿ@óúAWAVAUATUSH‰ûH�=]êH�ì˜dH‹%(H‰„$ˆ1Àèi€H‹S(¶BHƒà<t2E1íH‹„$ˆdH+%(…ð H�ĘD‰è[]A\A]A^A_ÃH‹‚D‹ˆ€E…Ét»D‹€`E…Àt¯H‹Z!H‹kH‹0H‰ïès§üÿI‰ÄH…À„¿è­©üÿH‰ïH‰Ãèò©üÿHƒ=rHÇH‰C„ÑH‹BH‰¾L‰çH‰0è;±üÿA‰Å…À„€1Ò¾<L‰çèá²üÿL�¼$„L‰â¾L‰ÿ艱üÿ¶œ$…1ÒL‰ç¶„$„Áãö„$†Áàö„$‡ÁàÃ�stHcö芲üÿL‰â¾L‰ÿè:±üÿ¶„$…¶”$„Áàж”$†Áâж”$‡ÁâЄ‹þÿÿ�sx1ÒL‰çHcöè5²üÿL‰â¾L‰ÿèå°üÿ�s|1ÒL‰ç¶„$„Hcö¶¬$…D¶¬$†D¶´$‡ˆ$èð±üÿL‰â¾L‰ÿè °üÿ¶„$…¶”$„Áàж”$†Áâж”$‡ÁâЉÀH‰D$PH…À„çýÿÿ¶$@¶ÅAÁå�sÁàAÁæHcöL‰çÐ1ÒDèDð‰ÀH‰D$ èo±üÿL‰â¾L‰ÿè°üÿ�s1ÒL‰ç¶¬$…¶„$„HcöÁåÅHcÅH‰$è3±üÿL‰â¾L‰ÿèã¯üÿ¶„$…¶”$„Áà�DH˜HÃH‰\$`…í„9L�t${1ÉL‰t$(H‰Í�s 1ÒL‰çHcöèØ°üÿL‰â¾L‰ÿ舯üÿ¶„$…�sL‰ç¶”$„HcöÁàж”$†Áâж”$‡ÁâD�41Ò臰üÿL‰â¾L‰ÿè7¯üÿ¶´$‡1ÒL‰ç¶Œ$†¶„$…D¶¬$„@ˆt$�sHcöˆL$ˆD$è9°üÿL‰â¾L‰ÿèé®üÿ1ÒH‰ÞL‰ç¶„$„ˆD$0¶„$…ˆD$8¶„$†ˆD$@¶„$‡ˆD$Hèì¯üÿH‹|$(L‰â¾èš®üÿH‹L$ L9ñr,¶D$¶T$ÁàÁâDèЋT$ÁâЉÀLðH9Á‚†HƒÅHƒÃ(H9,$…ªþÿÿHÇD$HL‹t$(E1ÒM‰õHÇD$XH‹\$`HÇD$@M‰ÖHÇD$8HÇD$0HÇD$(HÇD$ë4fDA�}.rda„A�}.bss„¼IƒÆHƒÃ(L94$„Š�s1ÒL‰çHcöèú®üÿL‰â¾L‰ÿ読üÿ¶„$…�s L‰ç¶”$„HcöÁàж”$†Áâж”$‡ÁâÐ1Ò‰ÀH‰D$褮üÿL‰â¾L‰ÿèT­üÿ¶„$…�s$L‰ç¶”$„HcöÁàж”$†Áâж”$‡Áâ�,1ÒèT®üÿL‰â¾L‰ÿè­üÿ¶„$…H‰ÞL‰ç¶”$„Æ„$ƒÁàж”$†Áâж”$‡ÁâÐ1Ò‰ÀH‰D$èù­üÿL‰â¾L‰ï詬üÿA�}.dat…£þÿÿfAƒ}a…—þÿÿH‹D$‹=ŒH‰l$HèH‰D$(…ÿ„“þÿÿHƒìÿt$L‹L$8L‹D$(H�¶ÇL‰é¿1ÀH�5íBè©üÿXZé]þÿÿf„1ÿºH�5šBèí¡üÿH‰îH‰Ç1Àèþÿé”ùÿÿH‰‰é-úÿÿ@1ÿºH�5ÂK赡üÿH‰îH‰Ç1ÀèÈþÿéYùÿÿfA�}ta…ÙýÿÿA€}…ÎýÿÿH‹D$‹5µH‰l$0HèH‰D$8…ö„¼ýÿÿHƒìÿt$L‹L$HL‹D$@é$ÿÿÿHÇD$HHÇD$XHÇD$@HÇD$8HÇD$0HÇD$(HÇD$f�H‹\$PH‰ßèã¢üÿH‹t$H1ÒL‰çI‰Åèa¬üÿL‰âH‰ÞL‰ïè«üÿH‹-L‰èH+D$ H‰$H…í„ÆH‹]PA¶EA¶M E¶}E¶uˆD$A¶EˆD$A¶E ˆD$ A¶E!ˆD$HA¶E"ˆD$PA¶E#ˆD$`A¶EˆD$iA¶EˆD$jA¶EˆD$kA¶EˆD$lA¶E ÁàÈA¶MÁáÈA¶MÁáD�$L$$H…ÛuéÜ@H‹H…Û„ÌH�{L‰æèð£üÿ…Àuä‹>…À…ÜA½é¬÷ÿÿA€}…9üÿÿH‹D$‹ H‰l$@HèH‰D$X…É„üÿÿHƒìÿt$L‹L$hL‹D$Pé�ýÿÿ¶T$8¶L$0M‰ðH‹\$ H‹|$PÁâL‹t$(ʶL$@H‰ÞHþÁáÊ‹L$HÁáÊH‰Á‰ÒH)ÙHÚH9ðHCÏL)ÂH‰T$HH‰L$Pé<ûÿÿ¶D$jH‹ $AÁæH‰ï¶T$i¶t$ÁàD¶l$жT$kÁæAÁåDþÁâDîЋT$lAöL‰öL‰t$ÁâD�,¶D$H¶T$ ÁàжT$PÁâЋT$`Áâ�H˶C¶ÁàжSÁâжSÁâ‰ÒHÊL‰áèý¥‰D$…À‰M…ö„šþÿÿH‹$E1öL�= uJ�,(é¿�A»L9T$(†D‰\$ HƒìE1ÉE1ÀL‰T$H�D$|D‰ñL‰âPH‹=ˆL‰îè`óÿÿAYAZD‹\$tL‹T$E…ÛD‹\$ uD‰X$D‹UE…Àt?E…ÛH� HM‰ÑM‰èH�#IH�5ú>¿HEÁHƒìL‰áH�sÃP1Àèˤüÿ^_IƒÆHƒÃHƒÅL9t$„Äýÿÿ¶C¶L‰þÁàжSÁâжSÁâD�,L,$ºL‰ïè^›üÿ…Àt±¶E¶UÁàжUÁâжUÇD$tÁâD�L9T$†ÖþÿÿL9T$0wA»L9T$8‡ÏþÿÿL9T$@–ÀE1ÛL;T$XA’ÃA!Ãé³þÿÿL‰â¿1ÀA½H�5&Gèö£üÿéºôÿÿ¿x1ÛèÕžüÿH�xH‰ÁH‰ÆHÇHƒçøHÇ@pH‰èH‰õH)ùƒÁxÁéóH«ÇFÿÿÿÿHÇFÿÿÿÿHÇF ÿÿÿÿHÇF(ÿÿÿÿHÇFhÿÿÿÿH‰5ØéÐûÿÿH‹$I‰ßJ�,(E1íHƒ|$uOézüÿÿ„L;t$(ƒ¡L‰áH‰Úèº�‹ ŒÇ@$…É…üIƒÅIƒÇHƒÅL9l$„0üÿÿ¶E¶UE‰èH‹=\ÁàжUÁâжUÁâD�4A¶GA¶ÁàÐA¶WÁâÐA¶WÁâÂH‹$‰ÒH�‹D$B�4(L;t$ƒTÿÿÿL;t$0r L;t$8‚MÿÿÿL;t$@r L;t$X‚;ÿÿÿH‰ÚL‰áèõŽ‹ÇÇ@$…Ò„;ÿÿÿH�›FHƒìM‰ñI‰ØL‰áPH�ôÀH�5]<1À¿èA¢üÿ[A^éÿÿÿH�CEëÇè{›üÿff.„AWI‰ÿH‰÷AVE‰ÆAUI‰ÍATI‰ôUSH‰ÓHƒì(L‰L$dH‹%(H‰D$1ÀH…ÒH�/GÇD$HDØè›üÿH‰ßH‰Åè›üÿH�|諜üÿI‰ÙM‰à¾H‰ÅH‰Ç1ÀHÇÂÿÿÿÿH� òµè¦üÿHƒìH‰êM‰øH�D$H‹=�D‰ñL‰îPL‹L$èžïÿÿH‰ï覗üÿXZH‹D$dH+%(uHƒÄ([]A\A]A^A_Ãè�šüÿAWAVAUL�-¿ATE1äUSH�ìˆdH‹%(H‰„$x1ÀL�t$pH�„$°ÇÇþÿÿÿH‰ÃM‰òH‰ÅÆ„$°ÇD$HÇ$ÈL‰t$H‰D$G¾t%Aƒþ®„.D‹=ÏAƒÿþ„�E…ÿŽVA�ÿŽ/AƒÆ¸A�þ•‡ñIcÖH�  Q9Á…ÛH�œºL¿$PD‰à÷ØE…ä~5‹D$H‰ÙÇ\þÿÿÿƒøƒÐÿIƒÂ‰D$H‹?I‰é®€LcøH�=.¹ºƒèJ¾ ?)ÊI‰ÌHcÒM‹4Òƒø_wH�eµHc‚HÐ>ÿàM‹2@J�åL‰ÐH‰ÙH)ÐL)áH�¸L‰pL�PH�N¸¶1B¾8ƒè#H˜¿Bò�ú•wHcÒH�= »¿ÿàƒ<Ç‹ …À„MÿÿÿL‹T$ H‹\$(‰D$0ÇìD‹|$0ëpDH‹=¹èü•üÿ‰ÃéAÿÿÿDH‹5ÙƒöH�.¯H� ­¯‹ÆH�=­¯L‰T$H…öHDð1ÀèÔþÿL‹T$éIüÿÿA‰ßL‹T$ H‹\$(D‰=¦éÜùÿÿ�H‹IA‰ßL‹T$ H‹\$(H…À„œ H;suH�H¾8H‰ ƒÿ tHƒÿ=uMÇXA¿éÍýÿÿDÇéAýÿÿf„H‹=Ñè•üÿéVýÿÿÇÙH‹¾H…À„ÊÇû=HƒèH‰ ékýÿÿH¸ÿÿÿÿL!ðHƒÈI‰ÆéÚùÿÿH¸ÿÿÿÿL!ðHƒÈI‰ÆéÁùÿÿH¸ÿÿÿÿA‹L!ðH ÐI‰Æé¦ùÿÿL�5©=éšùÿÿH¸ÿÿÿÿL!ðHƒÈI‰Æé�ùÿÿH¸ÿÿÿÿL!ðHƒÈI‰ÆéhùÿÿM‹BðL‰T$ L‰ÇL‰D$0èj’üÿL‹T$ I‰ÆM‹ L‰T$(L‰ÏL‰L$ èM’üÿI�|èó“üÿL‹L$ H‹ïH� H­L�pL‹D$0¾H‰L‰÷HÇÂÿÿÿÿH‰Æ1Àè7�üÿL‹T$(éåøÿÿM‹2L‰T$(L‰÷èí‘üÿH�x蔓üÿH‹•H�xH‰H‰‡M‰ð¾1ÀH‰|$ H� ì¸HÇÂÿÿÿÿèÝœüÿL‹t$ L‹T$(醸ÿÿHºÿÿÿÿA‹BðA L!òH ÂI‰ÖégøÿÿE1öé_øÿÿ¸ÿÿÿÿI ÆéRøÿÿI‹JøI‹RèA¸ÿÿÿÿ1ÿI‹rØM‹ L‰T$ èéõÿÿL‹T$ é'øÿÿI‹rèI‹zØ1É1ÒM‹ E‹BøL‰T$ èÂõÿÿL‹T$ éøÿÿA‹2H�=Q<L‰T$ èÔ¥ÿÿL‹T$ éâ÷ÿÿA‹2H�=3¬L‰T$ è¶¥ÿÿL‹T$ éÄ÷ÿÿH‹¥ A‹A‹Jø‰P,‰H(é«÷ÿÿH‹Œ A‹A‹Jø‰P$‰H é’÷ÿÿI‹zøA‹2L‰T$ èi¥ÿÿL‹T$ éw÷ÿÿI‹JøI‹rèA¸ÿÿÿÿ1ÒM‹ 1ÿL‰T$ èõÿÿL‹T$ éN÷ÿÿI‹I‹zø1ö¶„Àt2ƒèR<&wH� t®¶ÀHc�HÈ>ÿàƒÎ„¶BHƒÂ„ÀuÎL‰T$ èê¤ÿÿL‹T$ éøöÿÿL�5'«éìöÿÿL�5Œ«éàöÿÿL�5;éÔöÿÿL�5á:éÈöÿÿL�5`«é¼öÿÿL�5õ:é°öÿÿL�5A«é¤öÿÿL�5ð:é˜öÿÿI‹JøI‹rèA¸ÿÿÿÿ1ÒI‹zØM‹ L‰T$ è/ôÿÿL‹T$ émöÿÿI‹RèI‹rØ1ÉL‰T$ I‹zÈM‹ E‹BøèôÿÿL‹T$ éDöÿÿI‹zøI‹21ÒL‰T$ 艭ÿÿL‹T$ é'öÿÿH‹ M‹L‰T$8L‹HL‰ÇL‰D$(H‰D$ L‰L$0è�üÿL‹L$0L‹D$(L‹T$8�PM…É„† L‰ÏL‰T$@L‰D$0L‰L$(‰T$8èߎüÿ‹T$8H‹|$(ÂHcòè¬�üÿH‹|$ H‹t$0H‰GH‹‡ H‹x莗üÿL‹T$@éŒõÿÿI‹zøI‹2ºL‰T$ èάÿÿL‹T$ élõÿÿH‹M A‹:M‹BðH‹Pp‰|$ H…Ò„õ 1ÀH‰\$8L‰ÃH‰l$@I‰Ä‰ýL‰t$HI‰ÖˆL$0L‰T$(ëfDI‹M‰ôH…À„*I‰ÆI‹~H‰ÞèÊ‘üÿ…Àu A‹F)è„Ð…À~ÎL‹T$(¿H‰\$XH‹l$@H‹\$8L‰d$(L‹t$HL¾d$0L‰T$Pèƒ�üÿH‹|$XH‰D$0èÄ�üÿH‹T$0‹|$ Hƒ|$(L‹T$PH‰B‰z…þH‹l H‹HpH‰ H‰PpétôÿÿM‹¿L‰T$0L‰D$(è%�üÿH‹|$(H‰ÂH‹ H‰T$ H‰H‰ èR�üÿH‹T$ H‹|$(H‰Bè?�üÿH‹T$ L‹T$0‰BéôÿÿH‹ö A‹A‹Jð‰Pl‰HhéüóÿÿH‹Ý A‹Ç@l‰PhéãóÿÿI‹:1Ò1öL‰T$ èZ•üÿL‹T$ HºÿÿÿÿL!ò‰ÀH ÂI‰Öé³óÿÿL�58é§óÿÿL�5¨é›óÿÿL�5Ý7é�óÿÿL�5ã§éƒóÿÿL�5BéwóÿÿL�5¨ékóÿÿL�5ë§é_óÿÿL�5×§éSóÿÿL�5m7éGóÿÿL�5µ§é;óÿÿL�5�§é/óÿÿL�5Bé#óÿÿIÇÆÿÿÿÿéóÿÿL�5*7é óÿÿM‹BèL‰T$ L‰ÇL‰D$@è ŒüÿL‹T$ H‰D$8M‹JøL‰ÏL‰L$0èò‹üÿL‹T$ I‰ÆI‹L‰T$(H‰×H‰T$ èÕ‹üÿH‹L$8H‰ÇJ�D1HÇèp�üÿHƒì¾H‹ hH‹T$(L�pH‰XH‰L‰÷H� 4§1ÀRL‹L$@HÇÂÿÿÿÿL‹D$P誖üÿZYL‹T$(éVòÿÿM‹2L‰T$(L‰÷è^‹üÿH�xè�üÿH‰Çé~ùÿÿI‹JøI‹RèA¸ÿÿÿÿL‰T$ I‹rØI‹zÈM‹ èÊïÿÿL‹T$ éòÿÿH¸ÿÿÿÿI!ÆéöñÿÿI‹:1Ò1öL‰T$ èMŽüÿL‹T$ I‰ÆéØñÿÿI‹RØM‹ÇD$lE‹ZðA‹JàI‹rÐH…ÒuH…öHEÖH‹=’L�L$lL‰T$(D‰\$ è>Ûÿÿ‹t$lL‹T$(…ö……ñÿÿD‹\$ AöÃtÆ@"AöÃtÆ@!AöÃtÆ@#Aƒã„XñÿÿÆ@ éOñÿÿL�5ù¥éCñÿÿH‹5ÜL‰T$ è �üÿL‹T$ Ç=é–ôÿÿƒÎéþùÿÿƒÎéöùÿÿƒÎéîùÿÿH‹=Ÿèâ‹üÿélóÿÿH‹5Æ‹ÈH�¥H� ·¥H�=¡¥I‰ïA¼H…öHDð1ÀèÄûýÿé¸òÿÿA¼é´òÿÿÇ^ÇPL‰T$ éŽóÿÿfD‰|$8A‰ßH‹\$(Ç.A¾ÿè%ŸÿÿH‹L‹T$ H…À„ÞH;部H�HD¾H‰ äAƒø „ÌA¶ÀAƒÿ@„×Aƒøÿ„„L‰T$ L�=_¤H‰\$(D‰ÃfD¶ÃH�=®ÉöGŒu‰ÞL‰ÿè~‰üÿH…À„J¾ûè�žÿÿH‹vH…À„ÃH;VsH�P¾H‰Vƒû „”ƒûÿu L‹T$ H‹\$(fƒ|$8L‹=9„ãH�ĽD‰t$ H�=¦£D‹t$0L‰T$(H‰\$0H‰Óë@H‹;HƒÃAƒÆH…ÿ„•L‰þèŒüÿ…ÀuàIcÆL‹T$(D‹t$ H� \½HÁàH‹\$0D‹|é\ôÿÿÇÃéÿÿÿH‹=›èÞ‰üÿ‰ÃéAÿÿÿH‹=ˆL‰T$ èÆ‰üÿL‹T$ ‰Çé^ôÿÿH‹=kL‰T$ 詉üÿL‹T$ é’ñÿÿL‹T$ D‰øA‰ßH‹\$(ÇUD‰úM‰çI‰ìH‰ÝL‰Óëƒúÿ„‹¶ÂH�=1È·GöÄuƒúxuM¾úè�ÿÿH‹H…À„‘H;äƒNH�PH‰ã¾ƒú u§Çåf÷ìÇu³H‹¿I‰ÚH‰ëL‰åM‰üA‰×H…À„)HƒèH‰œH‹=�L‰T$ A¿èUŠÿÿL‹T$ ÇÆH‰·é:ñÿÿH‹=[螈üÿ‰ÂéwÿÿÿD‹t$ L‹T$(H‹\$0L‰T$ L‰ÿéæðÿÿH‹4A‰ØL‹T$ H‹\$(H…À„‚HƒèH‰éÐýÿÿÇAƒÿ@…8ýÿÿ¸ H�=þÆ·G¨…‚¨„ýÿÿH‹ÓH…À„—HƒèA¿@Ç@H‰¯ézðÿÿf.„I‰ÚH‰ëL‰åM‰üéóþÿÿL‹T$(I‰Ø¿L‰t$(H‹\$8H‹l$@L‰D$8L¾d$0L‹t$HL‰T$@èy‡üÿH‹|$8H‰D$0躇üÿH‹T$0L‹T$@H‰B‹D$ ‰BH‹|$(H‹H‰H‰ézìÿÿH‹=L‰T$ èQ‡üÿL‹T$ A‰Àé üÿÿHcúL‰T$0L‰D$(è‡üÿH‹|$ H‹t$(H‰GH‹H‹xèƒüÿL‹T$0é"ìÿÿL¾d$0L‹T$(H‹\$8H‹l$@L‹t$HéìÿÿDZé;ïÿÿH‹5�D‰ÇL‰T$ 踊üÿL‹T$ é@üÿÿH‹5oD‰ÿL‰T$ 蚊üÿL‹T$ éÄýÿÿǦ@A¿@éïÿÿAƒÿ@…üÿÿ¸ÿAƒÈÿé>þÿÿH‹5$D‰ÇL‰T$ A¿@èIŠüÿL‹T$ ÇZ@éÕîÿÿ耄üÿ¿L‰T$8L‰D$0è †üÿH‹|$0H‰D$(èM†üÿH‹T$(L‹T$8H‰B‹D$ ‰Bé�öÿÿóúAWI‰÷AVAUATL�%ºÄUSHcÚHóHƒì(H‹×H‰=ÐH‰D$H9Þƒºf�A¶H‰ÐAöT@u„Ò”Â< ”ÀÂt IƒÇL9ûwÛI9ß„ŠM�wL9ó†»A¶ë€„Àt#IƒÆL9ó„¶ÐA¶AöT@t<-t< uÙL‰ðL)øH‰D$H�-/¸¸L�-9Ÿë �L‰ïèXƒüÿHcÐH;T$.L‰îL‰ÿH‰T$èÞ€üÿ…ÀuH‹T$A¶<:tl< th„L‹mHƒÅM…íu³L9ó†ªA¶.Aƺ1ÿH�5´œè¿‚üÿL‰þH‰Ç1ÀèÒôýÿAˆ.HÇdÿ@M‰÷éØþÿÿ„I�DL‰54ÿH‰=ÿ‹EÇDÿ‰Bÿèèÿÿ…À…mÿÿÿHÇÿL9ów­ëCH‰ØL)øH‰D$éòþÿÿ„ºH�5<œ1ÿè‚üÿH‰Ç1Àè3ôýÿHÇÈþH‹D$H‹äþH‰õþH…ÛtH‰ßH‹H‰ËþèüÿH…ÛuéHƒÄ([]A\A]A^A_ÃHÇD$évþÿÿff.„�óúAWAVAUATUSH�ìˆdH‹%(H‰D$x1ÀèFßýÿD‹-·üE…í…>H‹=—üH…ÿ„H‹-ïH…íuéöDH‹­øH…í„áH‹Eƒxuæè¡çþÿ…À„¦º+AH�5Ì*H‰ïè5€üÿH…À„×"H‹-¥îH� nlÿÿH‹•H‰ŠÀH‹ üH‰‚ÐH‰ŠÈHÇ@@5H‹Eƒx„›DºH�5¼1ÿè­€üÿH‰îH‰Ç1ÀèÀòýÿH‹-9îH‹…‹èÛ¹2H�5ú‹†ÛH�¸ÐóH¥‹ ŽÛ‰�`‹’û �¸÷ÙÒ‰�¬…Ûˆ§H‰ïèN_H‹×íH‰D$0H‹@H‹8è6XH‹_þH…À„:H‹@`H‹=ƒíL�%&+H�5í+ÇsüL‰âH‰D$@èf†üÿHc=_üHÁçè¶�üÿH‹=GíL‰âH�5uLH‰6üÇ4üè/†üÿHc5(üºH‹=üH� ÕHè0~üÿH‹ÉýH‹HPH‰L$H…É„…€‹PX…ÒŽÀH‹D$@H‹L$1íHƒÀëƒÅHƒÀ(9Õ„œH9uìH‹D$H�xH‰=¼ûèW�üÿ¶H‰¥ûH‰ÇH‰Á„ÒtH�Ù¿öPŒuÆ_¶QHƒÁ„ÒuäH‹-ý;hX�:H‹L$@HcÅÇD$ ‰l$H�€L�<Á„H‹D$I9G…ãI‹?¶èÖ~üÿH�xè}€üÿI‰Ä€û@„©M‹/¾@L‰ïè1üÿ¾L‰çM‰éH‰ÃH‹Ô÷L�‡)H� p2HÇÂÿÿÿÿD‹PH� ¥E…ÒLEÀ1À螉üÿH‹=¯ë1É1ÒE1ÀL‰æè8�üÿH…Àt €x„‰H‹z÷L� -)L�H¤HÇÂÿÿÿÿH� ®'¾‹xH�¨¤…ÿL‰çLEÈHƒìAÿ71Àè0‰üÿH‹=AëAX1ÉE1À1ÒAYL‰æèÆ€üÿH…À„í¶@1É<”Á‰L$H…Û…1<„)H‹îöM‹L�ž(H� ‡1HÇÂÿÿÿÿL‰ç‹pH�"¤…ö¾LEÀ1À诈üÿL‰çèw}üÿH�xèüÿL‰æH‰ÅH‰Çè0{üÿ1ÿ€}@¾@@”ÇHïèÉ}üÿH‰D$8H…ÀtÆ@H‹|ùLc-}ùL‰d$(E1öI‰ìH‰$L‰íL9õv6J�\5L‰çHÑëI‰ÝIÁåL,$I‹u褀üÿ…Àˆ „¦L�sL9õwÊL‰åL‹d$(¶EH�5Hèauüÿ…À¸DèE¾�M‹vM…öu×A¾a…í„H‹$H‹8è}qüÿH�xè$süÿE‰ñ¾H� &H‰ÅI‹D$(HÇÂÿÿÿÿA¾H‰ïL‹1Àès|üÿI‹|$(H‰îè&oüÿH‰ïI‰D$è)nüÿIƒ|$…ÆüÿÿI‹t$(H�=¾1Àèúâýÿé®üÿÿDH‹iÞH‹CH‰\$H‹8èÈHH‰ßèÀOHƒ=èî„~H‹KÞL�%`H…Ûtb€L‰æH‰ßèýrüÿH‰ÅH…ÀtV·Çè‰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ÏT$àAóH9\$ð‡ùÿÿE‰úH‹D$ø‹\$艋\$àD‰XD‰P‰X []A\A]A^A_Ã�AWAVAUATI‰üH÷USH‰ÓH�ìÈH‰T$`dH‹%(H‰„$¸1À‹H‰|$X‰D$0‹B‰D$‹B‰D$‹B ‰D$‹B‰D$4‰ðB‰BH‰òHÁê H9ðH�D$pSH‰D$hI9üƒÉL‰d$Pf.„L‹d$PH‹L$h1À@A‹ʉHƒÀHƒø@uíL‰à‹\$0D‹T$pHƒÀ@‹t$D‹t$H‰D$P‹D$4‰ÚA‰ØÁ‰ñD‹L$tAÁÈA�„™y‚ZD1ñD‹\$xD‹¬$€ЋT$!щ×C�”1™y‚ZD1ñÁÏD‹´$„Á‰ð1øA‰Ï!ØAÁÇ‹\$|1ðA�´3™y‚ZÐD‰úA‰ÿE1ÇÂD‰øA‰×!ÈAÁÇ1øÁÉ�¼;™y‚ZÆD‰øE‰ÇA1ÏðD‰þA‰Ç!ÖAÁÇD1ÆÁÊG�„™y‚ZþD‰ÿA‰ÏA1×÷D‰þA‰ÿ!Æ1ÎA�Œ™y‚ZAðAÁÇÁÈD‰þA‰×A1ÇDÆE‰øA‰ÇA!øÁÏA1ÐA1ÿAȉñÁÁDÁE‰øD‹¼$ˆA!ðÁÎA�”™y‚ZA‰ÏA1ÀAÁÇAÐD‰úA‰ÿA1÷DÂE‰øD‹¼$ŒA!ÈÁÉA�„™y‚ZA‰×A1øAÁÇAÀD‰øA‰÷A1ÏDÀE‰øD‹¼$�A!ÐÁÊA�¼?™y‚ZA‰ÇA1ðAÁÇAøD‰ÿA‰ÏDÇA1×E‰øD‹¼$”A!ÀÁÈA�´7™y‚ZA‰ÿA1ÈAÁÇAðD‰þA‰×A1ÇDÆE‰øD‹¼$˜A!øÁÏA1ÐA�Œ™y‚ZA‰ÇAȉñA1ÿÁÁDÁE‰øD‹¼$œA!ðÁÎA�”™y‚ZA‰ÏA1ÀAÁÇAÐD‰úA‰ÿA1÷DÂE‰øD‹¼$ A!ÈÁÉA�„™y‚ZA‰×A1øAÁÇAÀD‰øA‰÷A1ÏDÀE‰øD‹¼$¤A!ÐA1ðA�¼?™y‚ZA‰ÇAøAÁÇE1ÚA1ÙÁÊD‰ÿA‰ÏD3”$�A1×DÇD3”$¤D3Œ$”E‰øD‹¼$¨E‰ÔD3Œ$¨AÑÄA!ÀÁÈA�´7™y‚ZA‰ÿA1ÈA‰ÂAÁÇAðAÑÁD‰þA‰×A1ÇDÆE‰øD‹¼$¬A!øÁÏA1ÐA�Œ™y‚ZA1úAȉñA�”™y‚ZÁÁDÁE‰ÐA!ðA‰ÊÁÎA1ÀAÁÂA�„™y‚ZAÐD‰ÒA‰úDÂA1òE1ëD3¬$ˆE‰ÐA‰ÒA!ÈAÁÂA1øÁÉAÀD‰ÐA‰ÚDÀD‹„$˜E1ò‰ÅE1ØA‰óÁÅE1øA1ËAÑÀA!ÓÁÊA1óA�¼8™y‚ZDßA‰Ëý‹¼$œA1ÓA!ÃÁÈD1×A1ËA‰ÒD1çÑÇ�´7™y‚ZDÞA‰ëAÁÃAó‹´$ E‰ßD1îD1ÎÑÆA1ÂAÁÇD‰Ó�Œ¡ëÙnA‰Â1ëÁÍÙA1êA‰íAÏ‹Œ$ŒD‰ÓE‰úD1ÛAÁËD1ñ3Œ$¤AÁÂE1ÝD1ÁE1ýAÁÏÑÁ�”¡ëÙnÚD‰ÓD‹”$ˆD3”$�Ó‹”$¨D‰d$(D1ÒA‰Ú1úAÁÂÑÂE‰ÖD‹”$ŒD3”$”�„¡ëÙn‰T$ DèE‰ÝAÆ‹„$¬E1ýD1ÐE‰ú1ðÑÀA1ÝÁË�¬(¡ëÙnA1ÚDíE‰õAÁÅA틬$�3¬$˜D1å1ÍÑʼnêD‰ÕD1õF�œ¡ëÙnAÁΉT$,AëD‰íÁÅDÝD‹œ$”D3œ$œE1ËD3\$ AÑÃE‰ÜA‰ÛE1óG�¼<¡ëÙnE1ëAÁÍEûA‰ïAÁÇEßD‹œ$˜D3œ$ E1ÃA1ÃAÑÃE‰ÚE‰óE1ëA�œ¡ëÙnD‰T$D‹”$œA1ëDÛE‰ûAÁÃD3”$¤ÁÍAÛD‰Ó1û1ÓD‰ÚÑÃÁÂA‰ÚD‰ë1ëG�´2¡ëÙnD‰T$8D1ûAÁÏDóA‰Ö‰êAÞ‹œ$ D1ú3œ$¨1óD1ãÑÉ\$ ‰Ó‹T$ D1ÛAÁËF�¬*¡ëÙnDëE‰õAÁÅAÝ‹œ$¤3œ$¬1Ë3\$‰ÚD‰ûÑÂD1Û�¬*¡ëÙnD1óëD‰íÁÅÝAÁ΋\$(3œ$¨3\$ D1ÓÑÃA‰ÚD‰ÛD1óG�¼:¡ëÙnD‰T$$D1ëAÁÍA߉ëÁÃDûD‹¼$¬E1ÏA1ùA1ÇD3|$ ‰T$HAÑÇE‰úE‰÷D‰T$ÖÁbÊD‰´$˜DÿE‰ÇAÁÇDÿE‰çD‹d$E1çE1ïE‰ÕA1ßA1íAÑÇD‰ëA‰ýD1ÃG�œÖÁbÊAÁÅD‰¼$œAÛ‹\$,AÁÈEëD‹l$ D1ë1óD1ËA‰éÑÃE1ÁA1ùB�´ÖÁbÊD‹T$8ÁÏDÎE‰Ù‰œ$ AÁÁDÎE‰áE1ÑA1ÉD‰ÁE1ñ1ùAÑÁD1ÙAÁËD‰Œ$¤E�Œ)ÖÁbÊDÉA‰ñAÁÁDÉD‹L$H‰ïHÑëH�›I�ÄH‹pH…öHD0è 1üÿ…ÀxutXL�{M9þwÏ‹……À„¼‹:¥…Ò…TM…í„ÅH�¾lë@HƒÃHƒ;„ªH‰ÞL‰ïèßôÿÿ…ÀuãHƒÄ1À[]A\A]A^A_Ãf.„I‰ÞéXÿÿÿH‰ïL�=îjèÉ,üÿH�5,Lcà¸L‰ãë DIcG9Ã|L‰ç�PH)ÇHcÒHïè4*üÿ…Àt•I‹wIƒÇH…öuÓH‹ɧL�%ßSH…Ûu&ë`H‹3ƒøtpH‰ïè0üÿ…À„UÿÿÿH‹[H…Ût<‹Cƒøu×M…ítêH‹3L‰ïè/+üÿ…À„,ÿÿÿH‹3L‰çèl)üÿ…À„ÿÿÿH‹[H…ÛuÄHƒÄ¸[]A\A]A^A_ÀH‹D$H‹8èã*üÿ…Àu�éßþÿÿH‹D$H‰ê¿H�5fWL‹€ØH‰Á1Àèu2üÿM…í…‡þÿÿH‹D$H�€jH‹8è¨.üÿH�5ÎUI‰Äë@H‹sHƒÃH…öt#L‰çè#/üÿ…Àuçéoþÿÿf.„Hƒ|$u¬H‹‰¡H‹X H‹3H…öuë!H‹sHƒÃH…ötH‰ïèÛ.üÿ…Àuçé'þÿÿºH�viH�5÷PëDH‹sHƒÃH…ö„þÿÿHcSH‰ïè‹(üÿ…Àußéçýÿÿf�óúATI‰ôUH‰ýHƒì¶„ÀtRH‰ùL�^kH¿!@�pÞ@€þ:wH£÷r¶ðAöp@u<;@”Æ<,”À@Ætº¶AHƒÁ„ÀuÆL‰æ…Òto¿"è%.üÿ¶E„ÀuEHƒÄL‰æ¿"]A\é .üÿf„L‰æ¿\èó-üÿ¾}L‰æHƒÅèà-üÿ¶E„Àt»<"tÔ<\uàL‰æ¿\èÃ-üÿëÑ�HƒÄH‰ï]A\é+üÿ�óúAVHc«¨A‰ÖAUI‰õ‹5¡¨ATI‰üH‹=‰¨�VÿUHcéS9Â+ƒÆ ‰5€¨HcöHÁæH…ÿtxèƒ*üÿH‰\¨H‰ÇHcZ¨HÁàD‰öH�L‰çL‰kHÇCèÓ)üÿH‹ ”ŸH‰CHc)¨H� éH‰ÂHÁàH¨ƒÂH‰[‰ ¨]A\A]A^Ãf.„H‰÷èØ*üÿH‰á§H‰ÇHcß§ëƒDóúH‹ŧSH‰ûH‰‡€‹¼§‰‡��xHcÿHÁçè�*üÿHc5 §H‰ƒˆ…ö~ 1ÒH‰ÑHÁáH‹€H‰ ÐHƒÂH9òuåHÇðHÇZ§ƒK([ÇW§ÇI§Ãóú‹5B€…öxJHƒìH‹GH‹€pÿPx…Àt HƒÄÀ1ÿºH�5Tè (üÿHƒÄH‰Ç1Àéšýÿ€Ã€óúATI‰üUSHƒìH‹=J‰dH‹%(H‰D$1ÀH…ÿ„ÑH�2‰1íë)fDH‹;L‰æè…+üÿ…Àt H‹{ HƒÃ(ƒÅH…ÿ„�L‰æèe+üÿ…ÀuÑ‹£‚‰D$ƒøÿtJ…ÀHcíH�Öˆ•ÀH�L­¶ÀH�ʉBH‰µ ‰o‚H‹D$dH+%(uqHƒÄ[]A\ÃfDH�L$E1À1Ò1öL‰çèd1üÿ‹D$ƒøÿu™H�„“¾¹H�=þLèS‡ýÿºH�5ŒR1ÿèÝ&üÿL‰æH‰Ç1Àèð˜ýÿ¿èF0üÿè'üÿ�óúAVAUL�-Ü×ATA‰ôUSèÕ(üÿL‰îH‰ÇI‰ÆèÇ.üÿH…Àt^H‰Å€¿è^(üÿH‰ïH‰Ãè£&üÿH�xèJ(üÿH‰îH‰H‰Çè\$üÿD‰cL‰î1ÿH‹¼¢H‰µ¢H‰Cèl.üÿH‰ÅH…Àu¬[L‰÷]A\A]A^éT#üÿ@óúAWAVAUE1íATUH‰ÕSH‰óHƒìH‰|$H…ÿtL‹¯ØM…ít I‹}è&)üÿI‰ÅLcs@L‹cHE1ÿ„M9þv1K�>H‰ïHÑëH�›I�ÄH‹pH…öHD0è‰)üÿ…ÀxutXL�{M9þwÏ‹¤€…À„¼‹¾ …Ò…TM…í„ÅH�¾bë@HƒÃHƒ;„ªH‰ÞL‰ïè_íÿÿ…ÀuãHƒÄ1À[]A\A]A^A_Ãf.„I‰ÞéXÿÿÿH‰ïL�=î`èI%üÿH�5¬ûLcà¸L‰ãë DIcG9Ã|L‰ç�PH)ÇHcÒHïè´"üÿ…Àt•I‹wIƒÇH…öuÓH‹9¡L�%_LH…Ûu&ë`H‹3ƒøtpH‰ïèˆ(üÿ…À„UÿÿÿH‹[H…Ût<‹Cƒøu×M…ítêH‹3L‰ïè¯#üÿ…À„,ÿÿÿH‹3L‰çèì!üÿ…À„ÿÿÿH‹[H…ÛuÄHƒÄ¸[]A\A]A^A_ÀH‹D$H‹8èc#üÿ…Àu�éßþÿÿH‹D$H‰ê¿H�5æOL‹€ØH‰Á1Àèõ*üÿM…í…‡þÿÿH‹D$H�€`H‹8è('üÿH�5NNI‰Äë@H‹sHƒÃH…öt#L‰çè£'üÿ…Àuçéoþÿÿf.„Hƒ|$u¬H‹ �H‹X H‹3H…öuë!H‹sHƒÃH…ötH‰ïè['üÿ…Àuçé'þÿÿºH�v_H�5wIëDH‹sHƒÃH…ö„þÿÿHcSH‰ïè !üÿ…Àußéçýÿÿf�óúAWE‰ÏAVI‰öAUI‰ÕATI‰ÌUH‰ýH‰÷SHƒìL‰D$è2#üÿL‰ïH‰$è&#üÿL‰çH‰Ãè#üÿH‹$H�|HÇèº$üÿL‰öH‰ÃH‰ÇèÌ üÿL‰îH‰ßèÑ+üÿL‰æH‰ßèÆ+üÿH‹EH‰ïÿ�HcT$PL‹D$H‰XH‰PHcð›L‰@ �JD‰x‰ ß›H‹ ЛH‰ÑHƒÄ[]A\A]A^A_ÃDóúAVHc;¡A‰ÖAUI‰õ‹51¡ATI‰üH‹=¡�VÿUHcéS9Â+ƒÆ ‰5¡HcöHÁæH…ÿtxè##üÿH‰ì H‰ÇHcê HÁàD‰öH�L‰çL‰kHÇCès"üÿH‹ 4›H‰CHc¹ H� éH‰ÂHÁàHŸ ƒÂH‰[‰š ]A\A]A^Ãf.„H‰÷èx#üÿH‰q H‰ÇHco ëƒDóúH‹U SH‰ûH‰‡€‹L ‰‡��xHcÿHÁçè/#üÿHc50 H‰ƒˆ…ö~ 1ÒH‰ÑHÁáH‹€H‰ ÐHƒÂH9òuåHÇðHÇꟃK([ÇçŸÇÙŸÃóú‹5ò{…öxJHƒìH‹GH‹€pÿPx…Àt HƒÄÀ1ÿºH�5ºLè­ üÿHƒÄH‰Ç1Àé¿’ýÿ€Ã€óúH�ì¨1ÿdH‹%(H‰„$˜1ÀH‰æèh(üÿHi$@BHD$HiT$@BHÐHD$H‹”$˜dH+%(uH�ĨÃèj üÿf.„óú€gPþH‰O8L‰G@é çÿÿff.„óú€OPH‰O8L‰G@L‰OHéçæÿÿ€óúAV1ÒAUATUSH‹oH‰ûH+oL‹oHîH‹’ÂHw0’ÁH…Ò…�+üÿ¶ÉH…É…u+üÿH‰êHÁêH9ðHBÆH�TdH9ÂHCÂI‰ÄH‹G8öGPuL‰çÿÐI‰ÆM…ö„=+üÿH‹C0K�&H‹sL‰sM‰nM�dH‰S H÷ÐI‰I!ÄH‰êL‰çèÕ#üÿ¶KPöÁuH‹C0I�TH÷ÐH!ÐH9Ct7L‰cIìL‰c€cPý[]A\A]A^ÀH‹HL‰æÿÐI‰Æéxÿÿÿ€I‹EƒáI‰FH‹C@tH‹{HL‰îÿÐë­@L‰ïÿÐë¢f„óúH‹GH…Àt)H9ÆvH90sH‹@H…Àuí1ÀÃf.„¸ÃÃf„óúATI‰ôUSH‹wH‰ûH…öuëB€H‹{HÿЀKPH…ít,H‰îL9æsH‹L9às1H‹nH‹C@öCPuÓH‰÷ÿЀKPH…íuÔM…ä…û)üÿ[]A\ÀL‰cL‰cH‰C H‰s[]A\Ãff.„óúH‹GE1ÀH…ÀtH‹H)ÂH‹@IÐH…ÀuîL‰ÀÃf.„óúAWAVAUATUSHƒì8H‹G‹H‰t$H‰D$ H…À„\I‰üH‰ÕfDH‹|$ èÞüÿ…À„MH‹D$ H‹�°H‹˜�H‰T$(H…Û„DöC*tH�ƒƒH9Cp„ÚL‹|$ H‰ÞH‰j–L‰ÿè'üÿHcøèêüÿH‹L$(H‰ÞL‰ÿH‰ÂH‰D$èò%üÿ…ÀŽ‘H‹L$ƒèH�DÁI‰ÎH‰D$ë>1É1ÒH‰ïèt!üÿH…ÀtI‹uL‰çè³üÿH‹L$I‹>L‰âH‰Þè°ûþÿIƒÆL9t$tI‹L‹(I‹uH…íu³L‰çè[ üÿ…Àu×H‹L$L‰âH‰ÞL‰ÿIƒÆèpûþÿL9t$uÄH‹|$èüÿH‹[H…Û…ÿÿÿH‹D$ H‹€øH‰D$ H…À…°þÿÿHƒÄ8[]A\A]A^A_ÃH�5ra1ÿºèüÿH‹t$ HƒÄ8[H‰Ç]1ÀA\A]A^A_é Žýÿf„óúATUH‰ýS‰Ó�Ë è¸üÿ‰ÞH‰ÇI‰Äè;&üÿH‹EM‰d$pH‰ïAÇD$xÿ�Hcù”�J‰ ð”H‹ á”H‰ÑI‹$L‰` H‰PÇ@HÇ@L‰à[]A\Ãf�óúAWAVAUL�-qÆATI‰ü¿USHƒìèüÿº¾D‹™”H� BAH‰ÅH‰Ç1Àèu&üÿL‰æH‰ïƒx”èãüÿI‰ÄH‹a”L‰æH‹xè=$üÿL‰çè¥üÿ¾L‰çè8üÿH‹9”1ÒL‰ç‹pI‹D$ÿ��¿0Ç”èŠüÿºH�5/ñL‰çH‰ì“è¯þÿÿºH�5«@L‰çH‰Åè˜þÿÿºH�5ÚðL‰çH‰Ãè�þÿÿL‰éI‰èL‰çI‰ÆH‹¶“H‹Ï–A¹‹pH�ÏÃ…öH�5ÅÃHDðHƒìjèïöÿÿH‹€“H�5Ò@H‹’–H� �ðA¹L�‹xÇ$…ÿL‰çIDõè®öÿÿAX¾AYH‰ïèmüÿ¿è£üÿfïÀH‰…¸I‰ÅD‹•Ç@E…ÒtÆ@ƹº>1öL‰çè$÷ÿÿ¹º>L‰ç¾ è ÷ÿÿ¹º>L‰ç¾èööÿÿH‰ïèÎ÷ÿÿ‹ °”…É„ð¾H‰ßèÓüÿ¿è üÿH‰ƒ¸Ç‹~”H‰D$…Ò„é¾L‰÷èœüÿL‹L$¿L‰L$èÈüÿL‰çI‰†¸I‰ÇÇ‹/’H‹5 ’è“üÿ1ÉA¸L‰êH‰îL‰çè-üÿ‹”L‹L$…Àt^A¸1ÉL‰ÊH‰ÞL‰çèüÿA¸L‰úL‰öL‰ç1ÉèòüÿL‰çèšüÿHƒÄL‰à[]A\A]A^A_Ä1öH‰ßèæüÿéÿÿÿ�E1À1ÉL‰ÊH‰ÞL‰çè­üÿE1À름1öL‰÷è¶üÿL‹L$éÿÿÿff.„�óúAWAVAUATI‰ü¿USHƒìèÁüÿº¾D‹@‘H� é=H‰ÅH‰Ç1Àè#üÿL‰æH‰ïƒ‘èŠüÿI‰ÄH‹‘L‰æH‹xèä üÿL‰çèLüÿL‰ç¾èßüÿH‹à�1ÒL‰ç‹pI‹D$ÿ��¿(Ƕ�è1üÿL‰çºH�5°íH‰“�èVûÿÿL‰çºH�5O=I‰Æè?ûÿÿL‰çºH�5A=I‰Åè(ûÿÿH�5Â=H‹‚“A¹H‰ÅH‹R�L‰çH� zíI‰è‹@…ÀH�óÁHDðHƒì1Ûjè�óÿÿZ¾YL‰÷èQüÿ¿è‡üÿ¾L‰ïI‰†¸ÇH‰D$è(üÿ¿è^üÿI‰…¸ÇH‹=ú’H‰$è‘üÿH‰ï¨”Ã�\HcÛH‰ÞèêüÿH‰ßè"üÿH‹5Ë’H‰…¸I‰ÇH‰Çè)üÿAÆDÿL‰ç‹z�H‹5k�èÞüÿH‹T$L‰öL‰çA¸1ÉèvüÿH‹$L‰îL‰çA¸1Éè_üÿI‰ØL‰úH‰îL‰ç1ÉèLüÿL‰çèôüÿHƒÄL‰à[]A\A]A^A_Ãf�óúAWAVAUI‰õATUSH‰ûHƒìX‰T$ …Ò„ÄH‹íŽ‹@ƒø„Y�Sƒø„2ƒø…¢ÇD$0 H�-¢�¿è(üÿº¾D‹§ŽH� P;I‰ÄH‰Ç1Àèƒ üÿL‰çL‰îƒ†ŽèñüÿI‰ÄH‹oŽL‰æH‹xèKüÿL‰çè³üÿ¾L‰çèFüÿH‹GŽ1ÒL‰ç‹pI‹D$ÿ��¿`ÇŽè˜üÿºH�5'/L‰çH‰ú�è½øÿÿºH�5Â:L‰çH‰D$è¤øÿÿºH�5 :L‰çH‰D$(è‹øÿÿºH�5ÍêL‰çI‰ÇètøÿÿºH�5‚:L‰çH‰D$è[øÿÿH‰D$ H‹C€8@H‹��„ÒD‹PH�5®½H�¨½H‹‘�L�-$¿A¹L�yL‰çE…ÒL‰éHDðHƒìjè­ðÿÿA[A^‹D$ …Àt;H‹2�H�5„:H‹SL‰éA¹‹x…ÿL‰çIDõHƒìjL‹D$ èjðÿÿAXAYH‹÷ŒH�ª¾H‹KL�5>:H�5º9A¹M‰øL‰ç‹R…ÒH‰ÂIEÖHƒìjè#ðÿÿ€{#Y^…'D‹ˆŽE…Ò…j‹|$ …ÿ…+H‹|$1öè¿üÿHÇD$@L‹t$(¾L‰÷è¤üÿ¿èÚüÿ¹1öL‰çI‰†¸º>ÇH‰D$8ètðÿÿL‰÷èLñÿÿ¾L‰ÿè_üÿ¿è•üÿI‰‡¸I‰ÆÇ€{"„ë·CAÆF€fA‰H‹l$¾H‰ïèüÿ¿èRüÿH‰…¸I‰ÅÇ€{"„8·CAÆE€fA‰E€{"…H‹{H…ÿ„óè^üÿH‹|$ ƒÀ‰D$4‹L$4‰ÈƒàƒøƒÙÿHcщL$4H‰ÖH‰T$HèŸüÿH‹|$HèÕüÿH‹T$H1öH‰ÅH‹D$ H‰ïH‰¨¸è‡üÿ‹C…Ày‹Cf‰EH‹sH�}H…ö„hè³üÿ‹ ‹H‹5þŠL‰çènüÿ‹D$ …À…*H‹T$8H‹t$(1ÉL‰çA¸èøüÿ1ÉA¸L‰òL‰þL‰çèâüÿH‹t$1ÉL‰êA¸L‰çèÊüÿ€{"„¸L‰çèhüÿHƒÄXL‰à[]A\A]A^A_ÃfDƒèƒø‡UÇD$0 H�-5}é®ûÿÿLct$0H‹|$L‰öèŽüÿL‰÷èÆüÿH‹L$H‰D$@H‰ÂH‰�¸‹D$0ƒøƒÍ¨…å‹t$0…ö…�H‹Š‹@ƒø„ �ƒø…HƒìL‰éL‰îL‰çjH�Ä6A¹L�¼vè7íÿÿZ¾Yº¹L‰çèîíÿÿH‹|$èÄîÿÿé)ýÿÿ€ÇD$0H�-‰|éÒúÿÿ@H‹�‰H�4»L‰çH‹KA¹H�5€æD‹ZE…ÛIEÆHƒìjL‹D$0H‰Âè°ìÿÿD‹!‹A^XE…Ò„–üÿÿHƒìH‹SM‰øL‰éjA¹H�5ó5L‰çèxìÿÿAXAYéhüÿÿ€ƒèƒøw%¹º¾L‰çèíÿÿé&ÿÿÿ@ƒøtÛH�Ì{¾W H�=^5è³oýÿ‹xH�5ݸH�׸H‹À‹L�-SºA¹L�Dt…ÿL‰éL‰çHDðHƒìjèÝëÿÿAXAYD‹T$ E…Ò…óHƒìH‹SM‰øL‰éjA¹H�5"5L‰çè¦ëÿÿXZéˆûÿÿ€ÇD$01íégùÿÿf„L‰ç¹º>1öè<ìÿÿL‰ÿèíÿÿéüÿÿ€LcD$4H‹t$ 1ÉH‰êL‰çèñüÿé,ýÿÿ@D‹D$0H‹T$@1ÉL‰çH‹t$èÏüÿé¸üÿÿf.„H‹|$ 1ö1íèÒüÿÇD$4érüÿÿDL‰ç¹º>1öè¬ëÿÿH‹|$è‚ìÿÿé³ûÿÿDH‹EH‹L$@H‰‹D$0H�qHƒæøH‹TøH‰ÇH‰TøH)ñH‰ÈH)Íøƒàøƒø‚ ýÿÿƒàø1҉уÂH‹| H‰<9ÂrîH‹‡‹@ƒø…ôüÿÿ1öL‰ç¹ºÅèëÿÿ1É1öL‰çºÆè ëÿÿ¹ºÆL‰ç¾èöêÿÿéýÿÿ�H‹3é�ûÿÿ„H‹;éûÿÿ„¶EH‹L$@ˆéoüÿÿÇD$0H�-Qyéº÷ÿÿ@HƒìH‹SL‰éL‰îjL‹D$ A¹L‰çèµéÿÿY^éãýÿÿfD‹EH‰Ñ‰‹D$0‹Tü‰TüéüÿÿH� y¾ H�=²2èmýÿ€óúAWHcöI‰ÏAVE‰ÆAUI‰ÕH�¶ATUH‰ýSHƒìH‹G`H‹_PL�$ÐH…Ûuëx„H‹H…ÛthH�{L‰þè,üÿ…ÀuèIÇD$ fïÀL‰ïA$AD$èXüÿI‰\$I‰D$I‰$L‰àE‰t$ IÇD$ƒEXHƒÄ[]A\A]A^A_ÃfDL‰ÿè üÿH�xè¿ üÿL‰þH‰ÃH‹EPH�{H‰H‰]PHÇCè½ üÿépÿÿÿ„óúAWAVAUATUSHƒì8H‹GyH‰t$H‰D$ H…À„\I‰üH‰ÕfDH‹|$ èÞ üÿ…À„MH‹D$ H‹�°H‹˜�H‰T$(H…Û„DöC*tH�ƒqH9Cp„ÚL‹|$ H‰ÞH‰j�L‰ÿèüÿHcøèê üÿH‹L$(H‰ÞL‰ÿH‰ÂH‰D$èòüÿ…ÀŽ‘H‹L$ƒèH�DÁI‰ÎH‰D$ë>1É1ÒH‰ïètüÿH…ÀtI‹uL‰çè³üÿH‹L$I‹>L‰âH‰Þè�bþÿIƒÆL9t$tI‹L‹(I‹uH…íu³L‰çè[üÿ…Àu×H‹L$L‰âH‰ÞL‰ÿIƒÆèPbþÿL9t$uÄH‹|$èüÿH‹[H…Û…ÿÿÿH‹D$ H‹€øH‰D$ H…À…°þÿÿHƒÄ8[]A\A]A^A_ÃH�5rO1ÿºè üÿH‹t$ HƒÄ8[H‰Ç]1ÀA\A]A^A_é |ýÿf„óúATUH‰ýS‰Ó�Ë è¸üÿ‰ÞH‰ÇI‰Äè;üÿH‹EM‰d$pH‰ïAÇD$xÿ�Hcù�J‰ ðH‹ áH‰ÑI‹$L‰` H‰PÇ@HÇ@L‰à[]A\Ãf�óúAWE‰ÏAVI‰öAUI‰ÕATI‰ÌUH‰ýH‰÷SHƒìL‰D$èb üÿL‰ïH‰$èV üÿL‰çH‰ÃèK üÿH‹$H�|HÇèê üÿL‰öH‰ÃH‰ÇèüüÿL‰îH‰ßèüÿL‰æH‰ßèöüÿH‹EH‰ïÿ�Hc2L‹D$H‰X�JL‰@ ‰ H‹ D‰xHÇ@H‰ÑHƒÄ[]A\A]A^A_ÃfDóúAWAVAUL�-¡³ATI‰ü¿USHƒìèJ üÿº¾D‹É~H� r.H‰ÅH‰Ç1Àè¥üÿL‰æH‰ïƒ¨~è üÿI‰ÄH‹‘~L‰æH‹xèmüÿL‰çèÕüÿ¾L‰çèh üÿH‹i~1ÒL‰ç‹pI‹D$ÿ��¿0Ç?~èº üÿºH�5_ÞL‰çH‰~èßýÿÿºH�5Û-L‰çH‰ÅèÈýÿÿºH�5 ÞL‰çH‰Ãè±ýÿÿL‰éI‰èL‰çI‰ÆH‹æ}H‹ƒA¹‹pH�ÿ°…öH�5õ°HDðèõýÿÿH‹¶}H�5.H‹Ø‚L�YlA¹H� ÆÝ‹x…ÿL‰çIDõè»ýÿÿ¾H‰ïè® üÿ¿èäüÿfïÀH‰…¸I‰ÅD‹LÇ@E…ÀtÆ@ƹº>1öL‰çèÝÿÿ¹º>L‰ç¾ èîÜÿÿ¹º>L‰ç¾è×ÜÿÿH‰ïè¯Ýÿÿ‹ é~…É„ñ¾H‰ßè üÿ¿èJüÿH‰ƒ¸HÇ‹¶~H‰D$…Ò„é¾L‰÷èÜ üÿL‹L$¿L‰L$èüÿL‰çI‰†¸I‰ÇHÇ‹n|H‹5_|èÒ üÿ1ÉA¸L‰êH‰îL‰çèlüÿ‹F~L‹L$…Àt]A¸1ÉL‰ÊH‰ÞL‰çèGüÿA¸L‰úL‰öL‰ç1Éè1üÿL‰çèÙüÿHƒÄL‰à[]A\A]A^A_À1öH‰ßè& üÿé ÿÿÿ�E1À1ÉL‰ÊH‰ÞL‰çèíüÿE1Àë§„1öL‰÷èö üÿL‹L$éÿÿÿff.„�óúAWAVAUATI‰ü¿USHƒìèüÿº¾D‹€{H� )+H‰ÅH‰Ç1Àè\üÿL‰æH‰ïƒ_{èÊüÿI‰ÄH‹H{L‰æH‹xè$üÿL‰çèŒüÿL‰ç¾è üÿH‹ {1ÒL‰ç‹pI‹D$ÿ��¿(ÇözèqüÿL‰çºH�5ðÚH‰Ózè–úÿÿL‰çºH�5�*I‰ÆèúÿÿL‰çºH�5�*I‰ÅèhúÿÿH�5+L‰çH‹ÏH‰ÅH‹•zA¹H� ºÚI‰è‹@…ÀH�3¯HDð1Ûè¦úÿÿ¾L‰÷è™ üÿ¿èÏüÿ¾L‰ïI‰†¸HÇH‰D$èo üÿ¿è¥üÿI‰…¸HÇH‹=PH‰$è×üÿH‰ï¨”Ã�\HcÛH‰Þè0 üÿH‰ßèhüÿH‹5!H‰…¸I‰ÇH‰ÇèoüÿAÆDÿL‰ç‹ÀyH‹5±yè$üÿH‹T$L‰öL‰çA¸1Éè¼üÿH‹$L‰îL‰çA¸1Éè¥üÿI‰ØL‰úH‰îL‰ç1Éè’üÿL‰çè:üÿHƒÄL‰à[]A\A]A^A_ÄóúAWAVAUI‰õATUSH‰ûHƒìX‰T$ …Ò„dH‹-y‹@ƒø„ù�;ƒø„úƒø…<ÇD$0 H�-Ro¿èhüÿº¾D‹çxH� �(I‰ÄH‰Ç1Àèà üÿL‰çL‰îƒÆxè1üÿI‰ÄH‹¯xL‰æH‹xè‹ üÿL‰çèóÿûÿ¾L‰çè†üÿH‹‡x1ÒL‰ç‹pI‹D$ÿ��¿`Ç]xèØüÿºH�5gL‰çH‰:xèý÷ÿÿºH�5(L‰çH‰D$èä÷ÿÿºH�5à'L‰çH‰D$(èË÷ÿÿºH�5 ØL‰çI‰Çè´÷ÿÿºH�5Â'L‰çH‰D$è›÷ÿÿH‰D$ H‹C€8@H‹Ðw„‚D‹PH�5îªH�èªH‹á|L�-d¬A¹L�UfL‰çE…ÒL‰éHDðèÃ÷ÿÿD‹\$ E…Ût3H‹SL‹D$L‰éL‰çH‹kwH�5½'D‹HE…ÉA¹IDõè†÷ÿÿH‹GwH�ú«H‹KL‰çL�5‹'A¹H�5'D‹BH‰ÂE…ÀM‰øIEÖèG÷ÿÿ€{#…‹5×x…ö…=‹L$ …É…3H‹|$1öèüÿHÇD$@L‹t$(¾L‰÷èüüÿ¿è2üÿ¹1öL‰çI‰†¸º>ÇH‰D$8èlÖÿÿL‰÷èD×ÿÿ¾L‰ÿè·üÿ¿èíüÿI‰‡¸I‰ÆHÇ€{"„¢·CAÆF€fA‰H‹l$¾H‰ïèsüÿ¿è©üÿH‰…¸I‰ÅHÇ€{"„î·CAÆE€fA‰E€{"…¶H‹{H…ÿ„©è´ÿûÿH‹|$ ƒÀ‰D$4‹L$4‰ÈƒàƒøƒÙÿHcщL$4H‰ÖH‰T$HèõüÿH‹|$Hè+üÿH‹T$H1öH‰ÅH‹D$ H‰ïH‰¨¸èÝüÿ‹C…Ày‹Cf‰EH‹sH�}H…ö„è ýûÿ‹cuH‹5TuL‰çèÄüÿ‹D$ …À…àH‹T$8H‹t$(1ÉL‰çA¸èNüÿ1ÉA¸L‰òL‰þL‰çè8üÿH‹t$1ÉL‰êA¸L‰çè üÿ€{"„nL‰çè¾üûÿHƒÄXL‰à[]A\A]A^A_Ã@ƒèƒø‡ÇD$0 H�-õjéÆûÿÿ„Lcl$0H‹|$L‰îM‰îèÛüÿL‰ïèüÿH‹L$H‰D$@H‰�¸Aƒýƒ€Aƒæ…Ž‹T$0…Ò…2H‹ct‹@ƒø„½�Áƒø…๺ ¾L‰çè ÔÿÿH‹|$èßÔÿÿéLýÿÿf.„ÇD$0H�-qjé ûÿÿ@H�³¨H‹òsH‹KH�5ÔL‹D$ A¹‹z…ÿL‰çIEÆH‰Âèôÿÿ‹5šu…ö„ÃüÿÿH‹SA¹M‰øL‰éH�5~#L‰çèÓóÿÿéŸüÿÿfDƒèƒøw%¹º¾L‰çèIÓÿÿé;ÿÿÿ@ƒøtÛH�Ìi¾W H�=î"èC]ýÿD‹hH�5l¦L‰çH�c¦H‹\xA¹L�×aE…íL�-ϧHDðL‰éèAóÿÿD‹t$ E…ö…ëH‹SA¹M‰øL‰éH�5À"L‰çèóÿÿéÒûÿÿ€ÇD$01íéÇùÿÿf„L‰ç¹º>1öè|ÒÿÿL‰ÿèTÓÿÿéJüÿÿ€LcD$4H‹t$ 1ÉH‰êL‰çè‘ýûÿévýÿÿ@D‹D$0H‹T$@1ÉL‰çH‹t$èoýûÿéýÿÿf.„H‹|$ 1ö1íèrüÿÇD$4é¼üÿÿDL‰ç¹º>1öèìÑÿÿH‹|$èÂÒÿÿéýûÿÿDH‹EH‹L$@H‰‹D$0H�qHƒæøH‹TøH‰ÇH‰TøH)ñH‰ÈH)Íøƒàøƒø‚Zýÿÿƒàø1҉уÂH‹| H‰<9ÂrîH‹¦q‹@ƒø…Cýÿÿ1öL‰ç¹ºÅè^Ñÿÿ1É1öL‰çºÆèMÑÿÿ¹ºÆL‰ç¾è6Ñÿÿé(ýÿÿ�H‹3éÚûÿÿ„H‹;éOûÿÿ„¶EH‹L$@ˆé¾üÿÿÇD$0H�-agéøÿÿ@H‹SL‹D$L‰éL‰îA¹L‰çè+ñÿÿéóýÿÿfD‹EH‹L$@‰‹D$0‹Tü‰TüécüÿÿH�6g¾ H�=X è­Zýÿff.„f�óúAWM‰ÇE‰ÈAVE‰ÎAUI‰ÍL‰ùATUH‰ÕL‰êS‰óH‰îHƒìH‰|$èJNÿÿ…ÀŽòA¼ƒû„ÏH‹L$HcÃE‰ðL‰êH�€H‰îA‰ÜH�|ÁØL‰ùèNÿÿ…À�¢Aƒì…À„߃û„éE…äŽæE1Éë D�KE9á}@C� H‹T$E‰ðL‰ùÑûH‰îD‰L$HcÃH�€H�<ÂL‰êè«MÿÿD‹L$…ÀtryÀD�cÿE9á|ÀIcÁH‹t$E‰ðL‰ùH�€L‰êD‰L$H�<ÆH‰îèqMÿÿD‹L$…À~HE�aHƒÄD‰à[]A\A]A^A_Ãf�uA‰ÄH‹D$PÇëÚfDE1äëÏH‹D$PA‰ÜÇë¼E‰Ìu·H‹D$PÇëªfD…Àu ëçA¼ë–f.„óúAWAVAULcîATUH‰ýSHƒì8‹_XL‹W`dH‹%(H‰D$(1ÀÇD$$D�{Aƒçð…Û„HƒìI‰ÈE1ɉÞH�D$,L‰×PH‰L$ H‰ÑL‰T$èþÿÿA‰ÄXZ‹L$$…É…aL‹T$M…Ò„ûD9ã„ÑIcÄL�4€IÁæO� 2I‹yH…ÿt%H‹t$HƒÇL‰L$èÏûûÿL‹T$L‹L$…À„ B�+A9Ç}^ƒÀL‰×ƒàðH˜H�4€HÁæèÌøûÿD‰âD‹eXH‰E`D9âu,H‹D$(dH+%(…ÓHƒÄ8D‰à[]A\A]A^A_ÃfDD‰ãN� 0A‰ÔD)ãK�D­L‰ÎHcÛI�<ÁH�›HÁâè—þûÿë©D1ÒM…Òt$A�DA‰ÜA9Ç}�HcÓL�4’IÁæéXÿÿÿ@D‰âHcÊB�+L�4‰IÁæA9Ç|A‰Ü1ÀéVÿÿÿ€ƒÀ‰T$ƒàðH˜H�<€HÁçèÇøûÿD‹eX‹T$H‰E`é%ÿÿÿfDA¼ÿÿÿÿéÿÿÿè÷ûÿóúAWAVAUATUSHƒìx‰|$‰t$‰T$ dH‹%(H‰D$h1ÀèMTýÿH‹þcƒx@H‰D$ …DH‹=àdH…ÿt/è6üûÿH‹ÿcH‹=ÈdH‹@H‹0è,ýûÿH‰ícH…À„t H‹=�nH…ÿ„PH‹-ÕcH…íué/H‹­øH…í„H‹EƒxuæD‹� E…ÛtÚH‹…H…Àtö@XuÈèÛ\þÿH…À„ÂHƒÀH‰Ã„µº+@H�5 H‰ïèÁóûÿH…À„ H‹AcH�5 ÿÿÇ@xH‹ŠH‹‰˜ H‰q H‹5âmH‰A0H‰q(H‹ˆèÇAH‰X@é†H‹D$H‰cHǶ’bƒà<„´H‹D$hdH+%(…‚ HƒÄx[]A\A]A^A_úH�5Œ‘1ÿèýôûÿH‰Ç1ÀègýÿH‹=TmèòûÿHÇDmH‹ubH‹BH�=bH�-{!H‹€pÿ�€H‹_bH…Ût?f.„H‹ƒH…Àtö@XuH‹ƒH…Àt fƒx8„·H‹›øH…Ûu˶´aƒà<„sö§a…LL‹%õaM…ä„<ÇD$(H�-}ZL�-�HÇD$Ç$fDI‹„$H…Àt ö@X…™M‹¼$�M…ÿty1Ûë5„H�5žL‰÷è±÷ûÿ…Àu Iƒ@ ¸CØM‹M…ÿ„M‹7I9optêºL‰îL‰÷èjñûÿ…Àu¶»‹$…Àt9Ã…÷Hƒ|$‰$„ƒ<$„äf„M‹¤$øM…ä…?ÿÿÿH‹|$H…ÿ„+H‹GH�5½H‹€p‹P8ƒÊè4ñûÿH…À„H‹L$ Ç@xH‰�8„H‹±`H‹=’`H�5;`L�=H‰D$èjõûÿH‰ÅH‰ÃH…À„H‹{H…ÿt(èªóûÿ¨…êH‹{H…ÿt¶õ_ƒà<„¿I‰ìH9Ýt9€I‹|$H…ÿt èióûÿ¨uH‹sI‹|$èGöûÿ…À„OM‹$$I9ÜuÎL‹%?]H‰˜n1ÿHÇ“nM…ä„ f�AöD$Y„ÜH…ÿ„H‹(èóûÿH‹=cn¨„»I‹D$H…À„­M‹D$(M…À„ŸH…ÿ„L‰ÇèÆòûÿ¨uI‹|$H‹nH‹pèíðûÿ…À„•AöD$Xt0I‹|$¾/è¾òûÿH…ÀtH‹âmH�xH‹rèµðûÿ…À„]I‹|$(èCòûÿH‰ÇH…ÀtH‹´mH‹pè‹ðûÿ…À„3H‹=¤m@M‹d$HM…ä… ÿÿÿH…ÿt H‹(èòûÿ¨t`L‹cL‹kD‹ e]L‰d$0L‰l$8L‰d$@E…É…ÃH‹RmH…À„YH‹@H�|$@º¾H‰D$Hèd0ÿÿ…À„4@H‹H…Û…ôýÿÿH‹e^H�-~H…ÛuéLûÿÿ@H‹›øH…Û„8ûÿÿ¶CHƒà<uåöCD@tßH‹CƒxuÕH‹“·‚Œ fÁè¨ u¿HƒºtµH�5ž]H‰ßèFñûÿ…Ày¢1ÿºH‰îè3ðûÿH‰Ç1ÀèIbýÿ뇀L‰%qlL‰çéÉþÿÿ�L9ã…?ÿÿÿé¬ýÿÿf�I‹|$H…ÿ„ªþÿÿIƒ|$(…þÿÿ1ÿé—þÿÿ€èÃðûÿ¨…ÿÿÿé/ýÿÿfDH‰î1ÿºè±ïûÿH‰ÞH‰Ç1ÀèÄaýÿé(ûÿÿ€H�D$0H‰l$ E1äH‰$‹l$ L‹4$¹D‰âH‹=^A‰èL‰öèe5ÿÿ…À…ÔD‹D$E…À„_H‹=à]H…ÿt0èÎ9ÿÿA‰è¹D‰âH‰ÇL‰öI‰Åè%5ÿÿL‰ï‰ÅèKìûÿ…í…Š‹D$…À„ÝHƒ=Ÿ]„,H�=™è�ëûÿH‰ÇH…ÀtD‹D$ H‹4$¹D‰âèÏ4ÿÿ…À…>‹|$…ÿ…‘H‹{èâîûÿH‹-CaI‰ÅH…ítq‹M…Éu^H‹}èÀîûÿI�|èfðûÿL‹KL‹EL‰ùH‰ÇI‰Æ¾1ÀHÇÂÿÿÿÿèÂùûÿH�|$@ºD‰æL‰t$HèÛ-ÿÿ…À…ºL‰÷èkëûÿH‹mH…íu’AƒüuTL‹kL‹c1ÿºH�5>H‹l$ è îûÿL‰êL‰æH‰Ç1Àè`ýÿé/ýÿÿ€‹T$…Ò„)ÿÿÿéØþÿÿ€A¼éFþÿÿHƒ=]\…ÆþÿÿH�=oècêûÿH‰ÇH…À„®þÿÿD‹D$ H‹4$¹D‰âè‘3ÿÿ…À„�þÿÿH‹l$ é·üÿÿ1ÿH�5ÆZè1óûÿ…À…6øÿÿ1ÿºH�5[èVíûÿH‰ÇH‹D$hdH+%(…¢HƒÄx1À[]A\A]A^A_éJ_ýÿH‹=ÃZH�5lZè§ëûÿH‰ÅH…Àu*éÜf.„è+êûÿH‹mH…í„·E„ö„®H‹}E1íA¾èc7ÿÿH‰ÇH‹CH9EuÆD‹D$ H‹4$D‰âE1í¹H‰|$(è¨2ÿÿH‹|$(…ÀA•ÅA”Æë—…Û…þøÿÿƒ<$…%ùÿÿ¶ÒYÇ$ƒàùƒÈˆ¿YéùÿÿfDƒû„Ñö¤Y…èÇ$éÞøÿÿ1ÿºH�5Åè+ìûÿL‰âL‰îH‰Ç1Àè+\ýÿéûÿÿD‹T$(E…Ò„ùÿÿ1ÿºH�5zèõëûÿH‰Ç1Àè ^ýÿéæøÿÿ¶5Y‰Ð‰ÑÀèÀéƒðƒáƒà8Á…‘öÿÿH‹D$hdH+%(…ÁâH‹=VYHƒÄxH�5ƒâ[]ƒÊA\A]A^A_é–éûÿI‹D$ÇD$(ƒxH‹D$IDÄH‰D$éÝþÿÿI‹D$ÇD$(Ç$ƒxH‹D$IDÄH‰D$é×÷ÿÿE…í…¥ýÿÿ‹5jL‹-ñi…ö„¼H‹{M…í„UüÿÿH‹CD‹D$ H‰|$XD‰âH�t$P¹L‰ïH‰D$Pèä0ÿÿ…À„!üÿÿéNýÿÿ€H‰ÇéûøÿÿH‹-1Y1ÿºH�5óè®êûÿH‰ÇH‰î1ÀèÁ\ýÿé`ôÿÿºH�5øé‡õÿÿƒûºLEd$1ÿH�5¤èoêûÿL‰æH‰Ç1Àè‚\ýÿé÷ÿÿH‹=ÆV1É1ÀH�l$PH�5H�HÇD$PHÇD$`HÇD$XèëûÿH‰ïH‰ÆI‰Åèq5ÿÿ…ÀtAL‰ïè5çûÿH‹|$PL‹-ÉhH…ÿtè4ÿÿH‹|$PH‰³hI‰Åè çûÿÇ©hé³þÿÿL‰ïèôæûÿH‹=-V1Ò1ÀH�5uè ëûÿH‰ïH‰ÆI‰Åèÿ4ÿÿë�èØéûÿ„óúAWAVAUATUH�-ÌVSH‰ûHƒìXH‰t$8dH‹%(H‰D$H1ÀH‹ÐVƒx@„L‹-ßWÆD$/HÇD$HÇD$HÇD$M…í„NL‹=ÇVM…ÿ„–H�D$8H‰D$ ëf�M‹¿øM…ÿt|I‹GƒxuêI‹‡H‹¸H…ÿt×€?tÒèýêûÿD¾5¡UI‰ÄëÆA€<$…ZL�`D‰öL‰çèSéûÿH…ÀuÞA€<$t—H‹|$ L‰æè:8ÿÿM‹¿øM…ÿuŠfDHƒìI‰ØL‰êH‹ WH�D$HH‹5ëVH‹=ôUPUÿ5üVL‹L$Xè"îûÿHƒÄ …À„ŽH‹\$@H…Ût H‹=­VH…ÿtH‰»¸èDèûÿHƒÀH‰C@H‹%SH…Û„ìL�-ÚëfCÆ>E1ÉH‹K(E1ÀH‹JU1ÒL‰öH‰ïÿP(L‰÷è÷äûÿI‹D$pH…ÀtH‹PHI‹L$@H9ÊrH)ÊH‰PHA�L$(€ IÇD$@H‹[@H…Ût}öCXuñH‹{(L‰îèûéûÿI‰ÄH…ÀtÝL‹x@I�èFéûÿH‹{(1ÉM‰øH‰ÂL‰æI‰Æèoçûÿ…À…WÿÿÿL‹C(1ÿºH�5ÝL‰D$ è+çûÿH‹t$ H‰Ç1Àèÿà€H…ít Hƒ}8„yH‹{è·Süÿ€H‹H…Ûu¾HƒÄ[]A\A]A^A_Ãf„H…ítÛHƒ}8uÔ1öH‰ïè:TüÿH‹H…ÛuˆëÈH‹{ègSüÿ‹…”ƒø„ð1öƒø@•Æ�´vH‹E8H…Àt½H‹ p(H…Û…Fÿÿÿë†fDH‹C H…Àt ‹@…À…dÿÿÿH‹{º1öèLüÿH‹SHƒx8H‰PX…Aÿÿÿ1öH‰Çè§Süÿé2ÿÿÿf�H‹=YDH‰îè±þÿÿH‹H…Û…Ûþÿÿéÿÿÿ‹ƒŒ…À„*-|ƒø‡ôþÿÿ€‹˜H‹{H‰Þèádüÿ¶ƒ˜Àèƒà�»Œ|”Â8ЄçǃŒÿÿÿÿé°þÿÿH‹{H‰îè4þÿÿH‹H…Û…^þÿÿé›þÿÿH‹CPH…ÀtƒxtiH‰êL‰îH‰ßècüÿHƒ=kJ…eþÿÿL‹{ M…ÿ„Xþÿÿ„I‹H…ÿtL‰æè?Üûÿ…À„¯M‹?M…ÿußé*þÿÿf.„À‹S…Òu�H�5šHüÿH‰êH‰ßè�büÿH‹spH…ötƒH‰êH‰ßè;nüÿHÇCpékÿÿÿfDH‹{H‰Þè\ýÿÿH‹H…Û…†ýÿÿéÃýÿÿH‹qE¾H‹@ƒx¸Eðéÿýÿÿ1öH‰ïèýQüÿéxýÿÿH‰-�Ié|ýÿÿff.„�óúAT¾.I‰üUSHƒìdH‹%(H‰D$1Àè‡ØûÿH…À„®¶PH‰ÅH� öP„–H‰æH�}º èÕßûÿH‰ÃH‹$€8uyI�D$H9Åt'H�ûÿÿÿwf‰ØH‹T$dH+%(u[HƒÄ[]A\úH�5;þL‰çè´Ôûÿ…Àu¸ÿÿH)ØH‰Ãë´ºH�5þL‰çèŒÔûÿ…Àu™ëÖfD¸ÿÿÿÿë•èäÖûÿ@óúAWAVAUATUSHƒìH‰T$H…ÿteH‰ûI‰ôL�=Û†H‰ÍL�5‘†L�-fDƒ{‡Ù‹CIcD…Lè>ÿà„H‹{0H‹T$H‰éL‰æèŒÿÿÿH‰D$H‹H…Ûu¿H‹D$HƒÄ[]A\A]A^A_ÃH‹T$H‹= AH‰éL‰æèQÿÿÿH‰D$H‹H…Ûu„ëÃf�H‹D$H‹{0Ç%?H‰V?H�D$H‰R?H�<H‰L?è—dýÿ‹)?…À…Qƒ=â>„ÅH‹{èÓÕûÿ‹ �?ÓèHD$H‹H…Û… ÿÿÿéFÿÿÿDH‹C‹ f?HÓèHD$H‹H…Û…âþÿÿéÿÿÿD¶U¶ƒ˜H‹{8ƒâƒàßÁâ Јƒ˜èÓQüÿH‹C8H…À„^öƒ˜…Qö@(tH‰ GÇúFH‹P0H‰T$é1@H‹Cö@)€…›þÿÿH‹@@‹ È>HÓèHD$H‹H…Û…Dþÿÿé€þÿÿ€H‹{éSþÿÿ€H‹D$H‹{ÇÍ=H‰þ=H�D$H‰ú=H�«:H‰ô=è?cýÿ‹Ñ=…Ò…ƒ=Š=„�‹C-ƒø‡ ‹ ->‰ÂH�5¸‹–Óà9ÐBÂÓèHD$H‹H…Û…’ýÿÿéÎýÿÿDL‹KH‰…FAƒy…ÒI‹D$8H‹T$H�5á8L‰ÏÇ =H…ÀH‰:=H�T$HDÆH‰2=H‰3=è~býÿH‹H…Û…"ýÿÿé^ýÿÿºL‰þ1ÿènÓûÿº“L‰öH‰Ç1Àè|EýÿH‹H…Û…ðüÿÿé,ýÿÿH‹±<H‰C8é¬ýÿÿ„H‹™<H‹¢<H‰C H…Ò„áþÿÿHB0H‰C éÔþÿÿ„I‹yL;%<¶„ê<_u„HƒÇ€?_t÷H�5KúL‰ $è§ÖûÿL‹ $…À…éþÿÿÇEL‹KéÙþÿÿH‹T$H‹{H‰éH‰Þèôûÿÿöƒ˜…`üÿÿH‹S8H…Ò„Nüÿÿ‹B(%=„‰H‹B@‹ m<HÓèHD$H‹{xH…ÿ„!üÿÿÇ–;H‹D$H‰Â;H�D$H‰¾;H�o8H‰¸;èaýÿH‹H…Û…§ûÿÿéãûÿÿ<.…ÿÿÿ€…ÿÿÿÇþC¶éòþÿÿ¶'?ƒà<…wÿÿÿé`ÿÿÿ1ÿºH�51è´ÑûÿH‰Ç1ÀèÊCýÿéüÿÿ1ÿºH�5ôøè’ÑûÿH‰Ç1Àè¨CýÿéOýÿÿH� =¾@H�=”�èË1ýÿff.„óú‰øÁèƒà÷Çtö–> ºEÂö‡>€t�ç ºEÂÃDóúAWAVAUATUSH�ìHƒ $H�ìx 1ÉE1ä½ÈL�6dH‹%(H‰„$h1ÀL�œ$`H�„$ÐljOL‰\$I‰ÇI‰ÆL‰ÛÇmOþÿÿÿf‰Œ$ÐÇD$H‰D$IcÔE¿$RE‰åA�üqýÿÿ„Ü‹:OƒøþuH‰T$ èW'üÿH‹T$ L�‹5‰O…ÀŽu=ƒŽ‚E�l$¸A�ý¨‡‹McíH� Q$B¿ i9È…tH�ÝF¿$hD‰âD‰à÷ÚE…ä~C‹t$L‰ùfo-¼?ǦNþÿÿÿfo5º?ƒþk ƒÖÿs0HƒÃ ‰t$éú€HcÂH�5ž D�bø¾ H‰D$(¸)ȈL$ H˜HÁàHØóoóoP)L$p)”$€A�ünwH�WJc¢HÐ>ÿàÇNH¾D$ H‹t$(fo¤$€fo\$pH‰ÁHÀHÁáH)ËL‰ùH)ÁH� H‰Ú¿pZ ¿9H�[ b0H�Ï-œ‰þH˜¿Bú�ú¨wHcÒH�=#f;4W„4H�}D¿$BD‰àf‰AH�D-L�yI�TþI9ׂ½M)÷L‰ûHÑûHƒÃH�ý'�9½'H9èHNèH‰èHÁàHèH�|èðÓûÿI‰ÅH…À„æ8I�WL‰öH‰ÇHÁãèñÒûÿH�L-H‹t$H‰ÚHƒáàLéH‰ÏèÕÒûÿL;t$L�Y3H‰ÁtL‰÷H‰D$èGËûÿH‹L$L�;3MïI�DmþH�\àI9ǃ‹8H‰L$M‰îAƒü…OýÿÿM‰÷L;|$tL‰ÿèËûÿH‹„$hdH+%(…›?H�Äx[]A\A]A^A_ÄH� ¿P…Ò…Õýÿÿ‹T$‹GL…Ò„óƒ|$u …À� t‡H�“!H� ,ë%f.„M9÷„gÿÿÿI¿GþIƒïHƒë E¿$BA�üqýÿÿtÜAƒÄA�ü¨wÏMcäfBƒ!1öH�PH‰1!‹K:‰H‹;Ç<:èךýÿL�P/éËúÿÿH‹;¾èþZüÿL�7/H‰¸Hé«úÿÿH‹S L‹kà¿0H‰T$0è”NüÿH‹T$0¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$L‹-ƒI‰T$AÇD$AÇD$(èGNüÿL�À.Ç@HÇI‹UH‰I‰EL‰`éúÿÿH‹S L‹kà¿0H‰T$0èNüÿH‹T$0¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$L‹-öI‰T$AÇD$AÇD$(èºMüÿL�3.Ç@HÇI‹UH‰I‰EL‰`é‘ùÿÿH‹S L‹kà¿0H‰T$0èzMüÿH‹T$0¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$L‹-iI‰T$AÇD$AÇD$(è-MüÿL�¦-Ç@HÇI‹UH‰I‰EL‰`éùÿÿH‹CàH‰D$péöøÿÿH‹3¿-è™sýÿL�b-H‰D$p騸ÿÿH‹H�Pü‹@üH‰‰8H‹H‰D$pé°øÿÿH‹éH�PH‰Þ‹ø7‰Çì7釸ÿÿ¿è­ÉûÿH‹SÀL�ò,H‰D$pH‰PH‹H‰é^øÿÿ¿è„ÉûÿH‹SàL�É,H‰D$pH‰PH‹H‰é5øÿÿD‹-63H‹E…í…"øÿÿH‰KÇ3é øÿÿH‹sÀL‹ E1À1É1ÒH�=¿EèB ýÿL�k,éæ÷ÿÿH‹sÀL‹ E1À1É1ÒH�=™Eè ýÿL�E,éÀ÷ÿÿH‹sÀL‹E1É1É1ÒH�={Eèö ýÿL�,éš÷ÿÿH‹sÀL‹E1É1É1ÒH�=UEèÐ ýÿL�ù+ét÷ÿÿH‹sÀH‹E1ÉE1À1ÉH�=FEè© ýÿL�Ò+éM÷ÿÿH‹sàH‹E1ÉE1À1ÉH�=Eè‚ ýÿL�«+é&÷ÿÿH‹sÀH‹E1ÉE1À1ÉH�=øDè[ ýÿL�„+éÿöÿÿH‹SÀH‰ÐH‰ÁH‹H…ÀuõH‹ƒÿÿÿH‰H‹C H‰T$pH‰ËDéÎöÿÿH‹¿DH‰D$pH‹CàH‰¯Dé²öÿÿH‹{ÀH‹3è¦ ýÿL�+éšöÿÿH‹{ÀH‹3èŽ ýÿL�+é‚öÿÿH�Œ›H‰¤2éoöÿÿL‹#ºH�5Hõ1ÿè©ÅûÿH‰ÇL‰æ1Àè¼7ýÿL�Å*é@öÿÿH‹yH�Pü‹@üH‰k‰…5‹D…À…1L‹%øCL‹-éCM…ä„1M…í„Ñ7H‰\$0H‰l$8ëI‹D$H‰CM‹$$M…ä„Ö0I‹l$L‰ëM…ítH‹sH‰ïèéÈûÿL�2*…ÀtÆH‹H…ÛuáI‹T$E1ÉE1À1ÉH‰îH�=oCèÚýÿL‹-cCL�ü)ë›H‹³H�PH‰¨‹Â4‰Lc%Ù5ǯ4 AƒüŽ[3AƒÄD‰%º5é5õÿÿH‹nL‹+¿0H�Pü‹@üH‰XH‹SÀ‰n4H‰T$0èIüÿH‹T$0¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$L‹-óI‰T$AÇD$AÇD$(è·HüÿL�0)Ç@HÇI‹UH‰I‰EL‰`éŽôÿÿH‹Ç1öH�PH‰º‹Ô3‰H‹;ÇÅ3è`”ýÿL�Ù(éTôÿÿH‹H‰ BéEôÿÿD‹H� 1t1ÀL‹cÀL�¬$°º¾L‰ïèËÎûÿL‰ïè“ÅûÿE1ÉE1ÀL‰áH‰Æ1ÒH�=¶AèIýÿL�r(éíóÿÿH‹3L‹cÀH…ö„�5E1ÉE1ÀL‰á1ÒH�=ƒAèýÿL�?(éºóÿÿHƒ=ª.H‹tD‹%Ž.E…ä…�óÿÿH‰Ž.Çt.é‡óÿÿH‹ÀH�PH‰µ‹Ï2‰ÇÃ2 é^óÿÿH‹—H�Pü‹@üH‰‰‰£2é>óÿÿH‹wH‹KÀH‹s H‹;H�Pü‹@üH‰^H‹Sà‰t2èïÿüÿL�ˆ'éóÿÿÇY2éôòÿÿ‹C€H‹³ ÿÿÿH‹»àþÿÿL‹‹@ÿÿÿL‹C H‹‹`ÿÿÿP‹Cà‹Ç@Pè!Ôüÿ^L�9'_é³òÿÿÇ 2é¤òÿÿH‹ÝH�PH‰Ò‹ì1‰Çà1é{òÿÿÇD$p~énòÿÿHÇD$pé`òÿÿH‹CàH‰D$péRòÿÿH‹ƒ ÿÿÿH‰D$péAòÿÿH‹C H‰D$pé3òÿÿH‹{ÀH‹3¹H‹@èëÊüÿL�”&H‰D$pé òÿÿH‹{ÀH‹÷?1ÉH‹3èÅÊüÿL�n&H‰D$péäñÿÿH‹Õ?H‹3¹1ÿèžÊüÿL�G&H‰D$pé½ñÿÿH‹®?H‹31É1ÿèzÊüÿL�#&H‰D$pé™ñÿÿL‹cà¾p¿L‹«`ÿÿÿè¯ËûÿH�5(¤üÿL�ñ%L‰hL‰`8H‰phÇ@`ÿÿÿÿH‰D$péTñÿÿL‹c࿾pèqËûÿH�=ê£üÿL�³%HÇ@L‰`8H‰xhÇ@`ÿÿÿÿH‰D$péñÿÿL‹cà¾p¿è/ËûÿH�5¨£üÿL�q%L‰`HÇ@8H‰phÇ@`ÿÿÿÿH‰D$péÐðÿÿL‹c࿾pèíÊûÿH�=f£üÿL�/%L‰`HÇ@8H‰xhÇ@`ÿÿÿÿH‰D$péŽðÿÿ¿¾pè¯ÊûÿH�=(£üÿL�ñ$HÇ@HÇ@8H‰xhÇ@`ÿÿÿÿH‰D$péLðÿÿH‹{àH‹3è0ÏüÿL�¹$H‰D$pé/ðÿÿH‹31ÿèÏüÿL�ž$H‰D$péðÿÿH‹SàH‹s H‹»`ÿÿÿè ÊüÿL�y$éôïÿÿH‹sÀH‹{€1Òè…ÊüÿL�^$éÙïÿÿH‹{ÀH‹Æ=1ÉH�5‚çè�ÈüÿL�9$H‰D$pé¯ïÿÿH‹ =1ÉH�5\ç1ÿèhÈüÿL�$H‰D$pé‡ïÿÿH‹{ÀH‹t=1ÉH�5*çè>ÈüÿL�ç#H‰D$pé]ïÿÿH‹CàH‰D$péOïÿÿH‹CÀH‰D$péAïÿÿH‹CàH‰D$pé3ïÿÿÇD$p}é&ïÿÿÇD$p|éïÿÿH‹ =H‰D$pH‹CàH‰ú<éýîÿÿH‹6H�Pü‹@üH‰(‰B.éÝîÿÿH‹H�PH‰ ‹%.‰Ç.é´îÿÿ¿ L‹+L�%%.è BüÿL�#Ç‹].H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹y-‰PéaîÿÿH‹sà¿èiýÿL�Ì"H‰D$péBîÿÿ¿ L‹k L�%²-è-BüÿH‹sà¿1ÇH‰Â‹å-ƒøƒÐÿI‹ÄL‰jÇBH‰B‹-‰Bè¾gýÿL�g"H‰D$péÝíÿÿH‹sà¿&èhýÿL�H"H‰D$pé¾íÿÿL‹cà¿(L‹k è¬AüÿL�%"I‹T$Ç%H‰D$pH‰PA‹T$L‰`‰PL‰h Ç@éuíÿÿH‹SàH‹s ¿$è3gýÿL�Ü!H‰D$péRíÿÿH‹SàH‹s ¿ègýÿL�¹!H‰D$pé/íÿÿH‹sà¿èÑgýÿL�š!H‰D$péíÿÿH‹sà¿`è²gýÿL�{!H‰D$péñìÿÿ¿ L‹kàL�%a,èÜ@üÿL�U!Ç‚‹™,H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹µ+‰Pé�ìÿÿ¿ L‹kàL�% ,èˆ@üÿL�!ÇD‹E,H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹a+‰PéIìÿÿ¿ L‹kàL�%¹+è4@üÿL�­ ÇC‹ñ+H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹ +‰Péõëÿÿ¿ L‹kàL�%e+èà?üÿL�Y ÇA‹�+H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹¹*‰Pé¡ëÿÿ¿ L‹kàL�%+èŒ?üÿL� ÇB‹I+H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹e*‰PéMëÿÿ¿ L�%Á*èüÿH‹L$0L�PÇ‹”*H‰D$pƒúƒÒÿI‹ÔH‰HL‰h H‰P‹³)Ç@‰Pé”êÿÿ¿ L‹kàL�%*è>üÿL�øÇ;‹<*H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹X)‰Pé@êÿÿH‹sÀH‹¿ èÿcýÿL�¨H‰D$péêÿÿH‹sÀH‹¿èÝcýÿL�†H‰D$péüéÿÿH‹H‹KÀ¿0L‹k€H‰T$8H‰L$0èÝ=üÿH‹L$0H‹T$8L�LÇ?I‰ÄI‹EI‰D$A‹EAÇD$Aƒ}A‰D$I‰L$ M‰l$I‰T$(„²&L‰d$pé„éÿÿH‹sÀH‹¿|èCcýÿL�ìH‰D$pébéÿÿH‹sÀH‹¿^è!cýÿL�ÊH‰D$pé@éÿÿH‹sÀH‹¿&èÿbýÿL�¨H‰D$pééÿÿH‹sÀH‹¿>èÝbýÿL�†H‰D$péüèÿÿH‹sÀH‹¿<è»býÿL�dH‰D$péÚèÿÿH‹sÀH‹¿è™býÿL�BH‰D$pé¸èÿÿH‹sÀH‹¿èwbýÿL� H‰D$pé–èÿÿH‹sÀH‹¿èUbýÿL�þH‰D$pétèÿÿH‹sÀH‹¿è3býÿL�ÜH‰D$péRèÿÿH‹sÀH‹¿èbýÿL�ºH‰D$pé0èÿÿH‹sÀH‹¿èïaýÿL�˜H‰D$péèÿÿH‹sÀH‹¿-èÍaýÿL�vH‰D$péìçÿÿH‹sÀH‹¿+è«aýÿL�TH‰D$péÊçÿÿH‹sÀH‹¿%è‰aýÿL�2H‰D$pé¨çÿÿH‹sÀH‹¿/ègaýÿL�H‰D$pé†çÿÿH‹sÀH‹¿*èEaýÿL�îH‰D$pédçÿÿH‹3¿~èbýÿL�ÐH‰D$péFçÿÿH‹H‰D$pé9çÿÿH‹3¿!èÜaýÿL�¥H‰D$péçÿÿH‹sà‹{ è¿aýÿL�ˆH‰D$péþæÿÿH‹ï41ÉH�5¥Þ1ÿè·¿üÿL�`H‰D$péÖæÿÿH‹{ÀH‹Ã41ÉH�5ÌŠè�¿üÿL�6H‰D$p鬿ÿÿH‹�41ÉH�5¦Š1ÿèe¿üÿL�H‰D$p鄿ÿÿH‹CÀH‰D$pH‹C H‰h4ékæÿÿHÇD$pé]æÿÿH‹H‰D$péPæÿÿH‹sà¿gèò`ýÿL�»H‰D$pé1æÿÿ¿ L‹kàL�%¡%è:üÿL�•ÇP‹Ù%H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹õ$‰PéÝåÿÿ¿ L‹kàL�%M%èÈ9üÿL�AÇN‹…%H‰D$pƒúƒÒÿI‹ÔL‰hÇ@H‰P‹¡$‰Pé‰åÿÿL‹c ¿(L‹kàèw9üÿL�ðI‹T$Ç!H‰D$pH‰PA‹T$Ç@‰PL‰`L‰h é@åÿÿH‹SàH‹s ¿Fèþ^ýÿL�§H‰D$péåÿÿH‹SàH‹s ¿EèÛ^ýÿL�„H‰D$péúäÿÿÇð2éëäÿÿH‹$ H�Pü‹@üH‰ ‰0$éËäÿÿH‹ 1öH�PH‰÷ ‹$‰H‹;Ç$è�„ýÿL�é‘äÿÿH‹Ê L‹+¿0H�Pü‹@üH‰´ ‰Î#èi8üÿ¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$H�(ÎL‹-VAÇD$I‰D$AÇD$(è8üÿL�“Ç@HÇI‹UH‰I‰EL‰`éñãÿÿH‹* H�PH‰ ‹9#‰Ç-#éÈãÿÿE1ÀH‹KÀH�|$hL‹+H‹ò H�´$�H�Pü‹@üH‰Ü H‹S ‰ò"H‹CàH‰D$0‹ƒ€þÿÿ‰D$8H‹ƒ þÿÿH…ÀH‰D$@A•ÀE1Éèt»üÿH‹õ0L�ÖH…À„×H‹@H‹â0¿+H‹5æ0€ˆ˜èú\ýÿ¿0I‰ÄH‹³0H‹PH‰T$Hè 7üÿI‹L$L‹™0H�=åÌH‹T$HÇ=L�hH‰HA‹L$M…ÀÇ@‰HL‰` H‰xÇ@(H‰Bx„CH‰\$HE1äëL‰Çè'¯ûÿH…ÛL�„ãI‰ØI‹@M…ít HƒxP„ÃH‹T$hI‹H‰P@H‹”$�H‰PHH…Û„MHƒ|$0tHƒ¸€„{‹L$8…Ét’¿L‰D$Pèb³ûÿL‹D$PI‹PH‹R0L‰ I‰ÄI‹H‰PédÿÿÿÇi!éâÿÿHƒ=¬/L‹cÀL‹«`ÿÿÿ„àºH�5“a1ÿè(±ûÿºÐ!H�5@aH‰Ç1Àè2#ýÿL�;L‰-d/L‰%U/é¨áÿÿÇþ é™áÿÿH‹ÒH�PH‰Ç‹á ‰ÇÕ épáÿÿH‹SÀ¿ L‹+L�%Ý H‰T$0èS5üÿH‹T$0‹{àÇH‰Æ‹ !ƒøƒÐÿI‹ÄH‰VL‰êÇFH‰F‹* ‰FèâZýÿH‹SÀ¿0I‰ÅH‰T$0èü4üÿH‹T$0¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$L‹-ëýI‰T$AÇD$AÇD$(è¯4üÿL�(Ç@HÇI‹UH‰I‰EL‰`é†àÿÿH‹SÀL‹+¿0H‰T$0èp4üÿH‹T$0¿Ç=I‰ÄI‹EI‰D$A‹EM‰l$ A‰D$L‹-_ýI‰T$AÇD$AÇD$(è#4üÿL�œÇ@HÇI‹UH‰I‰EL‰`éúßÿÿH‹CàH‰D$péìßÿÿ¶¶SÀƒàÁâ ЈóéÎßÿÿH‹;1öèÄÊÿÿL�=é¸ßÿÿH‹;1öè®ÊÿÿL�'é¢ßÿÿH‹ÛH�PH‰Ð‹ê‰ÇÞéyßÿÿHƒ=iH‹CàtD‹ LE…É…[ßÿÿH‰LÇ2éEßÿÿ¶^¶SÀƒàÁâ ЈLé'ßÿÿ¶@¶SÀƒàÁâ Ј.é ßÿÿóo{àóoCð)|$p)„$€Ç„$€éâÞÿÿóo{àóoCð)|$p)„$€Ç„$€é»ÞÿÿÇ„$€H‹HÇ„$ˆH‰D$pH‹CÀH‰D$xéŽÞÿÿÇ„$€H‹HÇD$xH‰D$pHÇ„$ˆéaÞÿÿH�ƒÕH‰D$péPÞÿÿH�‚íH‰D$pé?ÞÿÿH‹H‰D$pé2ÞÿÿH‹kL‹k ¿(H�Pü‹@üH‰TH‹Sà‰jH‰T$0è2üÿH‹T$0¿Ç!I‰ÄI‹EI‰D$A‹EM‰l$A‰D$L‹-ïúI‰T$ AÇD$è¼1üÿL�5Ç@HÇI‹UH‰I‰EL‰`é“ÝÿÿH‹‹š+H�¼$�1öHÇ„$˜H‰„$�Ç„$ HÇ„$¨èà±üÿL�ÉéDÝÿÿ¿(èj®ûÿóo;óoCL�ªHÇH‰D$px@éÝÿÿ¿(è7®ûÿH‹SÀóo;L�xóoCH‰D$pH‰x@éÞÜÿÿ¿è®ûÿH‹L�JHÇ@H‰H‰D$péµÜÿÿ¿èÛ­ûÿH‹L�!H‰D$pH‰H‹SàH‰PéŒÜÿÿ¿è²­ûÿH‹SàL�÷Ç@H‰PHÇH‰D$pé[Üÿÿ¿ è�­ûÿH‹1ÉL�Å€:!u HƒÂ¹H‰PH‹SÀ‰Ç@H‰PH‰D$péÜÿÿ¿ è>­ûÿH‹1ÉL�‚€:!u HƒÂ¹‰H‰PÇ@HÇ@H‰D$péÕÛÿÿóo{àóoCð)|$p)„$€Ç„$€é®Ûÿÿóo{ÀóoCÐ)|$p)„$€Ç„$€é‡Ûÿÿóo{ÀóoCÐ)|$p)„$€Ç„$€é`Ûÿÿóo{ÀóoCÐ)|$p)„$€Ç„$€é9Ûÿÿóo{ÀóoCÐ)|$p)„$€Ç„$€éÛÿÿóo{àóoCð)|$p)„$€Ç„$€éëÚÿÿóo{àóoCð)|$p)„$€Ç„$€éÄÚÿÿóo{àóoCð)|$p)„$€Ç„$€é�ÚÿÿÇD$p|é�ÚÿÿÇD$p&éƒÚÿÿÇD$pévÚÿÿÇD$péiÚÿÿÇD$p/é\ÚÿÿÇD$p*éOÚÿÿÇD$p-éBÚÿÿÇD$p+é5ÚÿÿHÇD$pé'ÚÿÿH‹H‰D$péÚÿÿL‹#M…䄾H�§L‰çÇ¢HÇÏHÇÌH‰Íè8ýÿD‹©L�JE…À„xH‹=‚H…ÿtè0©ûÿI‰ÄH…À…¡¿èʪûÿ‹TL� HÇʉPH‰D$péwÙÿÿHcH‰D$péjÙÿÿHcH‰D$pé]ÙÿÿHcH‰D$péPÙÿÿHcH‰D$péCÙÿÿHcH‰D$pé6ÙÿÿH‹oÿH�Pü‹@üH‰aÿ‰{éÙÿÿH‹Oÿ1öH�PH‰Bÿ‹\‰H‹;ÇMèèxýÿL�a éÜØÿÿH‹ÿL‹k€¿(H�Pü‹@üH‰þþH‹SÀ‰H‰T$0èª,üÿH‹T$0¿Ç!I‰ÄI‹EI‰D$A‹EM‰l$A‰D$L‹-™õI‰T$ AÇD$èf,üÿL�ß Ç@HÇI‹UH‰I‰EL‰`é=ØÿÿH‹vþH�PH‰kþ‹…‰ÇyéØÿÿL‹%-õ¿(L‹kàèÿ+üÿL�x Ç@HÇI‹T$H‰I‰D$L‰héÔ×ÿÿH‹SàL‹%éô¿8L‹k H‰T$0è¶+üÿH‹T$0L�* Ç@HÇI‹L$H‰I‰D$H‰PD‰hé‚×ÿÿL‹%›ô¿Çäèg+üÿL�à Ç@HÇI‹T$H‰I‰D$é@×ÿÿL‹%Yô¿è/+üÿL�¨ Ç@HÇI‹T$H‰I‰D$é×ÿÿL‹%!ô¿è÷*üÿL�p Ç@HÇI‹T$H‰I‰D$éÐÖÿÿÇÖ$éÁÖÿÿÇÇ$é²ÖÿÿH‹C€H‹sàH�{ ‹°$H‰C¸è'«üÿL� é‹ÖÿÿH‹sà‹‘$H�{ è«üÿL�ñ élÖÿÿH‹C H‹sàH�¼$�HÇ„$�‹Z$HÇ„$˜Ç„$ H‰„$¨è¶ªüÿL�Ÿ éÖÿÿH‹sà‹ $1ÿ虪üÿL�‚ éýÕÿÿH‹‹$H�¼$�1öHÇ„$˜H‰„$�H‹CàÇ„$ H‰„$¨èJªüÿL�3 é®ÕÿÿH‹;1öè¤ÀÿÿL� é˜ÕÿÿH‹;¾è‹ÀÿÿL� éÕÿÿH‹;¾èrÀÿÿL�ë éfÕÿÿH‹;¾èYÀÿÿL�Ò éMÕÿÿH‹†ûH�Pü‹@üH‰xû‰’é-ÕÿÿH‹fûH�PH‰[û‹u‰ÇiéÕÿÿH‹KàL�åD¶!E„ä„ìÔÿÿH‰\$0H‰ËH‰l$8L‰ÅI‰Ýë€E¶eIƒÅA€ü,tñA¶ÄöDE@uæE„ä„÷E¶eI�]E„äuë$DD¶cHƒÃE„ätA€ü,t A¶ÄöDE@táÆH�5rËL‰ïè7¡ûÿL�à…À…^ÇnDˆ#E„ä…fÿÿÿH‹\$0H‹l$8é3ÔÿÿL‹%Lñ¿ L‹+è(üÿL�˜HÇÇ@I‹T$H‰I‰D$L‰hÇ@H‹“H‰”éßÓÿÿH‹{àL�%dTL‹k L‰æH‰|$8èó¦ûÿ…ÀtL‰æL‰ïèä¦ûÿ…ÀuH�5ÉÒ1ÿºèí¢ûÿ1öH‰Ç1ÀèýÿL‹%² M…䄃H‰l$P1ÀL‰|$@L‹|$8H‰\$HH‰ÃL‰åëH‹mH…í„À H‹}H…Û„– L‰îèn¦ûÿ…ÀuÚ1ÿºH�5„Òèw¢ûÿL‰ê1öH‰Ç1Àèˆýÿë¶L‹%/ð¿ L‹+è'üÿL�{HÇÇ@I‹T$H‰I‰D$L‰hÇ@H‹vH‰wéÂÒÿÿ¿L‹càèä£ûÿH‹½L�&L‰`H‰Ç@€ 2H‰šé…Òÿÿ¿L‹càè§£ûÿH‹€L�éL‰`H‰Ç@€ õH‰]éHÒÿÿH‹�øH�Pü‹@üH‰sø‰�é(ÒÿÿH‹aø1öH�PH‰Tø‹n‰H‹;Ç_èúqýÿL�séîÑÿÿH‹Cà€8„áÑÿÿHƒÀ€8u÷éÓÑÿÿH‹ôîH� H9І/H�PøH‹@øH‰ÕîH‰Æîé¡Ñÿÿè,´üÿL�é�Ñÿÿ€ 1é„ÑÿÿÇJéuÑÿÿÇ éfÑÿÿH‹{à1öè ~ýÿL�ÔéOÑÿÿHƒ=W H‹SàH‹s H‹ƒ`ÿÿÿ…2Ñÿÿ‹ ƒù„ÕƒùuH…ÒHEÂH‰ é ÑÿÿHƒ= H‹Cà…ùÐÿÿH‰ éíÐÿÿD‹î H‹CàE…Û…ÙÐÿÿH‰îÇÐ éÃÐÿÿH‹{à1öè˜oýÿL�1é¬ÐÿÿL‹%Åí¿L‹kàè—$üÿL�Ç@ HÇI‹T$H‰I‰D$L‰hélÐÿÿH‹¥öH�Pü‹@üH‰—ö‰±éLÐÿÿH‹…öH�PH‰zö‹”‰Çˆ é#ÐÿÿH‹;1öèAüÿL�’é ÐÿÿH‹;1öèAüÿL�|é÷ÏÿÿH‹;1öèí@üÿL�féáÏÿÿH‹öH�Pü‹@üH‰ ö‰&éÁÏÿÿH‹úõH�PH‰ïõ‹ ‰Çýé˜ÏÿÿHÇD$péŠÏÿÿH‹3E1ÉE1À1É1ÒH�=NèÁâüÿL�êéeÏÿÿH‹3E1ÉE1À1É1ÒH�=)èœâüÿL�Åé@ÏÿÿH‹;¾HÇíè(ºÿÿL�¡éÏÿÿH‹;¾HÇÉèºÿÿL�}éøÎÿÿH‹3E1ÉE1À1É1ÒH�=Äè/âüÿL�XéÓÎÿÿH‹3E1ÉE1À1É1ÒH�=Ÿè âüÿL�3é®ÎÿÿH‹çôH‹;1ÉH�Pü‹@üH‰ÔôH‹Sà‰ê H‹óL‹`0H�OH‰ÆL‰d$0èKÛüÿL‰çèã�ûÿH�x芟ûÿL‰âI‰ÅA¶$L‰é„Àt'L�aÞ¶ðAöpŒu<_uˆHƒÁ¶BHƒÂ„ÀuàÆL‰ïL�%” è��ûÿH�xè6ŸûÿM‰è¾HÇÂÿÿÿÿH� DÅH‰ÇH‰D$@1À葨ûÿ¿ è×!üÿ¿0ÇDH‰Á‹“ H‰L$8ƒøƒÐÿI‹ÄÇAH‰A‹³ ‰AH‹D$0H‰Aè’!üÿH‹L$8L‹L$@¿H‰ÂÇ=H‹AH‰T$@H‰B‹AL‰J‰BH‰J H‹ xêÇBÇB(H‰L$8è@!üÿH‹L$8H‹T$@L‰ïÇ@HÇH‹qH‰H‰AH‰P葜ûÿH�x è8žûÿM‰èH� bľHÇÂÿÿÿÿH‰ÇH‰D$@1Àè“§ûÿ¿ èÙ üÿ¿ ÇAH‰Â‹• H‰T$8ƒøƒÐÿI‹ÄÇBH‰B‹µ ‰BH‹D$0H‰Bè” üÿH‹T$8¿+H‰ÆÇD‹K ƒøƒÐÿI‹ÄÇFH‰F‹p ‰FH‹D$0H‰FèFýÿ¿0H‰D$0è@ üÿH‹T$0L‹L$@¿Ç=I‰ÄH‹BI‰D$‹BI‰T$ A‰D$H‹+éM‰L$AÇD$AÇD$(H‰T$0èêüÿH‹T$0L‰ïÇ@HÇH‹JH‰H‰BL‰`è@˜ûÿL�9é´ËÿÿÇ é¥ËÿÿH‹ÞñL‹?E1É1ÉH‹5;L�% H�PH‰¹ñ‹Ó ‰L‹+ºjjL‰ïǸ 賬üÿHƒ=ãXZ„ ¿èiœûÿH‹¢ ¿ H‰PH‹ºH‰³H‰èüÿH‹5¬L�…ÿÇAH‰Â‹Æ ƒøƒÐÿH…öI‹ÄL‰jÇBH‰B‹ä ‰B„ä ¿Eè‘DýÿL�:ÿH‰Sé®Êÿÿ¿èÔ›ûÿH‹L�ÿÇ@H‰PH‹SÀH‰D$pH‰é~ÊÿÿHÇD$pépÊÿÿH�ùJH‰D$pé_ÊÿÿH‹H‰D$péRÊÿÿHÇD$péDÊÿÿH‹sÀ1Ò1ÿèפüÿL�°þé+ÊÿÿH‹dðH�Pü‹@üH‰Vð‰p é ÊÿÿH‹DðH�PH‰9ð‹S ‰ÇG éâÉÿÿH‹ðH�Pü‹@üƒ-M H‰ð‰ é»ÉÿÿH‹ôïH�PH‰éï‹ ‰Lc% ÇðAƒüŽk AƒÄD‰%û évÉÿÿL‹-ÿL‹càI‹UH…Ò„ã L‰àH‰ÁH‹H…ÀuõH‹H‰L‰"éBÉÿÿH‹{ïH�Pü‹@üƒ-­ H‰féÉÿÿH‹TïH�PH‰Iï‹c‰Lc%z ÇPAƒüŽ—AƒÄD‰%[ éÖÈÿÿL‹cÀóo;H�5[ÀH‹CL‰ç)|$pH‰„$€èÞ›ûÿL�'ý…À…yHƒ{à„ H�5)ÀL‰çèµ›ûÿ…À…L‹kàH�5ÀL‰çèš›ûÿL�ãü…À…L‰¬$€éNÈÿÿH‹CàH‰D$pé@ÈÿÿH‹CóoH‰„$€H‹CÀ)D$pH‰D$xéÈÿÿH‹ƒxH‰D$p… Èÿÿ�8…ÿÇÿÿL‹hE1äH�ÑÒJ‹4âL‰ïè›ûÿH�¾Ò…À„ IƒÄIƒüuÛH�5‰¿L‰ïèíšûÿ…À„> H�55¿L‰ïèÖšûÿ…À…í¿QåtdèdóüÿL� üH‰D$péƒÇÿÿ‹CÄL‹Kп0H‹KÈL‹C H‹“`ÿÿÿL‹kÀ‰D$0‹CÀL‰L$XH‰L$PL‰D$HH‰T$@‰D$8è=üÿH‹T$@H‹|$H1öHÇI‰ÄH‰PH��¾è§BýÿH‹L$PL‹L$XM‰l$HƒøI‰D$L�xûI‰L$ M‰L$(„Hƒ=L�-…áM‰eéÊÆÿÿHÇ„$€fïÀ)D$pé°ÆÿÿL‰þH‰|$0èÓ™ûÿH‹|$0…ÀIDÜéMóÿÿM‹d$M…ä…óÿÿH‰ØI‰ÜL‹|$@H‹\$HH‹l$PH…À„i¿è]üÿL‰ïH‰D$0èЗûÿH‹T$0L�ÄúH‰I‹D$H‰BI‰T$é.ÆÿÿH�=l±M‰÷è/ãûÿéŠÇÿÿM‰ïé‚ÇÿÿÇ€”H‹|$@H‰x`é›ãÿÿºH�5û¼1ÿè7•ûÿL‰îH‰Ç1ÀèJýÿL�Súé€ñÿÿH‹|$0H‰¸€étãÿÿL‰hPé4ãÿÿH‹\$HM…ät4¿èЖûÿH‹©L�úL‰`H‰€ %Ç@H‰†HÇHÇøHÇõHÇòéEÅÿÿH‹t$01É1Ò1ÿèÒüÿM‹mL�ªùM…í…¯L‹|$8H‹\$@H‹l$HÇøƒ-�éüÄÿÿH‹\$0H‹l$8H‹ÃH‰D$0H…À„áM…턽H‰\$8H‹D$0L‰ëL‹`H‹{L‰æèç—ûÿ…ÀuÇC0H‹H…ÛuáH‹D$0H‹H‰D$0H…ÀuÃH‹\$8H�EL‰|$8H‰D$0H‰\$@H‰l$HL‹=;M…ÿ„^I‹]E1äI‹H‰Þè—ûÿ…ÀuM‹g M‹?M…ÿuäH‹-H…í„#I‹]E1ÿH‹}H‰ÞèL—ûÿ…ÀuL‹}(H‹mH…íuãH‹5ÄH…ö„ÖAƒ}0I‹}jM‰øjÒL‰áE1Ƀâè;¥üÿA_¿(XHLjèó”ûÿ1Ò1ÿHÇH‰ÆI‹EHÇFH‰FÇFHÇF è!˜üÿH‹BH…Ûué;þÿÿH‹H…Û„/þÿÿI‹uH‹{è—–ûÿ…Àuã¿(艔ûÿ1Ò1ÿH‰ÆHÇH‹CHÇFH‰FÇFHÇF è·—üÿë¥I‹uH…ö„=H‰5ÑéÿÿÿE1ÿéùþÿÿE1äé½þÿÿL‰èM…í„ÞýÿÿÇ@0H‹H…ÀuñéOþÿÿƒy…DÙÿÿƒz…:ÙÿÿH�aøL‰çÇ\ûHljûHdžûH‰‡ûèÒ ýÿƒ=cûL�÷„ðØÿÿH‹7ûAÇ$IÇD$ I‰D$AÇD$éÅØÿÿ1ÀéÈèÿÿƒ=âútðºH�5|½1ÿè}‘ûÿH�Q¹L‰æH‰Ç1Àè‰ýÿ1ÀL��öéŠèÿÿHƒ=«…àÿÿHƒ=•…àÿÿé/àÿÿºH�5­¸1ÿè'‘ûÿL�PöI‰ÀH�¦N‰àD‹%;éqÌÿÿH‹\$0H‹l$8é§ÁÿÿºH�5€¸1ÿèä�ûÿL‰æH‰Ç1Àè÷ýÿL�öé{ÁÿÿH�5¹L‰ç蜔ûÿL�åõ…Àu L‹kàM…í…ùøÿÿºH�5¸Á1ÿè‘�ûÿL‰â1öH‰Ç1Àè¢ýÿL�«õé&ÁÿÿH�5»¸L‰çèG”ûÿL��õ…Àu‘L‹kàM…í…†øÿÿÇD$téòÀÿÿI‹EI‰ÅH‹H…À„ úÿÿHƒ8I‰Åuäéþùÿÿ�‹D$0 D$8„ÚùÿÿH‹óL�-ìH…À„ØùÿÿHƒxtM‹mI‹EH…Àuìé¿ùÿÿHƒxuç1ÿºH�5]ÀèÈ�ûÿ1öH‰Ç1ÀèÜýÿM‹mL�áôI‹EH…À…fÿÿÿé|ùÿÿºH�5ÜO1ÿèŒ�ûÿL�µôI‰ÀH� N‰àD‹% é5÷ÿÿºH�5··1ÿèX�ûÿL��ôI‰ÀH�×ÿN‰àD‹%léaöÿÿH‰€ éÛ¿ÿÿ¿ èÑüÿH�=JÿÇH‰Æ‹‹ÿƒøƒÐÿH‹ÇÇFH‰F‹°þ‰FH��©H‰Féuüÿÿ蘢üÿÇD$pé{¿ÿÿ¿¾(蜙ûÿH�=rüÿL�ÞóL‰ H‰x I‰EéN¿ÿÿH…öHEÆé+îÿÿ¿ è8üÿÇC‹üþH‰Õ ƒúƒÒÿI‹ÔL‰hÇ@H‰P‹þ‰Pé»óÿÿºH�5о1ÿE1äè8ŽûÿH‹T$8L‰é1öH‰Ç1ÀèDýÿéhøÿÿèZŽûÿL‰çè’êüÿL�;óH‰D$pé±¾ÿÿºH�5ݾ1ÿèî�ûÿL‰ê1öH‰Ç1Àèÿÿüÿ1ÿèXêüÿL�óH‰D$péw¾ÿÿ¿Påtdè=êüÿL�æòH‰D$pé\¾ÿÿ¾E1Àº1ÀL�¬$°H� 4>L‰ïèæ˜ûÿL‰ïè®�ûÿH‰ÆéIÊÿÿL‰%ÿ M‰åé ÈÿÿH‰ð I‰ÅH‰\$8é4ùÿÿL�hIÑíI�}è#�ûÿH‹=´ö1ÒL�còL‰(L�@¶HƒÇ�qЃé7ƒáƒþ GñÁâIƒìòAöÄuÛAˆM…ä„*äÿÿIƒÀ1ÒëÇóúHƒìHƒÄÃ%F%s: file not recognized: %E %P:%pS: ignoring invalid character `%s'%s %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: can not create hash table: %E %P:%s: file format not recognized; treating as linker script out of dynamic memory in yyensure_buffer_stack()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 found%F%P: failed creating section `%s': %E %F%P: illegal use of `%s' section %F%P: output format %s cannot represent section called %s: %E %F%P: bfd_link_hash_lookup failed: %E warning: INSERT statement in linker script is incompatible with --enable-non-contiguous-regions. %F%P: %s not found for insert %F%P: invalid hex number `%s' %P: warning: %s contains output sections; did you forget -T? %P:%pS: warning: redeclaration of memory region `%s' %P:%pS: warning: memory region `%s' not declared %P:%pS: warning: --enable-non-contiguous-regions makes section `%pA' from '%pB' match /DISCARD/ clause. %P:%pS: warning: --enable-non-contiguous-regions may change behaviour for section `%pA' from '%pB' (assigned to %pA, but additional match: %pA) %F%P: 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 --warn-execstack-objects Generate a warning if an object file requests an executable stack --warn-execstack Generate a warning if creating an executable stack (default) --no-warn-execstack Do not generate a warning if creating an executable stack --error-execstack Turn warnings about executable stacks into errors --no-error-execstack Do not turn warnings about executable stacks into errors --warn-rwx-segments Generate a warning if a LOAD segment has RWX permissions (default) --no-warn-rwx-segments Do not generate a warning if a LOAD segments has RWX permissions --error-rwx-segments Turn warnings about loadable RWX segments into errors --no-error-rwx-segments Do not turn warnings about loadable RWX segments into errors --audit=AUDITLIB Specify a library to use for auditing -Bgroup Selects group name lookup rules for DSO --disable-new-dtags Disable new dynamic tags --enable-new-dtags Enable new dynamic tags --eh-frame-hdr Create .eh_frame_hdr section --no-eh-frame-hdr Do not create .eh_frame_hdr section --exclude-libs=LIBS Make all symbols in LIBS hidden --hash-style=STYLE Set hash style to sysv/gnu/both. Default: -P AUDITLIB, --depaudit=AUDITLIB Specify a library to use for auditing dependencies -z combreloc Merge dynamic relocs into one section and sort -z nocombreloc Don't merge dynamic relocs into one section -z global Make symbols in DSO available for subsequently loaded objects -z initfirst Mark DSO to be initialized first at runtime -z interpose Mark object to interpose all DSOs but executable -z 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 output as error (default) -z text Treat DT_TEXTREL in output as error -z notext Don't treat DT_TEXTREL in output as error (default) -z textoff Don't treat DT_TEXTREL in output as error (default) -z notext Don't treat DT_TEXTREL in output as error -z textoff Don't treat DT_TEXTREL in output as error %F%P: bad --unresolved-symbols option: %s %F%P: %s: error loading plugin: %s %F%P: unrecognised option: %s %F%P: -r and %s may not be used together %X%P: error: duplicate retain-symbols-file %F%P: bfd_hash_table_init failed: %E %F%P: bfd_hash_lookup for insertion failed: %E %P: `-retain-symbols-file' overrides `-s' and `-S' %P: SONAME must not be empty string; keeping previous one %F%P: invalid common section sorting option: %s %F%P: invalid section sorting option: %s %F%P: invalid argument to option "--section-start" %F%P: missing argument(s) to option "--section-start" %F%P: bfd_hash_lookup failed: %E %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: no file/directory name provided for map output; ignored %P%F: cannot create name for linker map file: %E %P: SONAME must not be empty string; ignored %P: missing --end-group; added as last command line option %F%P: -F may not be used without -shared %F%P: -f may not be used without -shared Shared library control for HP/UX compatibilitySpecify target for following input filesForce common symbols to be definedForce group members out of groupsUndo the effect of --export-dynamicEnable support of non-contiguous memory regionsenable-non-contiguous-regions-warningsEnable warnings when --enable-non-contiguous-regions may cause unexpected behaviourAuxiliary 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 Write a linker map to FILE or DIR/.mapUse 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 listRead export dynamic symbol listWarn about duplicate common symbolsWarn if global constructors/destructors are seenWarn if the multiple GP values are usedWarn only once per undefined symbolWarn if start of section changes due to alignmentWarn if outpout has DT_TEXTREL (default)Warn if an object has alternate ELF machine codeReport unresolved symbols as warningsReport unresolved symbols as errorsInclude all objects from following archivesUse wrapper functions for SYMBOLUnresolved SYMBOL will not cause an error or warningPush state of flags governing input file handlingPop state of flags governing input file handlingControl how orphan sections are handled.Show discarded sections in map file output (default)Do not show discarded sections in map file output\%03o?*[../../ld/ldlang.celf32-bigelf64-bigelf32-littleelf64-little%F%P: internal error %s %d %F%P: target %s not found Stack now %d%F%P:%pS: %s in %s %F%P:%pS: %s %F%P: EOF in comment ldlex.l in script in expression%F: macros nested too deeply /DISCARD/,:.init.fini-l%F*default*-pie--shared--library=%s%P: %s: missing argument nodefinitionsnosymbolicpure-text--defsym%F%P: invalid number `%s' Usage: %s [options] file... Options: @FILERead options from FILE %s: supported targets:%s: supported emulations: ELF emulations: both Report bugs to %s ignore-allreport-allignore-in-object-filesignore-in-shared-libs%P: %s: duplicated plugin %F%P: bad -plugin-opt option pass-through=%s%c%s%X%P: %s: %E %F%P: -shared not supported %F%P: -pie not supported descendingascending.text-segment.rodata-segment.ldata-segmentC++typeinfo name for*typeinfo for*operator new*operator delete*P,placewarndiscard%s/%s.map%P: unrecognized option '%s' %s-%s%s%s-%ca.outKEYWORDARCHSet architecturemri-scriptRead MRI format linker scriptdcdpdependency-fileWrite dependency fileforce-group-allocationSet start addressExport all dynamic symbolsno-export-dynamicenable-non-contiguous-regionsEBLink big-endian objectsELLink 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 librariesdycall_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-timeMapFILE/DIRno-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 listexport-dynamic-symbolExport the specified symbolexport-dynamic-symbol-listwarn-commonwarn-constructorsno-error-execstackwarn-execstack-objectsno-warn-execstackno-error-rwx-segmentsno-warn-rwx-segmentswarn-multiple-gpwarn-oncewarn-section-alignwarn-textrelwarn-shared-textrelwarn-alternate-emwarn-unresolved-symbolserror-unresolved-symbolswrapignore-unresolved-symbolpush-statepop-stateprint-memory-usageReport target memory usageorphan-handling=MODEno-print-map-discardedÆ{ûÿp{ûÿ�{ûÿ€{ûÿh{ûÿÆ{ûÿ {ûÿ«ŸûÿÀžûÿm¨ûÿX¨ûÿ:¨ûÿ%¨ûÿª©ûÿ$©ûÿ—¨ûÿ‚¨ûÿ¨ûÿû§ûÿæ§ûÿѧûÿ¼§ûÿ§§ûÿ’§ûÿ}§ûÿh§ûÿS§ûÿ>§ûÿ)§ûÿ§ûÿÿ¦ûÿê¦ûÿÕ¦ûÿÀ¦ûÿ«¦ûÿ–¦ûÿ�¦ûÿl¦ûÿW¦ûÿB¦ûÿ-¦ûÿ¦ûÿ¦ûÿî¥ûÿÙ¥ûÿÄ¥ûÿ¯¥ûÿš¥ûÿ…¥ûÿp¥ûÿ[¥ûÿF¥ûÿ1¥ûÿ¥ûÿ¥ûÿò¤ûÿݤûÿȤûÿ³¤ûÿž¤ûÿ‰¤ûÿt¤ûÿ_¤ûÿJ¤ûÿ5¤ûÿ ¤ûÿ ¤ûÿö£ûÿá£ûÿ™œûÿ„œûÿoœûÿZœûÿEœûÿ0œûÿœûÿœûÿœûÿñ›ûÿÜ›ûÿÇ›ûÿ²›ûÿ�›ûÿˆ›ûÿs›ûÿ^›ûÿI›ûÿ4›ûÿ›ûÿ ›ûÿõšûÿàšûÿËšûÿ¶šûÿ¡šûÿŒšûÿwšûÿbšûÿMšûÿ8šûÿ#šûÿšûÿù™ûÿä™ûÿÏ™ûÿº™ûÿ¥™ûÿ�™ûÿ{™ûÿf™ûÿQ™ûÿ<™ûÿ'™ûÿ™ûÿý˜ûÿ™ûÿè˜ûÿÓ˜ûÿ¾˜ûÿ©˜ûÿ”˜ûÿ˜ûÿ'™ûÿj˜ûÿU˜ûÿ@˜ûÿ+˜ûÿ+˜ûÿ˜ûÿ˜ûÿ˜ûÿì—ûÿ×—ûÿ—ûÿ­—ûÿ˜—ûÿƒ—ûÿ´¢ûÿ¢£ûÿ�£ûÿx£ûÿ·£ûÿb—ûÿ\£ûÿ^•ûÿ^•ûÿÌ£ûÿd¡ûÿG£ûÿ2£ûÿ£ûÿ£ûÿó¢ûÿÞ¢ûÿÉ¢ûÿ®œûÿŸ¢ûÿŠ¢ûÿu¢ûÿ`¢ûÿK¢ûÿ6¢ûÿ!¢ûÿ ¢ûÿ÷¡ûÿâ¡ûÿÍ¡ûÿ¸¡ûÿ£¡ûÿŽ¡ûÿy¡ûÿn—ûÿO¡ûÿ:¡ûÿ%¡ûÿ¡ûÿû ûÿæ ûÿÑ ûÿ¼ ûÿ§ ûÿ‰ ûÿk ûÿM ûÿ+ ûÿ  ûÿïŸûÿÍŸûÿpžûÿ*žûÿb—ûÿ^•ûÿžûÿžûÿð�ûÿû ûÿÒ�ûÿ´�ûÿš�ûÿv�ûÿf�ûÿO�ûÿ,�ûÿb—ûÿ^•ûÿ^•ûÿ �ûÿîœûÿÜûÿÑžûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ>—ûÿ5¬ûÿ5¬ûÿ5¬ûÿ5¬ûÿ)¬ûÿ5¬ûÿ5¬ûÿ5¬ûÿ ¬ûÿ5¬ûÿ5¬ûÿ5¬ûÿ5¬ûÿp¬ûÿP¬ûÿ5¬ûÿÀ³ûÿ0´ûÿà³ûÿð³ûÿɳûÿɳûÿɳûÿÓ³ûÿà³ûÿžÂûÿ<ÂûÿTÂûÿlÂûÿ|ÂûÿüÁûÿ¤ÆûÿÜÈûÿ¤Æûÿ¤ÆûÿlÈûÿ¤ÆûÿlÇûÿ¤ÆûÿLÇûÿ¤Æûÿ¤Æûÿ¤Æûÿ,ÇûÿäÆûÿ”Æûÿýáûÿ,åûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿ„åûÿBåûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿ–áûÿýáûÿˆëûÿýáûÿýáûÿýáûÿ8ãûÿÔóûÿS÷ûÿýáûÿãûÿýáûÿýáûÿ=÷ûÿ*÷ûÿ ÷ûÿÚöûÿýáûÿýáûÿƒäûÿÁöûÿûõûÿýáûÿâõûÿýáûÿÊõûÿ€õûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿ,õûÿòôûÿÐôûÿÁôûÿHôûÿçóûÿèÝûÿÐãûÿDãûÿýáûÿýáûÿ®ôûÿèÝûÿŽôûÿqôûÿýáûÿeôûÿDãûÿ©ùûÿ�ùûÿ‡ùûÿqùûÿýáûÿeùûÿ ùûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿýáûÿ„øûÿxøûÿbøûÿ,øûÿ÷÷ûÿãûÿë÷ûÿèÝûÿÓ÷ûÿÄ÷ûÿµ÷ûÿ¦÷ûÿ8ãûÿúûÿ§ÿûÿèÝûÿúûÿñùûÿåùûÿÖùûÿÇùûÿ¸ùûÿMúûÿAúûÿ.úûÿúûÿyëûÿkêûÿœäûÿìéûÿâìûÿÐãûÿ•ìûÿQìûÿBìûÿ5ûûÿ5ìûÿýãûÿìûÿìûÿíëûÿÕëûÿ½ëûÿ¥ëûÿ™ëûÿäûÿ„éûÿ–ÿûÿˆïûÿuïûÿ$ïûÿ´îûÿ>îûÿ1îûÿçíûÿ«íûÿœíûÿ�íûÿ~íûÿoíûÿ`íûÿQíûÿBíûÿ°óûÿ‹óûÿóûÿsóûÿgóûÿ[óûÿOóûÿöòûÿçòûÿÛòûÿÏòûÿÃòûÿ·òûÿ«òûÿ†òûÿzòûÿnòûÿTòûÿAòûÿ.òûÿÓðûÿjðûÿWðûÿ?ðûÿ'ðûÿðûÿðûÿðûÿ÷ïûÿßïûÿÄïûÿ¸ïûÿuéûÿ\éûÿPéûÿDéûÿ5éûÿ&éûÿïèûÿ èûÿ”èûÿˆèûÿpèûÿdèûÿ?èûÿ“çûÿçûÿçûÿøæûÿZüÿàæûÿ¿æûÿšæûÿŽæûÿæûÿ;æûÿ÷åûÿèåûÿÙåûÿÊåûÿ¾åûÿ²åûÿŸåûÿ“åûÿµöûÿ�öûÿ…öûÿyöûÿ_öûÿQöûÿEöûÿ9öûÿcompare_sectionpop_stat_ptr !"#$%&'(()*+,-./01234567%89:;<=>?@A%B%%%%C%D%%E%%%%%%%%%F%%G%%H%%%%IJKLMNO<QRSTéUVWîóôêÕNÕNÖéÖïö÷øÑù×ú×\=êû]üýÏ  þ /ÿ ÒÐMNOQRSTCUVWØØZ4ÓC[0 >x!"y?#$%óô&'ö÷^(}`ʃÔa„Ë_b~XYZ[X\]^_`abcdefghhijklmnopqrstuvwexyz{|}ee~eeeeeeee€Xe�ttttteeeeeeeeee‚eeeeƒ„…†XYZ[X‡]^_`abcˆ‰Š‹ŒŒijklmn�Ž��‘’“”•‰–—˜™š›œ�žŸ‰ ‰‰‰‰‰€X‰¡‰‰‰‰‰‰‰‰‰¢‰‰£‰‰¤‰‰‰‰ƒ„…¥XXXXX¦XXXXX§X¨/X‹ŒŒXXXªXXððð<ºN4NCd»8OeNPN9kñfñ888gXQXXt88uC€vŠ�ÕÕ‹ÕÕ0Œ3ÕñwñXXXXXXXXX¦XXXXX§X¨ÖX‹ŒŒXXXªXXRNzNSN{NØ×¿8×°N8NÖT8|C888ÀXUXX�88n“o±p‡ˆŽØÙq”åªæC‰rsXXXX«¬­® ¯°±²³´µ¶¶·¸+¹-º»¼½¾¿À³³³³³Á³ÂÃij³ÅƳ³³³³³Ç³È³ÉÊ˾Ìͳ³³³Î³ÏÐѳÒÓ³³³IJKÔÕNÖ=Ú>×ÚÚN�N´±�±m‘’8±µ±ªnª88¶ßªìª¹±—hà˜™ªÄ·üíš›œÚÛ�ž¸ÜÕŸýÛÜÕNÖÝÚÞ×ÚÚððð±±±ñôñ+õ,öªªªZ±'ñ÷ñøÕ(ò[ÂÅñ3ñ 4 ÆÃSTÉßñ5ñÛÜÕNòÖuàÚá±×ÚÚªllljININNkNrNÕs8lâ8DtD88$8}Õ~ÕÇmIÞIßÈUeàãäåVfæçDvDáâÕNmÖè²Úét×ÚÚlllêëìíNî%ïðððAAA8DDDDðñ88òNóNñôñõÞ8ßö÷øàù88CúDDDDûáâèèèñüñýèèèèèèNCNNþNN.Nÿ8888-8888èèèèèè999lll  999999b NcNdGD D 8efô88ÕÕ999999@@@ÕDDABABAACNDND Cý!8"#E$%88&'ABABAA(C)D*D+C,-./EGGG012345GHGIGG6J789K:;J=>?LM@ABJC<DEFGHGNGNGGJJKLMNOJPIQRSJjjjTUVWXYjjjjjjZ[\]^_`abefijklmnocgpqrstjjjjjj§§§duhvwx§§§§§§yz{|}~€�‚ƒ„…ˆ‰Š‹Œ�Ž��†‘’§§§§§§«««‡“”•–—««««««˜™š›ÕÕÕžŸ ¡¢£¤¥¦§¨ª«¬©­®¯««««««¯¯¯°±²³´µ¯°¯±¯¯¶²·¸¹³�œ²º»¼½¾¿ÀÁ²ÂÃÄÅÆÇȯ±¯±¯¯É²ÊËÌÍβÏÐÑÒÓ²999ÔÕÖרÙ999999ÚÛÜÝ Þ ßàáâãåæçäèéêëìíîïð999999ñòó ô §§§õö÷øùú§§§§§§ûüýþŽÿŽÕÕ     §§§§§§ŽŽ«««««««««�� !"#$%&'()*+,-./0««««««123�4�¯¯¯56789:¯±¯±¯¯;²<=>?@A²BCDFGHIE²JKLMNOP¯±¯±¯¯Q²RSTUV²WXYZ[²\]^_`abcdefghijknopqrstluvwxmyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž�“”•–—˜™š›œ��‘žŸ¢ ’£¡¤¥¦§¨©ª«¬­®¯°±²´µ¶·¸¹º³»¼½¾¿ÀÁÂÃÅÆÇÈÉÊËÄÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]Y^_`abcdeifjkZglmnopstuqvwxhyz{|}~€r�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ     PPPPPPPPPPP©©©©©©©©©©©ÙÙÙÙÙÙÙÙÙÙÙÝÝÝÝÝÝÝÝÝÝÝäääääääääæææææææææææ222222225ÐÏÎ55Í588Ì88888¦ËÊɦ¦¦¦¨¨¨¨¨¨¨¨¨¨¨ªªÈªªªªª¬Ç¬¬¬¬¬¬¬¬¬®Æ®®®®®®®®®ÒÅÒÒÒÒÒÒÒÒÒÓÄÓÓÔÔÃÂÔÔÁÔÔ!!À!!!!!##¬¿¬¬¬¬¬¬¬¬¬®¾®®®®®®®®®Ò½ÒÒÒÒÒÒÒÒÒÓ¼ÓÓÔÔ»ºÔÔ¹ÔÔ¸·¶µ´³²±°¯®­¬«ª©¨§¦¥¤£¢¡ Ÿž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{zyxwsrqponmlkjihgdcba`_^]\[ZYXWTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ÿþüûúùø÷öõóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³ÔÕ¯®­¬«ª©¨§¦¥¤£¢¡ Ÿž�œ›š™˜—–•”“’‘�©�Œ‹Š‰ˆ‡†…„ƒ‚�€|{zyxwvuqpoihga`_^]\YXWVURQPOMLKJHFEDCBA@?<;:76210/*)&"1   ÿþûúùóòñðïîëêéèçäãâáÞÝÜÛÚÙçãÕ41ÑÎÍÌÁ¾½¼F><;­©7¥¤£¢¡ –•†…‚icYXWVF;:ç7ã643ç1.-,+*) õíìëçåãd&++^:&--:/!//zd^/1z21//23Ò64064J0430"2Ò0h;99<=yf<#;<<9h=yJ@f�@@�f@@@kk@@mm{@‘|Δ$|”Î{|‘ „ (((ˆÁpŠp¶~Á[p~qpq[Š(~(ppq~ q Žqq’޶’Ž˜’àÖ˜Þß„˜ˆ%(Ž( & rr�rrs�sàßÅr'ÖtstÞrr�@sstÅ s ™tt�›�¾�——™)*�›¾@—�� __�š�¼¼šÊŠšš�À½½¼ŠÊ��½üÀ½À¿ž�üžž¿Ê¿žžž+,žž¿-מ/0'''ÉÍËèèQQÉÍË~×L''±L'~ÉËèXè X ËÉx xÍ1'X''±34ÌÌ‹‹‹‰jGjGH‰HŽr²ŽG‰5H‹Ž‹GGrHH—Ø—°Ì‹—jjÌ‘¡68:‘¡;<‹²‹‹=Ø>°ŒŒŒ?@ABIDIEðððAAAI#Œ#ŒFGIIHNINðJðAKANLMNONNAP#Œ#ŒQðRðASARARSTShShURVZS[_hRR`SSbhh\\\lllcde\\\\\\…f%…%…hljlko%…pr…s%%%uvwz\\\\\\gggt{|l~lggggggyg.g.g€g~.�u.„…yg‡‰..Šv‹ggggggŒg�gŽg�g�t‘’“gooo”•–—˜šoooooo›oœ�žo ¡o¢¤¥oo¦§¨o©¡ª«¬­®oooooo¯o°²³´¶o¸®¹º»o‡‡‡¼½¾¿ÀÁ‡‡‡‡‡‡ÂÃÄÅÆÇÈÉÊÍÎÑÒÓÖ×ÙÛÌÐÜÝÞßà‡‡‡‡‡‡¦¦¦ÌáÐâã䦦¦¦¦¦åæçèéêëíîïðñóõ÷øùúûüýþô¦¦¦¦¦¦®®®ô  ®®®®®®   !"$&'($*,.®®®®®®»»»/13456»»»»»»7»89:»»;<=>?BCD»EFGHIKL»»»»»»M»NOQRT»UVXZ[»999\]^_`a999999bcdg9h9ijklnpqrntvwyz|~€999999�‚ƒ9„9§§§…†‡ˆ‰Š§§§§§§�Ž��§‘§•–—›œ�ž ¡¢£¤¥§¨©«¬§§§§§§­®¯§±§«««²´µ¶·²««««««¸¹º»«¾«ÀÁÂÃÄÆÇÈÉËÍÎÏÐÑÓÔÕ««««««×ØÙ«Ú«¯¯¯ÜÝÞßà⯯¯¯¯¯ã¯äæçèéê¯ëíîðñòóî¯ôõö÷úüý¯¯¯¯¯¯þ¯ÿ¯  ¯\\ \\\ \\\\\ \\\\\\ !"$%'(),-./035789:;\<=>?BCDEFGHJKMPWYZ[\]^\\\ll_lllLlllll`lLabdcLelllllcfghijklmortuvwxyz{|}~x€�‚ƒ„l…†‡ˆ‰Š‹Œ�Ž�ˆ�‘’”•–—˜™šlll›œ�Ÿ¢£¤¥§¨©ª«¬­®¯°±´µ¶·¸¹º»¼½¾¿ÀÂÅÆÇÈÊËÌÍÎÏÐÑÒÓÔÕÖרÙÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ     "#$%&'(*+,-/0123452679;<=>?A@BC2@EFGHIJKLIMNP@RSTUVWXYIZ[\]^bcefghinopqrstuvz{}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—™šœ�žŸ ¡¢¤¦§©ª¬­®¯°±²³´µ¶·¸¹»¼½¾¿ÀÁÂÃÄÅÇÈÊËÌÍÎÏÑÒÓÕÖרÙÚÛÜÝÞßáâäåæçèêëìíîïðñòóôõö÷ùúûüþ      !!!!!!!"""""###########$$$$$$$%%%%%%%%%%&&&&&&&&&&''''''''''((()))) ))********++++++++,, ,,,,,--. ........./ /////////0000000000111222222333333333344444444445ÿ5555555556þ666666666ýüúù÷öõóòñðïîíìëêéèçæåäãâáßÞÝÜÛÚÙØ×ÕÓÒÑÏÎÍËÊÉÈÇÅÄÃÂÁÀ¿½»¹¸·¶µ³¯®­¬«ª©¨§¦¤£¢ Ÿž�œ›š™˜—–”“’��Љˆ‡†…„ƒ‚�€~}|{zyxwvutsrqolkjihgfedcb`_^]\[ZYXWVUTSRQPONMLKJHGFEDCBA@?>=<9876543210/-,+*)('&$"     ÿýüûúùø÷öõôòñðïîíìëêéèçæåäãâáàßÞÝÜÛÕÔÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³°¨¥¤£¢¡ Ÿž�œ›š™˜–•”“’‘���Œ‹ˆ‡†„ƒ‚�€}|{zywvutqponigfedcba`^]\ZYWVUTPOK?61.-,+*)('&%$#"!     ÿþûúùø÷óæãÝ×ÕÓÑÐÏÆÄù´²°¯­¬¤£¢¡ Ÿ�œ–•“‚}xwvulba[ZYWUTOMHGFEBA?>875,$"!R£ôF˜ê<prŽà2„T U U Q U : L ÅU YU U 8 7 6 bé¡U X5 cbwbrjr q# + ¤^¡œ£ ) ³, '  ú U �U ? U ; U U U û 2  U : # 5 óU nU U ! U A»!�U U È ËU ]œ¥êî÷   §iÆÀ �U U �ï U �U U ™ž­;Œ ²«ì¿± Ç  ¾‚þ ¨ î ê Þ ä ÇU U U U ! õ U  ‰U  U #‘š ¦˜” ñ í ðï U U â“ä&ã§à Ð Ì UÎ  U U U U ÿ ÉÊÆU U  U ÜU U —ù U U ø â ð ß é �ë â à Ú è Ø å å Õ ¢Ü Ø Ô Ö à × åÝ Â Ò ´Ï Ñ Å ôÐ Ò Æ Ô Ô È Õ Î Å ¹ À Ì » Î Ì º º ¹ š � ¢ “ U U Þ U ¦ U _U U U U » èšU U U 69‰º à�´ ² ÜÊÍ» ¼ ¯ ¹ · ­ £¢ «   x« ­ ° ¥ ¬ ˜ ¬ ® Ð{ ,ö› © ˜ ¢ ,¤ › ™ “ ÿ¡ ‘ ž ž Ž î• ‘ � � ™ � ÷– { ‹ 5†‹ ‰ ~ ;‰ ‹  � � � Ž ‡ M~ r y … t ‡ … s s r S V [ L “– U Çûk t i h q u d e c t g o p n o Z > E < ; B F 7 8 6 E 9 @ A ? @ - c b ÇÅTU U M I U R S I G Q Q N ? 8 O N E J : ? E = G D 1 A 8 4 9 , ; / 8 6 8 4 + % & + '  - #   + %     $  $ %  #    ó û  ‹ ú     ü  )  ü  ÿ ø ü    ô õ ÷ ì ý ñ ì ô û ü ý Ð Ø ì è ô ñ ò ç ñ ñ î ß Ø ï î å ê Ú ß å Ý ç ä Ñ á Ø Ô Ù Ì Û Ï Ø Ö Ø á Ó Ê Ä Å Ê Æ » Ì Â ¿ ¾ ¹ Ê Ä º · ½ · à ³ Ã Ä ²  ¶ º ­ ’ š ® Y· ¶ ª ´ « £ ² ° ¯ § ž Ÿ ¢ ‚ ;Š ‰ ~ ‡  x … ƒ ‚ { s t v VþE• Ž ‘ Œ ˜ Š � † … y ‰ ‚ |  � ~ Œ € Š y ‹ x y … u ‡ u w v ƒ d y l t l u n y r u e i X m q ` g i l g E A h i _ \ W c \ R F V F : 4 4   +   ãäÞàßÊÅ·’}�–“‹ˆŽ„Qe¡½°Ë媶ªËÂÿCZLPSbRpr|v�}‹‘–Š‘„�§˜¡¦®¯——ÄÂÉÆÙHÉÖÎîÈÃÏÓä™ÖàØé!üþ%.2)-:7(5JEK8?RTPLG[YV^XZdilYfp_eDStyfmo€…tƒ…}‰o‡��ƒ“�‹Ÿ�”�£œt‚“£•¥²¦™¨ª¡‘£°¬—£·»ÁÁ®»ÎÌÈÄ¿ÓÑÈÏÉËÔâÚÇÔÜËѯ½ÎØØÝêïòÂÊÐÌ;Üßïþîùóê  ûýþ  %)&0*8+*9)=4DGGH;KH?M;PF<PV-@RaQ[VNikknm_absoffu]dyfgyuov�…‚ŒŒj}‰��qvsª«¢Ÿ¤–¨�¦� ž’­¤¨©žÁ¤ÃÁ³¯Ç±Ãű¯ÒÔÔÑÖÈÖ¿ÚÎÕÐÄÅÆÞßÊÈìíãõêóÜóòæòöýùí ï þõ ÷  õó&* +(,:;-;/04A>B9HMJ,M[?PHQUTHTJY;LM`V^XXefXfZ[_gdh_n…oQnhntqngsxŠŠƒŽ‚’“‹Šž”“¡ƒU œ �“¢š¡—«�¦ ¦­ª§ §¤´´¬¹«µ¶®­Á¸·Å§©·Å½À¾ÃÊÔÌØÔÞâãáâãàËÐâåéàðôòÔÙçõíðîîò÷îúöþéû ü ô÷ +"/"03*;+;3#65&EC57ED8H*A<23REGBCSFIN>/QASN^PS7YTJKj]_Z[n`chXIi[z{qpartpwuVwˆi{}{_€r‘’ˆ‡x‰‹ˆ��nŠ�•”Ÿ™šˆ¢¤˜– Ÿ©©›ž¦¥¯©ª˜²´¨§£´º³´²Á·¶¼²¾Ä½¾·³ÄÊÃÄÂÑÇÆÌÉÐÆÊ×ÏÛÉÏØÎàÕÜÒÖãÛçÕÛéÞÞëîäêàååîôééöùïõëïàÿíóðûæóøéöüù üÿ %$()!#)%+&')*U R]hs~‰’�¥­µ½ÈÐÛæñõþ    # . 9 = F Q \ g r        !!g!ooooo!!!!!!!!!!o!""#$%$$gg&$»»»»»$$$$$$»»»»»$$$$$$$'())))*+!!,ggA-ooo!!!!o!!!oo!!!!!!!!!!!!!!!!!!!!o!‡-""#$$../$¯¯$$¯¯$$$$$$$$$$$$¯$¯¯$$$$$$$$$$$$012222*+!,-!o!!!!!!!!o!!!!!!!!!!!!!!!!!!!!!!!!!!"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$222!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$3$$$$$$$$$$$$$$$4$$$$$$$222!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$53$$$$$$$$$64$$$$222!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$$22!!!!!!!!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!µµÊÉǸ· ǵ&,+"#$µ%-.'(!µµµµµµµµµµµµµµµµµµµµ µ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   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRyylexopzƒq Allocating common symbols %lx%016lxGLOBAL_load basesubsection alignment*?[Java%10lu GB%10lu MB%10lu KB %10lu B.ctf%pB (%pT) .exports Set Symbol %G .stabstrCOMMON.startof.%sphdr flagsphdr load addressNONE__start_%s%pI %F ALL0x%V %W %pB %W (size before relaxing) BYTESHORTLONGSQUADBEFOREAFTERFail 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 %X%P: address 0x%v of %pB section `%s' is not within region `%s' %X%P: %pB section `%s' will not fit in region `%s' %F%P: could not define common symbol `%pT': %E Common symbol size file %P: %s: error in plugin cleanup: %d (ignored) %F%P:%pS: non constant or forward reference address expression for section %s %X%P: internal error on COFF shared library section %s %F%P: error: no memory region specified for loadable section `%s' %P: warning: no memory region specified for loadable section `%s' %P: warning: start of section %s changed by %ld %F%P:%pS: nonconstant expression for %s %P: warning: dot moved backwards before `%s' %F%P: can't relax section: %E %F%P: Output section '%s' not large enough for the linker-created stubs section '%s'. %F%P: Relaxation not supported with --enable-non-contiguous-regions (section '%s' would overflow '%s' after it changed size). %F%P: invalid character %c (%d) in flags %X%P:%pS: section has both a load address and a load region %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 %X%P: unable to find version dependency `%s' %F%P: CTF section emission failed; output will have no CTF section: %s %F%P:%pS: error: align with input and explicit align specified %F%P: invalid origin for memory region %s %F%P: invalid length for memory region %s %F%P: %s: plugin reported error after all symbols read As-needed library included to satisfy reference by file (symbol) %P: warning: CTF section in `%pI' not loaded: its types will be discarded: `%s' %P: warning: CTF output not created: `%s' %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 %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: error: unplaced orphan section `%pA' from `%pB' %P: warning: orphan section `%pA' from `%pB' being placed in section `%s' %F%P: cannot link with CTF in %pB: %s %F%P: CTF linking failed; output will have no CTF 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 %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 %X%P: different relocs used in set %s %X%P: different object file formats composing set %s SORT_BY_NAME(SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT(SORT_BY_NAME(0³ûÿp²ûÿˆ¶ûÿ·ûÿx¶ûÿеûÿ0³ûÿ0³ûÿx´ûÿ0³ûÿP´ûÿø³ûÿ0³ûÿ¨³ûÿx³ûÿسûÿ°ÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿ ÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿ`ÆûÿÆûÿÆûÿ`ÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿpÆûÿÆûÿÆûÿÆûÿÆûÿ�Æûÿ€ÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿ ÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿ`ÆûÿÆûÿÆûÿ`ÆûÿÆûÿÆûÿÆûÿÆûÿÆûÿpÆûÿÆûÿÆûÿÆûÿÆûÿ�Æûÿ€Æûÿ˜üÿ°üÿhüÿÀüÿÐüÿüÿ°üÿ0üÿpüÿÐüÿàüÿèüÿ°üÿ0üÿüÿxüÿqüÿOüÿÃüÿ`üÿ‚üÿ@üÿüÿœüÿ|üÿ\üÿ<üÿTüÿload_symbolspush_stat_ptrlang_size_sections_1print_data_statementGNUTARGET%s: GNU ld %s version 2.35.2-72.el9 Supported emulations: %s %F%P: please report this bug ../../ld/ldmisc.c0x%s%pB: in function `%pT': %pB:%s:%pT(%pA+0x%v)[%s]%s generated%s(%s)(%s)%s%s+0x%v (type %s)%s:%uno symbol%p%ld%lu%%%c%u%s%X%P: warning: %P: error: %pS SYSLIB ignored %pS HLL ignored cannot find script file %s opened script file %s ../../ld/ldmain.c; %D: first defined hereusing multiple gp values%P: %C: %s%s %P: %s%s %P: %pB: %s%s %X%H:+%v%P: %pB: reference to %s %P: %pB: definition of %s %X%P: cref alloc failed: %E ../../ld/ldwrite.c%X%P: %s ../../ld/ldexp.c%F%P:%pS %% by zero %F%P:%pS / by zero MAXPAGESIZECOMMONPAGESIZE../../ld/ldcref.c../../ld/plugin.c.gnu.linkonce.t. (symbol from plugin)NULL TREE %s+0x%vPROVIDE (%s = ("", ASSERT (, %s) (%s)0x%V %pT DEFAULTPROTECTEDINTERNALHIDDENWEAKDEFWEAKUNDEFunknown LTO kind value %x$SYSROOT/usr/lib/usr/bin/ldscriptsattempt 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 elf_x86_64/usr/share/locale--sysroot=x86_64-redhat-linux-gnuCOLLECT_NO_DEMANGLE_init_finiLDEMULATION%F%P: missing argument to -m -mips1-mips2-mips3-mips4-mips5-mips32-mips32r2-mips32r6-mips64-mips64r2-mips64r6-m486Supported emulations: *ABS*_onload%F%P: %s: plugin error: %d built in linker scriptusing external linker script:using internal linker script:%F%P: no input files %P: mode %s .stab$GDB_STRINGS$$GDB_SYMBOLS$%F%P: final link failed: %E Memory Configuration AttributesLengthOriginName%-16s %-18s %-18s %s Discarded input sections %-16s 0x%s ! Cross Reference Table SymbolFile No symbols %16s: %6.2f%% \ %s %s: %P: error writing file `%s' %P: error closing file `%s' elf64bpfelf64-bpflei386pepei-i386i386peppei-x86-64elf_k1omelf64-k1omelf_l1omelf64-l1omelf_iamcuelf32-iamcuelf_i386elf32-i386elf32_x86_64elf32-x86-64elf64-x86-64UNKNOWNPREVAILING_DEFPREVAILING_DEF_IRONLYPREEMPTED_REGPREEMPTED_IRRESOLVED_IRRESOLVED_EXECRESOLVED_DYNPREVAILING_DEF_IRONLY_EXP+=-=*=/=<<=>>=&=|=||&&==!=<<>>LOG2CEILBLOCKSECTIONSSIZEOF_HEADERSMEMORYDEFINEDSEARCH_DIRMAPENTRYNEXTALIGNOFSIZEOFLOADADDRABSOLUTEMAXMINASSERTDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDORIGINLENGTHSEGMENT_START no emulation specific options. Copyright (C) 2020 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 %F%P: %pB: could not read symbols: %E %F%P: bfd_hash_allocate failed creating symbol %s %X%P: %C: multiple definition of `%pT'%P: disabling relaxation; it will not work with multiple definitions %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' %P: warning: global constructor %s used %F%P: BFD backend error: BFD_RELOC_CTOR unsupported %F%P: %pB: could not read relocs: %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 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'%X%H: dangerous relocation: %s %X%H: reloc refers to symbol `%pT' which is not being output %X%P: bfd_hash_table_init of cref table failed: %E %X%P: cref_hash_lookup failed: %E %F%P: bfd_new_link_order failed %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 %P: symbol `%pT' missing from main hash table %X%P: %C: prohibited cross reference from %s to `%pT' in %s %F%P: %s: non-ELF symbol in ELF BFD! %F%P: unknown ELF symbol visibility: %d! %F%P: unsupported input file size: %s (%ld bytes) %F%P: plugin_strdup failed to allocate memory: %s %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 %pI: no new IR symbols to claim Archive member included to satisfy reference by file (symbol) %F%P: %s: plugin symbol table corrupt (sym type %d) unknown LTO visibility value %x%P: %pB: symbol `%s' definition: %s, visibility: %s, resolution: %s %F%P: error: linker script file '%s' appears multiple times %F%P: cannot open linker script file %s: %E %F:includes nested too deeply %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' %P: have you installed the static version of the %s library ? %P: note to link with %s use -l:%s or rename it to lib%s %s: error: too many @-files encountered %s: error: @-file refers to a directory %F%P: fatal error: libbfd ABI mismatch %X%P: can't set BFD default target to `%s': %E %P: unrecognised emulation mode: %s ================================================== %F%P: --no-define-common may not be used without -shared %F%P: cannot open map file %s: %E %F%P: cannot create split section name for %s %F%P: clone section failed: %E Linker script and memory map Memory region Used Size Region Size %%age Used %F%P: cannot open dependency file %s: %E %P: link errors found, deleting executable `%s' %F%P: %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 » üÿ» üÿ± üÿ± üÿ» üÿ» üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ@üÿ@üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿJüÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿ± üÿTüÿ± üÿ± üÿ± üÿsüÿ± üÿ± üÿœüÿ± üÿJüÿ@üÿÏüÿx üÿ@ üÿ@ üÿ@ üÿ üÿ¬ üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿ¯ üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿú üÿú üÿëüÿüÿú üÿú üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿ"üÿU üÿU üÿU üÿU üÿU üÿ:üÿjüÿ¾ üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿÑ üÿU üÿU üÿU üÿU üÿU üÿU üÿU üÿüÿU üÿU üÿU üÿHüÿU üÿU üÿwüÿU üÿ™üÿ±üÿ”üÿÎüÿÎüÿÎüÿÎüÿÎüÿÎüÿüÿÎüÿÎüÿÎüÿÎüÿÎüÿÎüÿÎüÿÎüÿªüÿdüÿóüÿH5üÿ6üÿ`6üÿ 7üÿ�4üÿ�4üÿ�4üÿø4üÿp7üÿ°7üÿo@üÿD@üÿû@üÿØ@üÿµ@üÿ’@üÿCCüÿ÷BüÿX;üÿX;üÿÐBüÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿèAüÿ;AüÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿX;üÿ,AüÿAüÿ«>üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ½=üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿè;üÿè;üÿJ>üÿ�:üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ 9üÿ->üÿ 9üÿ =üÿ CüÿñBüÿØ9üÿØ9üÿØ9üÿÐBüÿÇBüÿØ9üÿ§BüÿØ9üÿvBüÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿSBüÿØ9üÿ0BüÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿØ9üÿBüÿHXüÿðWüÿàWüÿ€WüÿpXüÿìhüÿtiüÿ´iüÿôiüÿ$jüÿügüÿügüÿ= 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } .lbss 0 : { *(.lbss) } .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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } .lbss 0 : { *(.lbss) } .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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/libx32"); SEARCH_DIR("=/usr/local/libx32"); SEARCH_DIR("=/libx32"); SEARCH_DIR("=/usr/libx32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .plt.got 0 : { *(.plt.got) } .plt.sec 0 : { *(.plt.sec) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/i386-redhat-linux/lib32"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/i386-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .plt.got 0 : { *(.plt.got) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .plt.got 0 : { *(.plt.got) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } .lbss 0 : { *(.lbss) } .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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } .lbss 0 : { *(.lbss) } .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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } .lbss 0 : { *(.lbss) } .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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.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) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) } .got.plt 0 : { *(.got.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.bss) } .lbss 0 : { *(.lbss) } .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) } .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 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) *(.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { . = 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -shared */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z relro -z now */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { 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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rela.init : { *(.rela.init) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.fini : { *(.rela.fini) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.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.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .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*) } /* 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*) } /* 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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1. */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions. */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2. */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3. */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } /* DWARF 5. */ .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } .debug_sup 0 : { *(.debug_sup) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } %X%P: .eh_frame/.stab edit: %E %F%P: map sections to segments failed: %E %F%P: failed to strip zero-sized dynamic sections%F%P: invalid --compress-debug-sections option: `%s' %F%P: invalid hash style `%s' %F%P: invalid maximum page size `%s' %F%P: invalid common page size `%s' %F%P: invalid stack size `%s' start-stop-visibility=internalstart-stop-visibility=protected%F%P: invalid visibility in `-z %s'; must be default, internal, hidden, or protected%F%P: invalid number for -z call-nop=prefix-: %s %F%P: invalid number for -z call-nop=suffix-: %s %F%P: unsupported option: -z %s %F%P: invalid option for -z cet-report=: %s -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 cet-report=[none|warning|error] (default: none) Report missing IBT and SHSTK properties -z bndplt Always generate BND prefix in PLT entries --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) --enable-reloc-section Create the base relocation table --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%lxcreating 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 %P: warning: .buildid section discarded, --build-id ignored %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 %P: warning: --export-dynamic is not supported for PE+ targets, did you mean --export-all-symbols? use-nul-prefixed-import-tablesenable-runtime-pseudo-reloc-v2i386:x86-64i386:x64-32.debug_%F%P: looping in map_segmentssha1zlibzlib-gnuzlib-gabisysvbothundefsmuldefsmax-page-size=common-page-size=stack-size=noexecstackglobalauditstart-stop-visibility=start-stop-visibility=defaultstart-stop-visibility=hiddenglobalinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazyoriginnocombrelocnocopyrelocnorelronoseparate-codenocommonnotexttextoffnoextern-protected-datanodynamic-undefined-weaknoreloc-overflowcall-nop=prefix-addrsuffix-nopprefix-suffix-ibtpltibtshstkcet-report=bndplt%P: warning: -z %s ignored +%s __pei386_runtime_relocatorarelent: %s@%#lx: add=%li pcrel %d bit rel. __fu%d_nmth%06d.o.idata$4__nm_thnk___nm_fu%06d.o.idata$2_iname.rdata_runtime_pseudo_relocertr%06d.o.rdatamd5uuidpe-x86-64ei386pep.ca.exe___ImageBase__image_base__native__size_of_heap_commit____size_of_heap_reserve____size_of_stack_commit____size_of_stack_reserve____major_subsystem_version____minor_subsystem_version____subsystem____major_os_version____minor_os_version____major_image_version____minor_image_version____file_alignment____section_alignment____dll____dll_characteristics__NtProcessStartupWinMainCRTStartupmainCRTStartup__PosixProcessStartupwindowsconsoleposixwincexbox__loader_flags__base-filefile-alignmentmajor-image-versionmajor-os-versionmajor-subsystem-versionminor-image-versionminor-os-versionminor-subsystem-versionsection-alignmentsubsystemsupport-old-codeno-leading-underscoreoutput-defexport-all-symbolsexclude-symbolsexclude-all-symbolsexclude-libsexclude-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-timestampenable-reloc-sectionBgroupcompress-debug-sectionsdepauditdisable-new-dtagsenable-new-dtagsno-eh-frame-hdrhash-styleno-ld-generated-unwind-info  ëÿ¸ ëÿà ëÿ!ëÿ!ëÿ0!ëÿ°ëÿ€ ëÿ ëÿœ.ëÿ´.ëÿÜ.ëÿü.ëÿ/ëÿ,/ëÿ¬-ëÿ|.ëÿ.ëÿx<ëÿ�<ëÿ¸<ëÿØ<ëÿð<ëÿ=ëÿˆ;ëÿX<ëÿø;ëÿTJëÿlJëÿ”Jëÿ´JëÿÌJëÿäJëÿdIëÿ4JëÿÔIëÿÀVëÿØVëÿWëÿ Wëÿ8WëÿPWëÿÐUëÿ Vëÿ@Vëÿ,cëÿDcëÿlcëÿŒcëÿ¤cëÿ¼cëÿ 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: zero vma section reloc detected: `%s' #%d f=%d %X%P: error: %d-bit reloc in dll %X%P: can't open .lib file: %s %X%P: %s(%s): can't find member in non-archive file%X%P: bfd_set_archive_head: %E %P: can't open output def file %s %X%P: %s(%s): can't find member in archive%P: warning: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols? %P: warning: resolving %s by linking to %s enable-runtime-pseudo-reloc-v1__head_%s() -%s *%s .buildid%s%s%s%s:%s ->%s .drectve.idata$%F%P: %pB: %E .obj%s.%c.def.DEF(data)%X%P: open %s: %E %s is already loaded rel: %s .eh_frameCreating library file: %s %X%P: bfd_openr %s: %E %X%P: bfd_close %s: %E 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 .idatalib%s.dll.a%s/pe-i386ei386pe.cDllMainCRTStartup@12thumb-entryenable-extra-pe-debugdisable-large-address-awarelib%s.alib%s.lib%s%s.dlllib%s.dllIëÿàHëÿÀHëÿ Hëÿ€Iëÿ`IëÿèGëÿ`Hëÿ@Hëÿ HëÿHëÿ€HëÿàFëÿÀFëÿ�EëÿðJëÿÐJëÿ°Jëÿ�JëÿpJëÿPJëÿ8JëÿMëÿ�EëÿðLëÿÐLëÿ�LëÿpLëÿPLëÿ0LëÿLëÿðKëÿÀMëÿ MëÿØEëÿàMëÿˆMëÿpMëÿPMëÿØEëÿ0MëÿÐKëÿ°Këÿ�KëÿpKëÿPKëÿ0KëÿKëÿ Iëÿ Fëÿ€Fëÿ`Fëÿ@Fëÿ FëÿFëÿðEëÿàIëÿÀIëÿmainCRTStartupgld_i386pe_set_symbolsset_pe_nameis_underscoringpep_implied_import_dllpep_find_data_importspep_fixup_stdcallsgld_i386pep_after_open/* Script for -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); 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); } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data : { *(.data) KEEP(*(.jcr)) } .rdata : { *(.rdata) . = ALIGN(4); } .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 -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data : { *(.data) KEEP(*(.jcr)) } .rdata : { *(.rdata) . = ALIGN(4); } .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 */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 (*(SORT_NONE(.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. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); 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 (*(SORT_NONE(.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$*)) . = ALIGN(4); __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 -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 (*(SORT_NONE(.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. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); 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 (*(SORT_NONE(.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$*)) . = ALIGN(4); __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-2020 Free Software Foundation, Inc. Copying and distribution of 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 (*(SORT_NONE(.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. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); 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 (*(SORT_NONE(.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$*)) . = ALIGN(4); __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 --enable-auto-import */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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 (*(SORT_NONE(.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. See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, the content from those variables are included but the symbols defined here silently take precedence. If they truly need to be redefined, a custom linker script will have to be used. (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). In particular this means that ld -Ur does not work, because the proper __CTOR_LIST__ set by ld -Ur is overridden by a bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); 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 (*(SORT_NONE(.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__) : { . = ALIGN(4); __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 -Ur */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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-bpfle", "elf64-bpfbe", "elf64-bpfle") OUTPUT_ARCH(bpf) /* 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.sdata 0 : { *(.rel.sdata) } .rela.sdata 0 : { *(.rela.sdata) } .rel.sbss 0 : { *(.rel.sbss) } .rela.sbss 0 : { *(.rela.sbss) } .rel.sdata2 0 : { *(.rel.sdata2) } .rela.sdata2 0 : { *(.rela.sdata2) } .rel.sbss2 0 : { *(.rel.sbss2) } .rela.sbss2 0 : { *(.rela.sbss2) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.iplt 0 : { *(.rel.iplt) } .rela.iplt 0 : { *(.rela.iplt) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .sdata2 0 : { *(.sdata2) } .sbss2 0 : { *(.sbss2) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .got 0 : { *(.got) } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ .sdata 0 : { *(.sdata) } .sbss 0 : { *(.sbss) } .bss 0 : { *(.bss) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 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) } .gnu.build.attributes : { *(.gnu.build.attributes) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -r */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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-bpfle", "elf64-bpfbe", "elf64-bpfle") OUTPUT_ARCH(bpf) /* 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 { .interp 0 : { *(.interp) } .note.gnu.build-id 0: { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.sdata 0 : { *(.rel.sdata) } .rela.sdata 0 : { *(.rela.sdata) } .rel.sbss 0 : { *(.rel.sbss) } .rela.sbss 0 : { *(.rela.sbss) } .rel.sdata2 0 : { *(.rel.sdata2) } .rela.sdata2 0 : { *(.rela.sdata2) } .rel.sbss2 0 : { *(.rel.sbss2) } .rela.sbss2 0 : { *(.rela.sbss2) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.iplt 0 : { *(.rel.iplt) } .rela.iplt 0 : { *(.rela.iplt) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .sdata2 0 : { *(.sdata2) } .sbss2 0 : { *(.sbss2) } .eh_frame_hdr 0 : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* 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) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .got 0 : { *(.got) } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ .sdata 0 : { *(.sdata) } .sbss 0 : { *(.sbss) } .bss 0 : { *(.bss) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 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) } .gnu.build.attributes : { *(.gnu.build.attributes) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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-bpfle", "elf64-bpfbe", "elf64-bpfle") OUTPUT_ARCH(bpf) SEARCH_DIR("=/usr/bpf-unknown-none/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x00400000)); . = SEGMENT_START("text-segment", 0x00400000); .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } .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*) } /* 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*) } /* 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) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ .sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; .sbss : { *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) } .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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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-bpfle", "elf64-bpfbe", "elf64-bpfle") OUTPUT_ARCH(bpf) SEARCH_DIR("=/usr/bpf-unknown-none/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x00400000)); . = SEGMENT_START("text-segment", 0x00400000); .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } .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*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & ( - 1)); /* 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*) } /* 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) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ .sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; .sbss : { *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) } .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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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-bpfle", "elf64-bpfbe", "elf64-bpfle") OUTPUT_ARCH(bpf) SEARCH_DIR("=/usr/bpf-unknown-none/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x00400000)); . = SEGMENT_START("text-segment", 0x00400000); .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } .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*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & ( - 1)); /* 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*) } /* 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) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ .sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; .sbss : { *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) } .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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z separate-code */ /* Copyright (C) 2014-2020 Free Software Foundation, Inc. Copying and distribution of 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-bpfle", "elf64-bpfbe", "elf64-bpfle") OUTPUT_ARCH(bpf) SEARCH_DIR("=/usr/bpf-unknown-none/lib"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x00400000)); . = SEGMENT_START("text-segment", 0x00400000); .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } . = ALIGN(); .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); . = ALIGN(); /* 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(0x1000) + (. & ( - 1))); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } .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*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & ( - 1)); /* 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*) } /* 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) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ .sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; .sbss : { *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) } .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 do not 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) } .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } %P: warning: -z dynamic-undefined-weak ignored %F%P: %pB: --just-symbols may not be used on DSO %s:%d: Warning: path components stripped from %s, '%s' %P: warning: .note.gnu.build-id section discarded, --build-id ignored %F%P: failed to record assignment to %s: %E %F%P: warning: CTF strtab association failed; strings will not be shared: %s %F%P: warning: CTF symbol shuffling failed; slight space cost: %s %F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E %F%P: %pB: bfd_stat failed: %E %P: warning: %s, needed by %pB, may conflict with %s unrecognised or unsupported token '%s' in search path Warning: .drectve `%s' unrecognized Warning: corrupt .drectve at end of def file .rela.dyn.mbind.bss.mbind.data.mbind.rodata.mbind.text.rel.dyn.rel.gnu.warning..note.plt%s/lib%s%s.so../../ld/ldelf.cLIBRARY../../ld/ldelfgen.c.so.libc.sofound %s at %s %P: %pB: bfd_stat failed: %E lib64RIGIN}IB}%.*s%s/%s%.*s%sinclude%s.%sBASE$:-_?@$:-_?/@<>CODEconstantDESCRIPTIONDIRECTIVEEXPORTSHEAPSIZEIMPORTSnonameprivateSTACKSIZEVERSION%s.%s%ssyntax error%P: %s:%d: %s memory exhausted-heap-attr-export-aligncommSEGMENTS.tdata.interp.sdata.comment€êÿ`êÿHêÿRêÿ˜êÿøêÿøêÿhTêÿ Uêÿ…TêÿSêÿèRêÿÊRêÿ¬Rêÿ¬Jêÿ¬Jêÿ¬Jêÿ°Vêÿ—Vêÿ8Vêÿ@Uêÿ¬Jêÿ¬Jêÿ¬JêÿÔXêÿ&Rêÿ¤XêÿÒPêÿÒPêÿ¹Pêÿ¹Pêÿ+Qêÿ+QêÿQêÿQêÿ¬Jêÿ¬JêÿwXêÿ?TêÿTêÿ…RêÿZRêÿ5Sêÿ¬Jêÿ¬JêÿSêÿ^Sêÿ&RêÿëPêÿ¬Jêÿ¬JêÿëPêÿMRêÿÒPêÿ¹Pêÿ+QêÿQêÿ´SêÿWêÿWêÿWêÿùVêÿ}WêÿqWêÿeWêÿYWêÿMWêÿAWêÿ5Wêÿ)WêÿTêÿüSêÿðSêÿäSêÿØSêÿÌSêÿÀSêÿ]Yêÿ•Wêÿ¥JêÿVXêÿÇQêÿDQêÿDQêÿ¥JêÿQêÿ¥JêÿERêÿëPêÿMRêÿ¥JêÿERêÿ¥Jêÿ‰Wêÿ¥JêÿÇQêÿ¡Wêÿ¥JêÿQêÿ¥JêÿQêÿÉVêÿ¶XêÿÏKêÿÚMêÿÚMêÿÚMêÿÚMêÿÏKêÿÚMêÿÚMêÿÚMêÿÚMêÿjNêÿÚMêÿjNêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿÚMêÿ„Nêÿ™Qêÿ®Wêÿ¤Qêÿ¤Qêÿ¤Qêÿ¦WêÿžWêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ¤Qêÿ™Qêÿ®Wêÿ¤Qêÿ¤Qêÿ¤Qêÿ¦WêÿžWêÿÿÿ:;€�>?894RO5()*tgXLClw.o®ÿ®ÿk®ÿAõÿ®ÿ®ÿK®ÿRüÿ¯ÿ]9føÿ�µÿ®ÿ®ÿe®ÿ®ÿ®ÿûÿ®ÿ#$$%%%%%%%%%%%%%%&&&'(())))))))**++++++,,--..//0011112222222222222222222222333334455667788999::;;<=RRBHCD=LQZZb112345 - ) X ![MN.+*(V \_PO0,W/T^acYU'`]//STTTT&$%TT"#/<r6,s@0123A7BSqI !"#$%-&r'=‰xy†‡D<Tz{|}ˆŠ‹ŒG~`^_a�‘ÑÿÑÿÑÿÑÿc0123JeQYKZ„-NjŽ-mW\]fEbph iQ…kn uv‚ƒrF V�� [UdPH +M    g ' €�:7ƒ„…†G JŽ�NW ! \_!"!f   u:‡ ‰ >8R/'+ÿÿÿÿÿÿÿÿ !" z ç 55ï  î_®®®®®®®®®®®®®®®®®®®®®®® /®CC®®66®®®®0®0òï® ®:2®=®@!®®® /® ?®® ®®®5®0®® my_arc=%p %X%P: error: can't use long section names on this arch %F%P: %s: can't open for writing: %E %P: warning: cannot create .note.gnu.build-id section, --build-id ignored %P: Using an executable file (%pB) as input to a link is deprecated - support is likely to be removed in the future %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 add DT_NEEDED dynamic tag %F%P: failed to parse EH frame entries %P: warning: %s, needed by %pB, not found (try using -rpath or -rpath-link) %F%P: failed to set dynamic section sizes: %E %F%P: %pB: can't read contents of section .gnu.warning: %E %X%P: can not create .edata section: %E %X%P: can not create .reloc section: %E out of dynamic memory in yy_create_buffer()%F%P: invalid reloc statement %F%P: unrecognised keyword in MRI style script '%s' %F%P:%pS: error: alias for default memory region %F%P:%pS: error: redefinition of memory region alias `%s' %F%P:%pS: error: memory region `%s' for alias `%s' does not exist %X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them %X%P:%pS: unknown phdr type `%s' (try integer literal) %X%P:%pS: PHDRS syntax error at `%s' _cygwin_noncygwin_dll_entry@12øôêÿPôêÿ°ôêÿ�ôêÿÀõêÿpôêÿ�ôêÿpôêÿ`õêÿpôêÿ�ôêÿ�ôêÿpôêÿàõêÿ@õêÿ�ôêÿ)øêÿhúêÿÈùêÿ)øêÿ¸ùêÿ€ùêÿ)øêÿ)øêÿùêÿ)øêÿðøêÿpøêÿ)øêÿøêÿHøêÿ)øêÿ9 ëÿ‹ ëÿF ëÿ€ëÿÀþêÿÀþêÿÀþêÿÀþêÿQëÿ>ëÿÀþêÿÀþêÿ&ëÿëÿaëÿ&ëÿšëÿsëÿLëÿ&ëÿëÿÚëÿ´ëÿÀþêÿÀþêÿ‹ëÿÓ ëÿ{ ëÿl ëÿÀþêÿÀþêÿÀþêÿ2 ëÿb ëÿ ëÿÀþêÿí/ëÿÈ/ëÿÀþêÿ¤/ëÿ€/ëÿ[/ëÿ6/ëÿ(/ëÿÀþêÿÀþêÿÿ.ëÿß.ëÿÉ.ëÿ³.ëÿ�.ëÿt.ëÿT.ëÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿ.ëÿý-ëÿÓ-ëÿµ-ëÿq-ëÿZ-ëÿK-ëÿ<-ëÿ0-ëÿÀþêÿ-ëÿí,ëÿÒ,ëÿ˜,ëÿx,ëÿ;,ëÿþ+ëÿÀþêÿª+ëÿ�*ëÿá*ëÿ¼)ëÿ“)ëÿs)ëÿZ)ëÿA)ëÿ()ëÿ)ëÿëÿòëÿ¿ëÿÔëÿ¿ëÿ™ëÿ¿ëÿ{ëÿÀþêÿÀþêÿÀþêÿÀþêÿGëÿÀþêÿëÿŽ ëÿ� ëÿp ëÿ_ ëÿ2 ëÿ ëÿÀþêÿÞëÿ·ëÿÀþêÿü#ëÿÕ#ëÿ®#ëÿ‡#ëÿ`#ëÿ9#ëÿ#ëÿë"ëÿ¨"ëÿe"ëÿ4"ëÿ "ëÿâ!ëÿ¯!ëÿ|!ëÿ-!ëÿÃ(ëÿ¦(ëÿT(ëÿ5(ëÿ(ëÿÀþêÿÿ'ëÿð'ëÿÀþêÿ¸'ëÿÀþêÿ€'ëÿ>'ëÿÀþêÿì&ëÿ¬&ëÿƒ&ëÿä%ëÿª%ëÿŠ%ëÿÀþêÿÀþêÿÀþêÿÀþêÿ}%ëÿp%ëÿc%ëÿV%ëÿI%ëÿ¦$ëÿ™$ëÿ‹$ëÿ~$ëÿq$ëÿd$ëÿW$ëÿJ$ëÿ=$ëÿ0$ëÿ#$ëÿÀþêÿÀþêÿ:ëÿPëÿ/ëÿ¢ëÿëÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿÀþêÿõëÿÀþêÿ»ëÿ›ëÿˆëÿuëÿÀþêÿÀþêÿÀþêÿÀþêÿXëÿ8ëÿêëÿÀþêÿÒëÿ¹ëÿ ëÿÀþêÿ‡ëÿÀþêÿÀþêÿÀþêÿyëÿbëÿ9ëÿëÿèëÿÊëÿ¼ëÿ¥ëÿ‡ëÿzëÿ\ëÿ:ëÿëÿöëÿÔëÿ²ëÿ�ëÿnëÿLëÿ*ëÿëÿæëÿÄëÿ¢ëÿ€ëÿ^ëÿ<ëÿÄëÿ¢ëÿ€ëÿ,ëÿÇëÿsëÿëÿËëÿwëÿ#ëÿÏëÿ°ëÿ‘ëÿnëÿKëÿëÿãëÿ~ëÿ_ëÿ ëÿ£ëÿ€ëÿ7ëÿãëÿ�ëÿpëÿcëÿUëÿÆëÿïëÿcëÿïëÿëÿ ëÿëÿïëÿšëÿ�ëÿE ëÿ ëÿ ëÿ ëÿÌ ëÿ½ ëÿ‚ ëÿÀþêÿ'ëÿëÿ¼ëÿ­ëÿøëÿÀþêÿÏëÿ/ëÿÀþêÿõëÿÕëÿÆëÿ³þêÿ³þêÿ³þêÿ³þêÿÀþêÿýëÿýëÿqëÿáëÿ ëÿn ëÿ` ëÿáëÿR ëÿn4ëÿa4ëÿP4ëÿB4ëÿ4ëÿÀþêÿ3ëÿ 3ëÿ0ëÿÀþêÿÀþêÿÀþêÿÀþêÿãëÿÃëÿ@7ëÿ£6ëÿö7ëÿê5ëÿ€6ëÿáëÿr6ëÿ¥5ëÿ~5ëÿÀþêÿÀþêÿÀþêÿJ5ëÿ5ëÿÞ4ëÿµ4ëÿ•4ëÿÀþêÿÀþêÿ|4ëÿÌëÿ¬ëÿ‘ëÿtëÿ2ëÿð ëÿ® ëÿl ëÿ' ëÿ ëÿÜ ëÿ¶ ëÿ� ëÿòëÿÁëÿ§ëÿ<ëÿëÿêëÿÂëÿ9ëÿëÿçëÿÿÿ~ ]û¼»¹ÄÅÆ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¶Ò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[\ÇÈ··å !"#$%&'()ðóôõ·Ç·# !"#$%&'() !"#$%&'() !"#$%&'()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ÿÿ|}~ÿÿÿÿÿÿÿÿƒ„…ª«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºÿÿÿÿ½ !"ÒÓÔÕÿÿ×ÿÿÙÿÿÛ !"ÿÿ !"ÿÿ !"š"%— •!– ˜™:;› #$&'()*+,-./0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”Ú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ýlang_do_assignments_1€€ÀŸåðœå<�Ð`+@ ÿ%��make_onepe_dll_id_targetÀŸåðœå<�Ð`+@ ÿ%��make_onepep_dll_id_target;` «Ì€æÿ” ¬�æÿ¼ |žæÿĆžæÿè.»žæÿ|7ÅžæÿìFÌžæÿ NÓžæÿ¤aëžæÿbðžæÿàiüžæÿ,=<Çæÿ| ,ÈæÿÔ LÉæÿ|Éæÿ0ÜÉæÿDœÊæÿX,ËæÿllËæÿ€œËæÿ”œÌæÿÈ¼Ìæÿà¬Íæÿ0¬Îæÿ„ŒÏæÿÌŒÐæÿ,ÑæÿLLÒæÿÈÌÓæÿ,œÕæÿ”ØæÿüÜØæÿHÌÙæÿtŒÛæÿ´|Üæÿðìßæÿ,<àæÿL¼àæÿxláæÿ°œâæÿìÜâæÿ¬ãæÿL|äæÿxÌçæÿäœèæÿéæÿ0ìéæÿP\çÿœŒçÿØlçÿ(LçÿxŒçÿ¤Œçÿì çÿ8ü çÿ„Œ çÿ¤L çÿÜÌçÿ |çÿL¼çÿ`lçÿ€ çÿ¬|çÿ0,çÿ”¬çÿ°\çÿÌlçÿlçÿ\lçÿ¬Üçÿ(|çÿhì#çÿÐL%çÿ ,)çÿ¸Œ)çÿäÌ1çÿ@¬4çÿ¨5çÿÜljçÿPÜkçÿ|lçÿ�\lçÿ¤œlçÿÐèÿÌ4<ƒèÿ>¬ƒèÿ4>„èÿL>Œ„èÿd>ü„èÿ|>,…èÿ˜>\…èÿ¬>Œ…èÿÀ>¼…èÿÔ>ì…èÿè>†èÿü>L†èÿ?l†èÿ$?Œ†èÿ8?¬†èÿL?̆èÿ`?ì†èÿt? ‡èÿˆ?,‡èÿœ?L‡èÿ°?l‡èÿÄ?Œ‡èÿØ?¬‡èÿì?̇èÿ@|‰èÿP@Œ‰èÿd@œ‰èÿx@¬‰èÿŒ@¼‰èÿ @̉èÿ´@|Šèÿì@,‹èÿ$AÜ‹èÿ\AŒŒèÿ”A<�èÿÌAì�èÿB\Žèÿ,B|œèÿ`B|ªèÿ”B\¸èÿÈBìÄèÿüB|Ñèÿ0C ÞèÿdClßèÿ€C¬àèÿœC¼áèÿ¸C<âèÿÔCLâèÿèC\âèÿüCêèÿD¼êèÿTDìêèÿlDÌøèÿÐDlùèÿEüùèÿ@E¼úèÿhElýèÿ¸E,þèÿÜE¬þèÿøE¼ÿèÿDFLéÿhFÌéÿ¨FÌ éÿ Gü éÿpGü éÿœG|éÿ°G,éÿüGÌéÿ8HüéÿTH,éÿlH\6éÿIL7éÿ,I¼:éÿ�I,HéÿêÿäZœ>êÿøZ¼>êÿ [ì>êÿ [ ?êÿ4[|Fêÿx[üYêÿÈ[¼Zêÿ\ [êÿ,\Œ[êÿ`\Ü[êÿt\ì[êÿˆ\<\êÿœ\L\êÿ°\_êÿ]¬_êÿ@]<`êÿl] 8A0A(B BBBH \œ¸vçÿ½F�EŽE �H(ŒF0†D8ƒDPJ 8A0A(B BBBF g8C0D(D BBBPüwçÿÂFŽJ�E ŒD(†A0ƒu (D BBBG   (D BBBE dP”xçÿLF�BŽB �B(ŒA0†A8ƒDP_ 8A0A(B BBBE 6 8A0A(B BBBH 4¸||çÿ‡FŒA†D ƒF ABD kABðÔ|çÿ“(`}çÿE†HƒD0¤ AAI 0D~çÿ"EAWHLX~çÿ&F�EŽE �E(ŒA0†D8ƒK@À 8A0A(B BBBA ˜<çÿuEƒc H ¸œçÿ"EAW Ô°çÿ‘)F�BŽB �B(ŒA0†A8ƒGÀ}ÈBÐNØDàIÀc 8A0A(B BBBA É 8F0A(B BBBE ‡ ÈGÐpÈBÀiÈLÐUÈBÀ(x¬¨çÿ‰E†JƒJ h AAA ¤©çÿƒEƒP K H H HÈ|©çÿIF�BŽB �B(ŒA0†D8ƒGp” 8D0A(B BBBG H€®çÿ©F�EŽE �E(ŒA0†D8ƒGPl 8A0A(B BBBI (`ä®çÿxFŒI†D ƒaAB`Œ8¯çÿvF�EŽE �E(ŒD0†D8ƒD@¶ 8A0A(B BBBG [ 8D0D(D BBBK dðT°çÿ<F�BŽB �E(ŒD0†A8ƒD@ä 8A0A(B BBBJ â 8A0A(B BBBA øX,³çÿ1 F�BŽB �B(ŒA0†A8ƒDP– 8C0A(B BBBL 7 8A0A(B BBBG K 8C0A(B BBBI x 8F0A(B BBBI Þ 8H0A(B BBBI v 8C0A(B BBBN ® 8K0H(B BBBE C 8M0D(D BBBL Tp¿çÿhl¿çÿ|h¿çÿ�d¿çÿ5¤�¿çÿ)H`(¼¨¿çÿhE†HƒD r FAF Tèì¿çÿ\FŽE�E ŒD(†D0ƒD@º 0A(A BBBB \ 0F(A BBBG @ôÁçÿaE†G n AE 8d@ÂçÿÛBŒP†C ƒC ABE ` FBH  äÂçÿ ´àÂçÿ+ÈüÂçÿPHCà4ÃçÿQEƒKüxÃçÿÕH \ D <Äçÿz(,¨ÄçÿXQ†DƒK tAAAÃÆHXÜÄçÿ¦F�BŒD †A(ƒD0b (A ABBA T(D DGD<¤@Åçÿ E†MƒH p AAD c AAK yICäÆçÿ_F�JŒK †\ PÆçÿy B�HŽE �B(ŒA0†A8ƒG€Ï 8A0A(B BBBE ZˆI�\ˆB€,d pÓçÿÅE†DƒIð* CAH ” ÕçÿÉKภA ° ÄÕçÿ+HYÈ ÜÕçÿ+HY<à ôÕçÿÜBŽB�B ŒA(†D0ƒ€ (D BBBK !”ÖçÿæE†JàÐ AA $D!`×çÿ;FŒP†I IJDl!x×çÿ:Y†`ˆ!–oæÿ5†4 !„×çÿ¿E†DƒG d AAJ O DCJ dØ! ØçÿêF�BŽB �B(ŒA0†D8ƒDP 8A0A(B BBBK k 8A0A(B BBBK \@"”ÙçÿlT�EŒA †I(ƒD@É(Fà AÆBÌBÍM@ƒ†Œ�š (Gà DÆDÌBÍM ` "¤Ûçÿ¦F�BŽE �E(ŒD0†D8ƒG@X 8A0A(B BBBE e 8A0A(B BBBI H#ðÛçÿïF�EŽE �E(ŒD0†D8ƒG`@ 8A0A(B BBBB 0P#”Ýçÿ§BŒG†D ƒGP_  AABI Œ„#ÞçÿeF�EŽE �E(ŒD0†D8ƒG@} 8G0Q(D BBBM j 8G0D(D IBBJ D 8A0A(B BBBB W8K0D(D BBBh$ðÞçÿaR�EŽB �E(ŒD0†A8ƒDPS 8A0A(B BBBD œ 8AÃ0AÆ(BÌ BÍBÎBÏJ �€$ôßçÿØF�EŽE �E(ŒD0†D8ƒG@[ 8A0A(B BBBG € 8G0D(E EDBE  8G0D(D BBBL a 8J0A(B BBBL `%@áçÿ¹F�BŽE �B(ŒD0†A8ƒD@ 8A0A(B BBBB w 8C0A(B BBBM 4x%œâçÿMF�GŒD †I(ƒN0I(G LBB4°%´âçÿMF�GŒD †I(ƒN0I(G LBB`è%ÌâçÿŒFŽB�B ŒA(†A0ƒó (A BBBA Ì (A BBBA u (A BBBA HL&øççÿ?F�BŽB �B(ŒA0†A8ƒGP; 8A0A(B BBBF œ˜&ìíçÿ�F�BŒA †D(ƒK0X (A ABBJ « (A ABBG [ (C ABBE  (J ABBJ X (G DDBE s (D LBBE 08'ÜèÿÛFŒI†D ƒG0o  AABC (l'ˆ èÿ×E†HƒG0j AAH 8˜'< èÿ�FŒA†A ƒX ABE A HBE (Ô'  èÿŠE†DƒG a FAH @( èÿ¯BŽE�H ŒD(†D0ƒG`^ 0A(A BBBD HD(p èÿ#F�IŽH �B(ŒA0†A8ƒD@Î 8F0A(B BBBA H�(T èÿ>F�BŽB �B(ŒA0†A8ƒDPò 8A0A(B BBBA tÜ(H èÿkF�BŽE �E(ŒD0†A8ƒD€y 8A0A(B BBBB â 8D0A(B BBBI QˆJ�ZˆA€T)@èÿXLƒO E wt)€èÿXLƒO E w”)ÀèÿXLƒO E wd´)èÿF�BŽB �E(ŒA0†A8ƒDp  8A0A(B BBBG š 8F0A(B BBBG *7gæÿ pƒ†Œ�Ž�(<*ˆèÿkE†DƒG i CAC Hh*ÌèÿœF�BŽB �E(ŒA0†A8ƒG@€ 8A0A(B BBBF ´* èÿ[Mƒ\ G Ð*dèÿoM†f E vð*´èÿoM†c H v8+èÿzBŽB�B ŒG(†G0n (A BBBG LL+HèÿzB�BŽB �E(ŒA0†D8ƒD€R 8A0A(B BBBH œ+xèÿ;(°+¤èÿ“A†AƒG ` AAE Ü+èÿ�KàÎ G @ø+Œèÿ5FŽJ�E ŒD(†A0ƒL Ê 0A(A BBBH |<,ˆèÿ¤E†HƒG n FAG H JAM | HAK m CHH d AAA W PCO O AAO TJA4¼,¸!èÿ¬E†DƒD W AAJ O FAJ ô,0"èÿ³GঠA L-Ô"èÿB�BŽB �B(ŒA0†D8ƒF� 8C0A(B BBBC `-¤'èÿt- 'èÿ@ˆ-œ'èÿµFŒD†D ƒl ABC M ABH YABÌ-(èÿ[M†Z I dè-\(èÿþF�BŽB �B(ŒD0†C8ƒGð 8A0A(B BBBI t 8F0A(B BBBM HP.ô,èÿ­F�BŽB �B(ŒD0†D8ƒDPÒ 8D0A(B BBBI lœ.X2èÿžF�EŽB �E(ŒA0†D8ƒDPäXJ`WXAP] 8A0A(B BBBH D 8C0A(B BBBA  /ˆ3èÿYEƒL<(/Ì3èÿvE†DƒF b AAE N AAH WGC`h/ 4èÿÑF�BŒA †D(ƒD0E (A ABBD y (A ABBA _ (A ABBK DÌ/Èaæÿ:(F�BŽE �B(ŒA0†H8ƒJðXøS€OøAð0@6èÿi(0œ8èÿi<0ø:èÿiP0T=èÿid0°?èÿix0 BèÿiŒ0hDèÿlHc¤0ÀDèÿlHc¼0EèÿlHcÔ0pEèÿlHcì0ÈEèÿlHc1 FèÿlHc1xFèÿ(Eƒb81ŒFèÿ!L1¨Fèÿ!`1ÄFèÿ!t1àFèÿ!ˆ1üFèÿ!œ1Gèÿ!°14GèÿÄ1@GèÿØ1LGèÿì1XGèÿ2dGèÿ2pGèÿ(2|Gèÿ<2ˆGèÿP2”Gèÿd2 Gèÿx2¬GèÿŒ2¸GèÿL 2ÄGèÿ®F�BŒA †H(ƒG02 (A ABBH } (A DDBH ð2$Ièÿ 3 Ièÿ 3Ièÿ ,3Ièÿ @3Ièÿ 4T3Ièÿ£F�EŒD †D(ƒS0v(A ABB4Œ3ˆIèÿ£F�EŒD †D(ƒS0v(A ABB4Ä3Jèÿ£F�EŒD †D(ƒS0v(A ABB4ü3xJèÿ£F�EŒD †D(ƒS0v(A ABB444ðJèÿ£F�EŒD †D(ƒS0v(A ABB4l4hKèÿ£F�EŒD †D(ƒS0v(A ABB$¤4àKèÿoE†DƒO TAA0Ì4(LèÿFŒA†A ƒD0”  AABD 05Zèÿú FŒA†A ƒD0”  AABD 045àgèÿÖ FŒA†A ƒD0”  AABD 0h5Œuèÿ‰ FŒA†A ƒD0Œ  AABA 0œ5è�èÿ‰ FŒA†A ƒD0Œ  AABA 0Ð5DŽèÿ‰ FŒA†A ƒD0Œ  AABA 6 šèÿVE†G 6ä›èÿ1E†"<6�èÿ E†ýX6ü�èÿxE†it6`žèÿ ˆ6\žèÿ œ6Xžèÿ²E†£8¸6ü¥èÿ›R�BŒA †D(ƒG0A (A ABBI ô6`¦èÿ)H`` 7x¦èÿ× F�BŽB �E(ŒD0†A8ƒD p¨L°B¸BÀX   8A0A(B BBBI @p7ô³èÿœFŽE�E ŒA(†D0ƒF@j 0A(A BBBC (´7P´èÿ‚FŒNƒG D DBK $à7´´èÿ¾FŒNƒG œDBL8Lµèÿ¡F�BŽB �B(ŒA0†A8ƒGÀˆ 8A0A(B BBBI X8¬·èÿ½FŒD w BE |8H¸èÿ|H^ J H˜8¬¸èÿB�BŽI �B(ŒH0†D8ƒDPÁ 8A0A(B BBBA ä8p¹èÿ‹A†I R AC <9ܹèÿzBŒA†G ] ABF W GDN RAB@H9ºèÿõFŽB�B ŒA(†A0ƒF@’ 0A(A BBBD Œ9ÑWæÿ@ƒ†Œ�Ž`¬9¸Âèÿ+F�BŽB �B(ŒA0†A8ƒD@= 8A0A(B BBBG W 8A0D(D BBBE (:„ÅèÿôE†AƒD   AAL <:XÆèÿ{HP:ÄÆèÿ¥B�EŒD †A(ƒK0w (A ABBD D(C ABB8œ:(Çèÿ›R�BŒA †D(ƒG0A (A ABBI Ø:ŒÇèÿ(Eƒbô: Çèÿ)H`� ;¸Çèÿ%&F�BŽB �B(ŒA0†A8ƒGÀ¯ÈCÐOÈDÀw 8A0A(B BBBA ? 8F0A(B BBBE y 8C0A(B BBBE ( ;TíèÿåFŒD C BA T BJ `Ì;îèÿgF�BŽB �B(ŒA0†A8ƒGP{ 8C0A(B BBBD ì 8F0A(B BBBE ¨0<$ñèÿe F�BŽB �B(ŒA0†A8ƒJÐT 8D0A(B BBBG íØDàhØAТ ØDàO � ØDàO HØWàQØBÐOØKàHØAÐdØJà[ØBÐÜ<èýèÿüE†íLø<ÌéÿÌF�BŽB �B(ŒA0†A8ƒD€z 8A0A(B BBBJ \H=L éÿÞF�BŽB �E(ŒD0†A8ƒG€ÙˆJ�XˆA€› 8D0A(B BBBA \¨=Ì$éÿ�X�BŽB �B(ŒA0†D8ƒG@K8D0A(B BBBFÃÆÌÍÎÏH@ƒ†Œ�Ž�> &éÿ$>&éÿoE†DƒO TAAÌD>`&éÿH F�BŽB �E(ŒD0†A8ƒG ¨L°B¸BÀX ¨H°f¨A ^¨N°b¨G ¨H°E¨D ?¨H°†¨F + 8A0A(B BBBA �¨E°F¨F †¨N°W¨F ?à1éÿ L(?Ü1éÿ¡F�BŽB �B(ŒA0†A8ƒGÀˆ 8A0A(B BBBI x?<4éÿ½FŒD w BE œ?Ø4éÿ|H^ J H¸?<5éÿøB�BŽI �B(ŒH0†D8ƒDP¶ 8A0A(B BBBA @ð5éÿ‹A†I R AC <(@\6éÿzBŒA†G ] ABF W GDN RAB@h@œ6éÿL FŽH�B ŒA(†A0ƒD@– 0A(A BBBD ¬@¸Pæÿ@ƒ†Œ�Ž`Ì@ˆ?éÿF�BŽB �B(ŒA0†A8ƒDP5 8A0A(B BBBG W 8A0D(D BBBE (0ADBéÿôE†AƒD   AAL ,\ACéÿÞFŒH†A ƒ ABG ŒAÈCéÿs A4Déÿs´A DéÿÈAœEéÿlÜA¨EéÿäB�EŒD †D(ƒJ0b (A ABBG M (A ABBE J (A DBBE b(A DBBLLB(Féÿ¨P�EŒD †A(ƒK0e (A ABBH D(C ABBAÃÆÌÍ(œBˆFéÿSF†DƒD yAAGÃÆÈB¼Féÿ\ÜBÈFéÿÞF�BŽB �E(ŒD0†A8ƒG€ÙˆJ�XˆA€› 8D0A(B BBBA \“;“P“M“f“c“x“Ò�‰“Ó¸““Ôওÿ€³“ÿÇ“H€Ù“ý€€ñ“þ¨€…Ž×Ѐ ”Ü—Š�”—Š(�(”`�3” ˜�=” P”k” {”Ð�„”‚�”8‚ÊMÒá÷,9íûó‡SVY\ _ c g j mpsv`dy|g ˆ*ú)ú$úúúŽ+—3¦;­<¸ =µ>À?Ä@ÊBÏA×CâDÞ‚±}`çEðFôføn‰$ÿ%&)N:PA1H³ªĪÖªåª ĪÖª_©ûª« «« «-«-Ž~.7«/Wî:ã¬0F«1Z«2k«3ƒ«4—«5¨«6À«7Áø8Ò«9Ü«;À¥Rí«Sð«T¬<¬<¬=!¬>1¬?E¬MR¬Qm¬@u¬A‡¬Bœ¬C²¬DɬEɬE׬Fî¬G­H­I,­J?­KS­Lj­N†­Oà¥P£­U½­VØ­Wè­Xô­Yÿ­Z®[®\®]$®^.®a9®_6®`®øbJ®c²¦˜_®’®ø—f®™~®P‡®�™®‘­®“ª®”E¬•º®–È®-Å®.²¦˜_®’®ø—f®™~®P‡®�™®‘­®“ª®”E¬•º®–È®-Å®.²¦˜_®’®ø—f®™~®P‡®�™®‘­®“ª®”E¬•º®–È®-Å®.²¦˜_®’®ø—f®™~®P‡®�™®‘­®“ª®”E¬•º®–È®-Å®.²¦˜_®’®ø—f®™~®P‡®�™®‘­®“ª®”E¬•º®–È®-Å®.²¦˜_®’®ø—f®™~®P‡®�™®‘­®“ª®”E¬•º®–È®-Å®.³ªĪÖªåª ĪÖª_©ûª« «« «-«-Ž~.7«/Wî:ã¬0F«1Z«2k«3ƒ«4—«5¨«6À«7Áø8Ò«9Ü«;/~DÀ¥Ví«Wð«X9®c6®d¬<¬<¬=!¬>1¬?E¬NR¬Um¬@u¬A‡¬Bœ¬C²¬EɬFɬF׬Gî¬H­I­J,­K?­L;~Mj­O†­PÈ{Sà¥TY~QQ~R£­Y½­Zè­[ô­\ÿ­]®^®_®`$®a.®b®øeJ®fø}û}m~x~u~~ˆ~‹~VîÀø\î bî jîžíÃí±}ÈíÃ}Tˆ ÑíÝí‰}çí ïíøí íó‡»}î¨}î|}Ž uî ’}îî ‚}®ø—f®™ø}û}m~x~u~~ˆ~‹~Ôúìúõúôúa¨ûÔúû #û .û~>ûSû˜iû{û‹û›û«ûa¨û¼û »û ÇûÎûÖû Ôúìúõúôúa¨ûÔúû ìúãû õúñûüü{û‹û›û«ûa¨û¼û »û ÇûÎûÖû 3ü;üCüNüXü`üiüqüê¨xühø‰ü Ò¨è{”üëì½üÅüÍü¨ü ²ü ¼üÄüÌüÔü ßüèüñü ûüý ý ý ý +ý2ý <ýDýKý Uý bý ê¨xühø‰ü Ò¨è{”üëì½üÅüÍü¨ü ²ü ¼üÄüÌüÔü ßüèüñü ûüý ý ý ý +ý2ý <ýDýKý Uý bý �µÁ À `Eð·ø·õþÿo°Ø` . 08°¥À/ðu ûÿÿoþÿÿo/ÿÿÿoðÿÿo-ùÿÿoÕ 0À@ÀPÀ`ÀpÀ€À�À À°ÀÀÀÐÀàÀðÀÁÁ Á0Á@ÁPÁ`ÁpÁ€Á�Á Á°ÁÀÁÐÁàÁðÁ Â0Â@ÂPÂ`Âp€Â� °ÂÀÂÐÂàÂðÂÃà Ã0Ã@ÃPÃ`ÃpÀÃ�àðÃÀÃÐÃàÃðÃÄÄ Ä0Ä@ÄPÄ`ÄpÄ€Ä�ĠİÄÀÄÐÄàÄðÄÅÅ Å0Å@ÅPÅ`ÅpÅ€Å�ŠŰÅÀÅÐÅàÅðÅÆÆ Æ0Æ@ÆPÆ`ÆpÆ€Æ�ƠưÆÀÆÐÆàÆðÆÇÇ Ç0Ç@ÇPÇ`ÇpÇ€Ç�ǠǰÇÀÇÐÇàÇðÇÈÈ È0È@ÈPÈ`ÈpÈ€È�ȠȰÈÀÈÐÈàÈðÈÉÉ É0É@ÉPÉ`ÉpÉ€É�ɠɰÉÀÉÐÉàÉðÉÊÊ Ê0Ê@ÊPÊ`ÊpÊ€Ê�ʠʰÊÀÊÐÊàÊðÊËË Ë0Ë@ËPË`ËpË€Ë�ˠ˰ËÀËÐËàËðËÌÌ Ì0Ì@ÌPÌ`ÌpÌ€Ì�̠̰ÌÀÌÐÌàÌðÌÍÍ Í0Í@ÍPÍ`ÍpÍ€Í�͠ͰÍÀÍÐÍàÍðÍÎÎ Î0Î@ÎPÎ`Îp΀Î�ΠΰÎÀÎÐÎàÎðÎ (=>p;@>m†±�àå0C`CÀí`æ€)Ó�æ€.ð)€æ�Ò"P.ï@Û æ èPî Ôö0Á0C`C0РP€)�)@.€.ð)@ÖÒ.50÷ ä`ÖÍð°ÀÃPz€‡À)Àå€=0C`CPL€O€)�)@.€.ð)°uPM>F€�0¯Pª I@Í @ v°!zаàÃ0C`CÀí@Æ€)ÓÉ€.ð)Ç@¿QZP.pÅï@Û�ÌР!Pî ÔöpÃ0C`CÀí Æ€)ÓÉ€.ð)àÆмenP.@Åï@ÛàË@�!Pî ÔöÃ0C`CÀíÆ€)ÓðÈ€.ð)ÀÆ`ºyƒP.Åï@Û0˰÷!Pî Ôö�Â0C`CÀíàÅ€)ÓàÈ€.ð) Æð·�˜P.àÄï@Û€ÊÐé Pî Ôö Â0C`CÀíÀÅ€)ÓÐÈ€.ð)€Æ€µ£°P.°Äï@ÛÐÉÐÛÀPî Ôö°Á0C`CÀí Å€)Ó Ç€.ð)`Ƴ3½P.€Äï@Û É°Í`Pî Ôö G EèD€E@(@'@&@%@$@#@"@!@ @“ F�HK°KPN0QSÐT UpUpD`B°‘ °€ @ÿÿÿÿÿÿÿÿI@P©ÌJ“ªI@C© I}ª$Ijª(Iª*I%ª,I:ª.IRª0IÊ©2Iæ©DIªHI °©PI—©XI~©`If©hI«FI›ªÿÿÿÿPaÿÿÿÿÿÿÿÿL@P©N“ªL@C© L}ª$Ljª(Lª*L%ª,L:ª.LRª0LÊ©2Læ©DLªHL °©PL—©XL~©`Lf©hL«FL›ªËìñ}+©+±ì#¦ìËì½ì+~î#±ì#¦ì+…î+�î#@”îËìñ}+©+±ì#¦ì�¢5~À 5nýÀ }ý…ý@ Œý•ý"@ �ý¬ý  @ ºýÏý @ F(©  Fãý  }ý…ý Œý•ý" �ý¬ý   ºýÏý ld.bfd-2.35.2-72.el9.x86_64.debugQsLiý7zXZæÖ´F!t/å£àaßg]?‘E„h=‰¦ÚŠáƒ2NÙêÙ,âŽUPOÈú b ¸Y¥cM1ñYì|½}¦IàC×G5r+»0lxç�¾€ûkH97 ŽÊ,‚ AD.èY¯ ÙrhÍ2å‘݆<8˜ª¢“ötšÇK „­dÔÚ‰Ûglªð¿ÒB9ñL„U•S…ß:BPÆêÊûfî9g £ŽŠ“u»óÔmìB›R ¾(…~LîE‡"Íí�ŒC…`{ìuN¹gT •c÷•þí¯ŸU$^œÈL çì1FZ’°J�ÿìuƒ&ÉÀby P+Û|¿¼C�K‚a f࣎M¡I™Ïâ·¬ÏJzÆ·Nòï Ó7‚ë$x®ã?Zï¨Û™ ï.2¨Ez°×8ÆþÔ°•®´Ê¢Ï±´c9TéÎÍÍš$¼cµ¡×«iÝ”°qSl„G�£OþÁæxžq--ê (fÁ± ¬EV¤c!³¶T–3‡\¤¤x-Iép ;“˜;ª 'Ž¥‰\š?X‘¢Ÿ"HŠê­=Pô1ÌF:9ÿ‰þÃReáãž›YyËñû ³òvá]„v¨K¯Ú ÞE¯Ž?Ì©ïcÚÍ—�ŽuJvî†õo^E�©€C—êý—ÊC8ô‘2ÿ4úG9�q·³Ø{U: ß‡@~ëÿˆv).�ž jÀ[r2y§|žÉ3zQI- X¨� YÒìLs†yt`˜h¢%ržêPHÚq~;>Â¥íC×þrѨ’Q¼�Ò+HÑßÛ„Äìr=ôpCŽfT[¿]RV’:¶ºùYOÉí¾jð1¸ÂÄ —uDìw†f5“xO® ÞBŒУ”ï¯;uê¸Ø®›„äé|ž°ápƒªæöë‚ì k6¼ÖGm\ÞX”·™�‚C9‹ŠžË ±$ûÔæ¥#Ô¯™ÜÍZW=9mugÐoe‹ãï†G3Í—ŽÙ߸ClËWQ.šìJ�!òƒ|[}Œµ$S«^UáFd©rV “&:ÓSí®¼vj¼Üx_é`âZ†Ð–N%Ý%Óf¯Q ùtZB ÈîV‚»‘icH 3Œu²€aÃîoƒ"žW¦Fóÿ¶Kâ0ÐÛ¥ÄÄÙò�nªwrWpQ¾ö5Çwï§^Á’„!FÙrX(ô"¤DTÝÊ5ÜG|I%¿¸¥4i­Äd罊«�CŠ/DÑÌ “RóƒÕ2kîƒ&Š\ Jþë£ýß/ ¶ á¥µMFèb€ˆ•î¦Ð|ÎÀ‹Ïìda܎ʉ©ÊÐns† ól¤5< sÝ \|áÞ›®d-s9÷;EƒL™ªD¥èÚT zéÚ§ý'ŒM*­;&Å[õζž,dÏ�¶ö½Ø[pÑ�ìò~™—®ÕÍâ~©imñéŽ÷мûj83_F ˜\~Vø·Jp¥gô¸J–9«¤+MOÚ´¢àKøS lŠ^ùr4ÛuSWžøïF­±èq&Õ)"ƣ̋.7ü<á5Æ�—ëJŒÌñæd.‡[YqŸKÈ"IýX pAYî ö¿#êËåÓ$ ¡#w?Uúc]>M\Òª™Z�aV”M‰ ~Y ìRøÕÚ0Å�Ê+£ˆº™u[šàYë—W*¤u¼ôfìÞsH3UÆZ# n• ÊK`BÀïÄfÝwT݉$G¿áo€sÁêohJ'•`“³ ÈÈwµ\Û�©6áûóBuª‹¬/ˆ;ON�|,þV}Þž û5p^&ˆ_h»•&Ì/¨3õš1"È­}ð+E‘â/­¤¨È ƒÎô65b&¦ß@X#»èâæË[O*²ã”ŸÝ|ÄÏs<¬¼y�d³·ÉyÃIãŒ.Ru {?ü�“®ˆh=¸”eÅ¢ÌÈÊ?_…e�¯nv N˜`?×´z_.3ãƒtÃ,{z™ËTn{hÛ’Uë¦äSg?©ebëÚ!Ýp Üϰ‘ÿM—q “~š¿„±ó¿¯ð8šUóÿ=®Ù˜§œ¿¿U|üÖîüÔ)> ˜‚qa�ˆwn’E…ZÂ/DiïžsäïÀ �t]Ã-‹ŽhRC=UbsþðñˆA.·õþ¡ÑÀÒÃÖ”VóÝ^z\S}f×ÊÄF�Åùw·^vâþi%<ÿ´5¶äã¨?Ö)� ª‹¤Œ�ÍÙ}kêÏxœwt 3‰Y'*-¶¤4>Ñe;ƒ“8Ü…'+æÝ÷Š-‚‰eÿïÃï¾tbÀHbH'AwX¬TqWdÎQPy íX…G± êòª‹P;In¼<“%/¤±)àj‰S},JmL`Á×yÈý- É�ž£Ù àsü¢u�üÎíˆZ¬JÌ%sIf˜ÿ‚ù—&¢bÈ7yn„{ýê�ç7��ÿV MY£‚‘ˆ_I\&‚[ÏIx­jvŸ0o€0îÙP ™pѶ¿Šùìéwõ„s¸6ר�€Ó\<<#³ç ØdljÕÝÇý{ŸÃ.Ém&àMÒN–ޝ"q˨ùû—˜Tá®”,cž5¦ÚhÙï^{!fõûi§ÍE¸¿ ~B�î­\äO„‹f�¯†G[ÂÖl©µ_?”d›¦‹qõ‘T™,2�*“a¦!/`·o ý$M"ÇcϬյÀ�\µ¯‰O4 �£� ›_¢h“Cݘ§ÂÌ j .ñZB¥cl†É¹ûÞ"ˆ}0k‡DAcÀ—&ÃRÔQ=‹ñrqh€x{'CɪoèFx” K|ŒÂªÎÁ‘‹]'AÅ¥ÖÚdŽ�ÆCŠ÷ÜA²bíLCB]¥I–¾ƒ»óæK¾žc&:ñæÒ†åÆ�XFüw„] Fôl+®ô@ŽâƒB†¶HOŒ‹ ÁZÿlµÓ8óåÞoí2|8b Ám^.´^¿ž?ŽªŒ}óŽI 'ËG(ò(v–º]­+Œ*~¡Í „˜:¶æ+S�í\i£·’¼Tß-ŽnbÌl£ÈŽÙý´ë ÄdûfbxXS5%5M,&³yÊkŠêÖ[Q‡eR’rhRg¾ÞéÖóæ­|ˆÿ¨¼¬¶ä®p¢„n#µ†Ç†¬Ã-‚«Ði"3¿AlJ'éÓ[E ‹>_ïb£D�Ywè$ˆ­g‹0MÞÐÛb�åx¿²<½HÑéã+%ÇÍbI(Ùˆ|vŃÞn¶8å?‡¶’”èõxR¦0¾½–`�³¢ÄRûñ�¼Ü6Ç^2ÇÝ×|“T¡¸˜ÿ&¤zä3Î2M˜59Z{zâRm°3]�žW¦úÙ¬¦öŠ‘e1‘ò¼eg3i׆@8GßÜán5˜IÃзàÒÉå}Ñí¯‰cÂ/c¶ªC’À‘ì¶ Ñÿ‡Ž•–z8“ lûðePø¿ÿÃ#â�Uìj”ðD³JrS8,SY©H]ͬ-œ™Ùda·ï"†«þ'ýgÜ;Û7"™¾§n*Ð.ð¤J\§¢PcYÚãœP˜2Éæs_*§Ë¤¹m˜pƒÅC£Ú]p/0·¿k¯ò®å»r"hKÖÀÞ»µbïm,Õæú«y¢!Ð@;"¸§ôýWDJÒ¨‚æ9‡ ¼Á¬k³Â‘[„—¢ã])¬MŽÁ„aö~‡¾¼q;Âü£ƒp ”ãÚ~ŸhB1Kôá9´têdA N3:³·Ÿ|Üh?›•ª¤,­Gß‘ÿAãd_†ãOO³Iú“5¼^Y¦xNé+þ/x"ËîÞ/ŒqqF\¨üߨkÉ ®æ;lÛŠŒ$µaú¤ìNdê—õa:Ôÿr¡o_�÷¢~cѶ½wÕÛÝË�(­1K9\ ¨A¸lÆì+<Ž ˆ»Õç+ü‰�ú›÷“ Nãàó¶ô ‡r4&a2111õªÌ¢žÅÿDë¢öឰЗaÚÉÚKg~‚—Uc�¹ö›Ór‘Aíãöå±Í }•o‘t]œgâY<öèd—‚;C[õ�ÎCéÚô–}]Ïî’C7� Ry6” £Ja¿Žì‘Óí7äN"Üi©¯íGd(ü4IpøK m8 å¢+É›—ÙtK”öTé~{“¬ˆº²Äƒ²|G4Þ[˜cG\lË´jsÐuuTxäFŠ}Ê»!ÖŸ[«„ŽrÛõ±§ÃY˜¥:}np£*@г fi½P+�qq,rÀö~ŽS“u÷šd!i]v[7/|^:h�缋v0®5Õ»óÕ#ÿ¢óJÓž–¹rB…•�Not?�ÔX‹: 'Gÿ,è|+ó3D"Qþ©1 ’¼¾íórÛGO}VýiŠŒDMý‰"ªOu_×ÿ;„h!5‹™6À¢7’‚îÒ‹u+Ð,£$ܯÖR&L÷2”ß pw‹¨9æ#eo%ØoL(Rœƒ¾ûZpÊÈÊý~mìÂRa­ôÜõfV6„{ó&õêqDÊZ?¢ZÉc ·é,£ÓH�aDÚùÕê=¡êú…`O+z˜è\”Šs-û>íclø×5í‰Pæ ë¨éNÖj¸Šifª�LÌd©=ÔxÆG.“e0IŒ¸×~œ*ûŠœ‘ËåÜÕщ¹K³/i¨Õ˜út<îÕN?m5 Mf„æÛI{«Qiì$úƲ„VLÌôÉ7éÔ¥9³íÊ€ê³Ã9…ðÇc™"�˜snÚ [Ð!ÎÑ(sŽË†qRä[:&à§ÚvGž¢Ç义øå¥ÃêZ‹bÄéϼ eLôÍÇdôœX&x ˆu7FLm·C|彇ܢ±‡íf®B©ùK&>YÇò`‘¸÷ºòÔÈçôÖ´˜ËÈžæÍ­X•k§ñ'ª%�°Éž Ž‘)Æ2|–�ð­(¼¼Üâê@æpÛaÔõ™Q9à®=4ÿRrÀŽÁ]aÂ5ÀYÿEú§lîÌ¢h‰"%÷TJJHTø¡?ýû^@™¦ŒÐ€¤ƒ!¤l� 6Ö+^¬ÚÕ}e#PPŸYl–Á·/8YM†=q¤lQ²ò(2Uíߤ$ùe»œš‹™¢[ºµÚº¶hœÉëÿ° |æÛ©· +žuK¾ÝìÝuããoôñ’šÍ#%×*2Ú¼Ñø°433$ަ[Ž}fÿ¤KÈíQ­¨N~ øW†û±ÂÚ•q]«è˜éáü–›.°¾vxsU.¿WqšðzÂÓŠ©kõ¿{™Šc~/¯¦œ:Ð5«½’˼Fº®Š”÷/;õQ¨1‘[L�¼^ÿü‘¤íÉöôÀëµÞ#åß߉4O&:ü¶Ï; ûŸBòP¸ó�ß¡É*5 ½jÓÃn3«¶Ii8RÊ™<½Ã˜DûI| ðPÖÒ¼‰ãÍläóÁZ¢RWÀŒÑ-Ÿ€{ÜdÓƒ› ¿à;w‘»Ò›s�hªs’âA&‚�˜€†BâfBs�e­�¼ØÌ�Mœ€*¼ÇXÀóT°­�ÆaØ�¤¡ÜôØo{8ô*mßG/¦ÏPæí+¢3ZÁb[ÆDôáfïq©œ›½¯‘Ñ Õ®ôÛ·×Ü¡ñC;gvÖ ,O[Oñ$ôuöÑÌÄ\`¬3ÇÑàO¶«HñߣÐtOÊÕ´,Ïxn’Þ²½ õôÖüÔîÛöAÕ@™½×S-Ýä²^Áº嵫S½e¿îýŒ„÷’õ¢»Nà@aU òhå…eZÓ��©gÓàü7–‘Ë5ß| ªø YØûÚ¬}W¿ñ�+“©¤ÁZ—f»¾à&>â{ö])Ñʦ´�àôé|í”=ôS® ËR.Tj˜Õ�ä-Ví WžO2èά¤>¬pr”Eýš *5{5-GÀ×$80³{?^eÒpkʾÙ�QJ;[ }×Öø °�‡"slp?•©×6YMˆºˆ¤-ÙèYZ›®QÉ~Ô×Çÿ>â:ÑqO)ëy®¤êa`‡b̧ým´9”ŽZ®XAnøª)ЬŸÑ‘q«C@5pA“Æ Ùo[ Àu¬­ëtqÉH84Æ­ëK—êœÑŠhެªAÂìu)ï–¥÷¾L"F`¬Íþ¨ ú¦{`ß—1î„DR§Ò;‹5_áØeûÔ°†{«5w‡éSºý“#p·P¦gÅÌã9¨hCUý?Tä{\àOrí±ñÏg~OÌè¤æ®sÍ|Z!ò…¦·×Ç~é0ƒ *�<׊AÔ¹ W˜@ù.Cå�ª­q!i&.vÈ.n¤{Â^qo”ÿ«pZšŸÈ $î#�8Z¬º¡ª+¼ß!ÔŠôN$’ÇÌåbé lÃy“LF(•j£-Èã[N9žrÃz™ør%ûfRuÿ·“èCbw5ØEJâHƒé“4&^žï"Û(’Ÿh‰.ô±¹œé\»ƒx~Ã+é¬mD¼ÕÑ£¡•Qx!ò'‚Ã.�êC!êmÄ–/¼ð‡hÑæA‚�¼4Û4p@ì8�8z¨yèÃú—¥XrÃÁGŒ†^‡˜ß�LÅ(ªd‡?ºúIk¯È\AysZ2�C#Vx¦!qŠAR:@±™:~˜aa^!N×ÞáßEÛyˆ{Kƒ`ðŠ=_KÓj°§|¥ÊÃÅqóÓð]v‚f#´—0óoû')ïô¾3Œ É;<XÎ “DojÔ5Oá—Öï33Ñ—Ö÷â…\rhißM÷âÂŽÙÝJæDƶ)í ’ýsúmK•ý�`²Î@åu•óë OCÌ®Ÿ‘ž¤  ‰Q4ãVZ�ÁՈ婔Zö ɸ{½uØ•6h€süF:¥å—þ¼ ‹ "눌½¾`FÎõdïé«�tˆ™Å+›QäÏq³ö=„å©W_½µT)ƒ¿rÛ] Ü;�.°Á˜ƒ­/t&�ñÀ|Åž�_ZÖ¸<Ðü¸«ð1SÍK2wâhKç‚Ò2-ë†Ïp�5NÀœRè‹y|Ô�~Ÿý*%“û$¡ž]¹ôªÏª ®ïƒ üOLâÕc¬Ž�èÚ2�œ‚Àömnv¹R“�c]èNxXž„F¯W�ï&ì‰mYt î!�ˆk»>P½7°P¿¶zÉu¬HAdï`iŽÍvú‰€Áæv‚ñJ­Á¿ bòÄWsÊí�4ÕH–Ë’ÈëƒLÀßL7"´>�ýNºýùøPu´1Ä’<¾Ëßø,_•÷B< µr¸»*ÊøÉ\í�ËÊýe]<ª‡Á×Ì»WÜÙÙ¹@› ѵr= ™Ð¬Ò±"ú•jäVdŠS_+ì×ó÷ß¡`ƒuRvõ0 <Üß _©­El)àU˜ní �«$á.Q–ÌA[*g€o߃/àÃRmD±ÄgûYZ.shstrtab.interp.note.gnu.property.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.gnu_debuglink.gnu_debugdata 880&hh$9ŒŒ Göÿÿo°°°Q ``xYØØ.aÿÿÿo-- nþÿÿo//°}À/À/ðu‡B°¥°¥8‘ÀÀŒ À Àà—ÏÏРÐÝÐÝ�g¦`E`E ¬PPRï ´T?T?d ¸L¸L$^Ìð·ð·Øø·ø·ä¸¸ ^ ñ  ú00Èÿ  ø 6ø5P ø5( 6¨ÈM(