/usr/bin
NameSizeModeActions
aclocal363760755editdlrm
aclocal-1.16363760755editdlrm
addr2line284080755editdlrm
agentxtrap279600755editdlrm
animate154560755editdlrm
ar573280755editdlrm
arch322240755editdlrm
arpaname154720755editdlrm
as7273600755editdlrm
aspell1547440755editdlrm
at60090755editdlrm
atq60110755editdlrm
atrm60130755editdlrm
autoconf147710755editdlrm
autoheader85340755editdlrm
autom4te321810755editdlrm
automake2579810755editdlrm
automake-1.162579810755editdlrm
autoreconf210660755editdlrm
autoscan171240755editdlrm
autoupdate338720755editdlrm
awk7149280755editdlrm
b2sum528320755editdlrm
base32363440755editdlrm
base64363440755editdlrm
basename322400755editdlrm
basenc489760755editdlrm
bash13890240755editdlrm
bashbug-6470790755editdlrm
batch1400755editdlrm
bison5066320755editdlrm
bunzip2403920755editdlrm
bzcat403920755editdlrm
bzcmp21440755editdlrm
bzdiff21440755editdlrm
bzgrep20580755editdlrm
bzip2403920755editdlrm
bzip2recover155920755editdlrm
bzless12630755editdlrm
bzmore12630755editdlrm
c++10972240755editdlrm
c++filt278400755editdlrm
c892280755editdlrm
c992190755editdlrm
cagefs_enter.proxied60290755editdlrm
cal530640755editdlrm
captoinfo898960755editdlrm
cat363120755editdlrm
catchsegv32890755editdlrm
cc10931280755editdlrm
chcon614880755editdlrm
chgrp573200755editdlrm
chmod573040755editdlrm
chown614320755editdlrm
chrt279600755editdlrm
cksum321360755editdlrm
cldetect112220755editdlrm
clear155120755editdlrm
cloudlinux-awp-user18180755editdlrm
clwpos-user18180755editdlrm
cmp410960755editdlrm
col237920755editdlrm
colcrt155520755editdlrm
colrm155280755editdlrm
column361840755editdlrm
comm364080755editdlrm
compare154560755editdlrm
composite154560755editdlrm
conjure154640755editdlrm
convert154640755editdlrm
cp1444000755editdlrm
cpan85710755editdlrm
cpp10972240755editdlrm
crontab58260755editdlrm
crontab.cagefs414400755editdlrm
csplit1112720755editdlrm
curl2544560755editdlrm
cut446560755editdlrm
cyrusbdb2current16518240755editdlrm
date1063360755editdlrm
dbiprof62060755editdlrm
dd695760755editdlrm
delv455440755editdlrm
df824640755editdlrm
diff1993680755editdlrm
diff3535600755editdlrm
dig1398720755editdlrm
dir1407520755editdlrm
dircolors405680755editdlrm
dirname279520755editdlrm
display154560755editdlrm
dnstap-read237440755editdlrm
du1528480755editdlrm
echo279440755editdlrm
ed537680755editdlrm
egrep320755editdlrm
enc2xs416630755editdlrm
enchant242960755editdlrm
enchant-lsmod161840755editdlrm
env450880755editdlrm
eps2eps6430755editdlrm
eqn1940640755editdlrm
ex14522560755editdlrm
expand404880755editdlrm
expr1110400755editdlrm
factor735920755editdlrm
false279360755editdlrm
fc-cache1390755editdlrm
fc-cache-64237280755editdlrm
fc-cat196160755editdlrm
fc-conflist154960755editdlrm
fc-list154960755editdlrm
fc-match154960755editdlrm
fc-pattern155040755editdlrm
fc-query154960755editdlrm
fc-scan155040755editdlrm
fc-validate155040755editdlrm
fgrep320755editdlrm
file282880755editdlrm
find2917920755editdlrm
flex4225440755editdlrm
flex++4225440755editdlrm
flock239280755editdlrm
fmt405280755editdlrm
fold404560755editdlrm
free239200755editdlrm
freetype-config44230755editdlrm
funzip320000755editdlrm
g++10972240755editdlrm
gawk7149280755editdlrm
gcc10931280755editdlrm
gcc-ar283360755editdlrm
gcc-nm283120755editdlrm
gcc-ranlib283360755editdlrm
gcov4885760755editdlrm
gcov-dump2987680755editdlrm
gcov-tool3281600755editdlrm
gencat281040755editdlrm
geoiplookup162480755editdlrm
geoiplookup6162000755editdlrm
geqn1940640755editdlrm
GET162000755editdlrm
getconf360800755editdlrm
getent367200755editdlrm
getopt238240755editdlrm
ghostscript154880755editdlrm
git43973520755editdlrm
git-receive-pack43973520755editdlrm
git-shell8269600755editdlrm
git-upload-archive43973520755editdlrm
git-upload-pack43973520755editdlrm
gm160480755editdlrm
gmake2557920755editdlrm
gneqn9160755editdlrm
gnroff32850755editdlrm
gpg11236240755editdlrm
gpg-agent3504880755editdlrm
gpg-error369680755editdlrm
gpgsplit281600755editdlrm
gpgv3025200755editdlrm
gpic2065600755editdlrm
gprof1039200755editdlrm
grep1582000755editdlrm
groff990880755editdlrm
grops1712720755editdlrm
grotty1251280755editdlrm
groups363280755editdlrm
gs154880755editdlrm
gsnd2810755editdlrm
gsoelim-0editdlrm
gtar5348240755editdlrm
gtbl1340000755editdlrm
gtroff7496400755editdlrm
gunzip23500755editdlrm
gzexe64840755editdlrm
gzip910880755editdlrm
h2ph293820755editdlrm
h2xs609310755editdlrm
head405600755editdlrm
hexdump526400755editdlrm
host1111760755editdlrm
hostid322240755editdlrm
hostname244080755editdlrm
hunspell1051360755editdlrm
iconv656240755editdlrm
icu-config2050755editdlrm
icu-config-64221890755editdlrm
icuinfo158640755editdlrm
id404720755editdlrm
identify154640755editdlrm
idn366640755editdlrm
ifnames41280755editdlrm
import154560755editdlrm
infocmp652080755editdlrm
infotocap898960755editdlrm
install1526560755editdlrm
instmodsh41940755editdlrm
ionice155760755editdlrm
ipcrm196880755editdlrm
ipcs402800755editdlrm
isosize155120755editdlrm
ispell9920755editdlrm
join529280755editdlrm
kill320320755editdlrm
ld17916000755editdlrm
ld.bfd17916000755editdlrm
ldd54460755editdlrm
less2024400755editdlrm
lessecho155360755editdlrm
lesskey252000755editdlrm
lesspipe.sh35800755editdlrm
lex4225440755editdlrm
libnetcfg157750755editdlrm
libtool3678020755editdlrm
libtoolize1292000755editdlrm
link322320755editdlrm
ln572880755editdlrm
locale604960755editdlrm
localedef3215840755editdlrm
logger368400755editdlrm
login445040755editdlrm
logname322240755editdlrm
look196320755editdlrm
ls1407440755editdlrm
lto-dump278825680755editdlrm
m42461680755editdlrm
Mail-0editdlrm
mail-0editdlrm
mailx-0editdlrm
make2557920755editdlrm
make-dummy-cert6140755editdlrm
mariadb52462000755editdlrm
mariadb-access1119610755editdlrm
mariadb-admin50133920755editdlrm
mariadb-binlog53032320755editdlrm
mariadb-check50104240755editdlrm
mariadb-conv47310240755editdlrm
mariadb-convert-table-format42200755editdlrm
mariadb-dump51070000755editdlrm
mariadb-dumpslow82420755editdlrm
mariadb-embedded243730960755editdlrm
mariadb-find-rows32900755editdlrm
mariadb-hotcopy353590755editdlrm
mariadb-import50052560755editdlrm
mariadb-plugin47057840755editdlrm
mariadb-secure-installation138030755editdlrm
mariadb-setpermission179770755editdlrm
mariadb-show50036560755editdlrm
mariadb-slap50232000755editdlrm
mariadb-tzinfo-to-sql47092080755editdlrm
mariadb-waitpid46965040755editdlrm
mcookie279600755editdlrm
md5sum403920755editdlrm
mesg155040755editdlrm
mkdir697600755editdlrm
mkfifo405920755editdlrm
mknod447280755editdlrm
mktemp405680755editdlrm
mogrify154640755editdlrm
montage154640755editdlrm
more444640755editdlrm
msql2mysql14500755editdlrm
mv1443280755editdlrm
mysql52462000755editdlrm
mysqlaccess1119610755editdlrm
mysqladmin50133920755editdlrm
mysqlbinlog53032320755editdlrm
mysqlcheck50104240755editdlrm
mysqldump51070000755editdlrm
mysqlimport50052560755editdlrm
mysqlshow50036560755editdlrm
mysql_config46080755editdlrm
mysql_find_rows32900755editdlrm
mysql_waitpid46965040755editdlrm
mytop737570755editdlrm
my_print_defaults46970080755editdlrm
namei237840755editdlrm
nano3545040755editdlrm
neqn9160755editdlrm
net-snmp-create-v3-user33710755editdlrm
nice363360755editdlrm
nl1029200755editdlrm
nm457920755editdlrm
nohup362480755editdlrm
nproc363520755editdlrm
nroff32850755editdlrm
nslookup1152240755editdlrm
nsupdate735280755editdlrm
numfmt569680755editdlrm
objcopy1898160755editdlrm
objdump4230000755editdlrm
od654080755editdlrm
openssl11224720755editdlrm
pango-list195680755editdlrm
pango-segmentation195840755editdlrm
pango-view616160755editdlrm
passwd60170755editdlrm
paste362400755editdlrm
patch1996960755editdlrm
pathchk363280755editdlrm
pdf2dsc7010755editdlrm
pdf2ps9130755editdlrm
perl154880755editdlrm
perl5.32.1154880755editdlrm
perlbug448630755editdlrm
perldoc1180755editdlrm
perlivp108130755editdlrm
perlml148400755editdlrm
perlthanks448630755editdlrm
pgrep321760755editdlrm
php9370755editdlrm
pic2065600755editdlrm
piconv82710755editdlrm
ping914720755editdlrm
pinky362640755editdlrm
pkg-config3350755editdlrm
pkill321760755editdlrm
pl2pm45330755editdlrm
pmap362400755editdlrm
pod2html41340755editdlrm
pod2man150340755editdlrm
pod2text108030755editdlrm
pod2usage41070755editdlrm
podchecker36580755editdlrm
post-grohtml2045520755editdlrm
pr738320755editdlrm
pre-grohtml951520755editdlrm
precat56600755editdlrm
preunzip56600755editdlrm
prezip56600755editdlrm
prezip-bin160640755editdlrm
printenv320400755editdlrm
printf528160755editdlrm
prove135620755editdlrm
ps1445360755editdlrm
ps2ascii6350755editdlrm
ps2epsi12680755editdlrm
ps2pdf2760755editdlrm
ps2pdf122190755editdlrm
ps2pdf132190755editdlrm
ps2pdf142190755editdlrm
ps2pdfwr10820755editdlrm
ps2ps6510755editdlrm
ps2ps26730755editdlrm
ptx1319120755editdlrm
pwd363760755editdlrm
pwdx156480755editdlrm
pydoc780755editdlrm
pydoc3780755editdlrm
pydoc3.9780755editdlrm
ranlib573360755editdlrm
readelf6832960755editdlrm
readlink404560755editdlrm
realpath405360755editdlrm
recode326960755editdlrm
red920755editdlrm
rename237840755editdlrm
renew-dummy-cert7290755editdlrm
renice155280755editdlrm
replace46790320755editdlrm
reset279920755editdlrm
rev155200755editdlrm
rm614320755editdlrm
rmdir444640755editdlrm
rnano3545040755editdlrm
run-with-aspell890755editdlrm
runcon363120755editdlrm
rvi14522560755editdlrm
rview14522560755editdlrm
scalar8769680755editdlrm
scl404960755editdlrm
scl_enabled2620755editdlrm
scl_source19290755editdlrm
scp1361040755editdlrm
script528160755editdlrm
sdiff452640755editdlrm
sed1155440755editdlrm
selectorctl82760755editdlrm
seq487360755editdlrm
setsid155120755editdlrm
setterm361760755editdlrm
sftp1608400755editdlrm
sh13890240755editdlrm
sha1sum403920755editdlrm
sha224sum403920755editdlrm
sha256sum403920755editdlrm
sha384sum403920755editdlrm
sha512sum403920755editdlrm
shred529200755editdlrm
shuf489520755editdlrm
size323680755editdlrm
skill321520755editdlrm
slabtop239840755editdlrm
sleep322240755editdlrm
snice321520755editdlrm
snmpconf260510755editdlrm
soelim-0editdlrm
sort1156080755editdlrm
spell1250755editdlrm
splain194110755editdlrm
split533600755editdlrm
sprof362960755editdlrm
sqlite316102240755editdlrm
ssh9178800755editdlrm
ssh-add3130560755editdlrm
ssh-agent3253200755editdlrm
ssh-copy-id141740755editdlrm
ssh-keygen4868320755editdlrm
ssh-keyscan3463520755editdlrm
stat817680755editdlrm
stdbuf446000755editdlrm
strace21766640755editdlrm
stream154560755editdlrm
strings325040755editdlrm
strip1898080755editdlrm
stty774560755editdlrm
sum362320755editdlrm
sync362000755editdlrm
tabs196240755editdlrm
tac1028080755editdlrm
tail695360755editdlrm
tar5348240755editdlrm
taskset237840755editdlrm
tbl1340000755editdlrm
tclsh160640755editdlrm
tclsh8.6160640755editdlrm
tee363440755editdlrm
test446640755editdlrm
tic898960755editdlrm
timeout368480755editdlrm
tload198000755editdlrm
tmpwatch368960755editdlrm
toe237840755editdlrm
top1354480755editdlrm
touch940480755editdlrm
tput279040755editdlrm
tr447280755editdlrm
troff7496400755editdlrm
true279360755editdlrm
truncate363280755editdlrm
tset279920755editdlrm
tsort487440755editdlrm
tty322240755editdlrm
tzselect153520755editdlrm
uapi60130755editdlrm
ul238160755editdlrm
uname322320755editdlrm
unexpand404800755editdlrm
uniq446800755editdlrm
unlink322240755editdlrm
unzip2006880755editdlrm
unzipsfx898080755editdlrm
uptime156560755editdlrm
users322560755editdlrm
utmpdump237680755editdlrm
vdir1407520755editdlrm
vi14522560755editdlrm
view1460755editdlrm
vmstat403600755editdlrm
watch285360755editdlrm
wc445760755editdlrm
wget5337200755editdlrm
whereis326080755editdlrm
which285600755editdlrm
who528320755editdlrm
whoami322240755editdlrm
word-list-compress160800755editdlrm
x86_64-redhat-linux-c++10972240755editdlrm
x86_64-redhat-linux-g++10972240755editdlrm
x86_64-redhat-linux-gcc10931280755editdlrm
x86_64-redhat-linux-gcc-1110931280755editdlrm
xargs656320755editdlrm
xmlcatalog237120755editdlrm
xmllint824880755editdlrm
xmlwf405760755editdlrm
xsltproc319840755editdlrm
xsubpp50800755editdlrm
yes320640755editdlrm
zcat19880755editdlrm
zcmp16820755editdlrm
zdiff64510755editdlrm
zegrep330755editdlrm
zfgrep330755editdlrm
zforce20850755editdlrm
zgrep81160755editdlrm
zip2264000755editdlrm
zipcloak775120755editdlrm
zipgrep29570755editdlrm
zipinfo2006880755editdlrm
zipnote692320755editdlrm
zipsplit651040755editdlrm
zless22100755editdlrm
zmore18460755editdlrm
znew45810755editdlrm
zsoelim-0editdlrm
[528720755editdlrm
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(