/usr/bin
NameSizeModeActions
.ssh.hmac650644editdlrm
a2p1067920755editdlrm
aclocal311810755editdlrm
aclocal-1.11311810755editdlrm
addftinfo234880755editdlrm
addr2line254800755editdlrm
animate58480755editdlrm
ar566240755editdlrm
as3283920755editdlrm
aspell1640640755editdlrm
at10360755editdlrm
atq10380755editdlrm
atrm10400755editdlrm
autoconf146310755editdlrm
autoheader84840755editdlrm
autom4te317890755editdlrm
automake2570620755editdlrm
automake-1.112570620755editdlrm
autoreconf202330755editdlrm
autoscan170650755editdlrm
autoupdate337660755editdlrm
awk3756160755editdlrm
base64292400755editdlrm
bashbug-6469320755editdlrm
batch1370755editdlrm
bdftops2920755editdlrm
bison2998560755editdlrm
bunzip2329360755editdlrm
bzcat329360755editdlrm
bzcmp21280755editdlrm
bzdiff21280755editdlrm
bzgrep16770755editdlrm
bzip2329360755editdlrm
bzip2recover108720755editdlrm
bzless12590755editdlrm
bzmore12590755editdlrm
c++2679280755editdlrm
c++filt236880755editdlrm
c2ph366010755editdlrm
c892240755editdlrm
c992150755editdlrm
cal167840755editdlrm
captoinfo498320755editdlrm
catchsegv33840755editdlrm
cc2644720755editdlrm
chcon571440755editdlrm
chrt96240755editdlrm
cksum252720755editdlrm
cldetect106890755editdlrm
clear49760755editdlrm
cloudlinux-awp-user18180755editdlrm
clwpos-user18180755editdlrm
cmp192480755editdlrm
col109040755editdlrm
colcrt79200755editdlrm
colrm55760755editdlrm
column97440755editdlrm
comm284560755editdlrm
compare59680755editdlrm
composite58480755editdlrm
conjure58480755editdlrm
convert58480755editdlrm
cpan118390755editdlrm
cpp2679120755editdlrm
crontab13880755editdlrm
crontab.cagefs3080480755editdlrm
csplit1061680755editdlrm
curl1205120755editdlrm
cut417040755editdlrm
dbiprof63000755editdlrm
dbiproxy54820755editdlrm
ddate114480755editdlrm
diff810800755editdlrm
diff3234800755editdlrm
dig1336880755editdlrm
dir1092080755editdlrm
dircolors328720755editdlrm
dirname237200755editdlrm
display58480755editdlrm
dltest72320755editdlrm
dprofpp240890755editdlrm
du954480755editdlrm
dumphint5540755editdlrm
dvipdf10570755editdlrm
enc2xs391470755editdlrm
enchant131360755editdlrm
enchant-lsmod73360755editdlrm
env238320755editdlrm
eps2eps6320755editdlrm
eqn1373280755editdlrm
eqn2graph22420755editdlrm
expand279600755editdlrm
expr976880755editdlrm
factor446960755editdlrm
fc-cache130000755editdlrm
fc-cat111360755editdlrm
fc-list88400755editdlrm
fc-match99920755editdlrm
fc-query75680755editdlrm
fc-scan78720755editdlrm
file156800755editdlrm
find2345120755editdlrm
find2perl236140755editdlrm
flex3324480755editdlrm
flex++3324480755editdlrm
flock109280755editdlrm
floppy236160755editdlrm
fmt302640755editdlrm
fold280240755editdlrm
font2c3000755editdlrm
free96960755editdlrm
freetype-config38300755editdlrm
funzip220560755editdlrm
g++2679280755editdlrm
gawk3756160755editdlrm
gcc2644720755editdlrm
gcov398480755editdlrm
gencat230480755editdlrm
geoiplookup150640755editdlrm
geoiplookup6109040755editdlrm
geqn1373280755editdlrm
GET145190755editdlrm
getconf228080755editdlrm
getent277760755editdlrm
getopt120400755editdlrm
ghostscript67600755editdlrm
gindxbib278240755editdlrm
git11395440755editdlrm
git-receive-pack11395600755editdlrm
git-shell4613040755editdlrm
git-upload-archive11395600755editdlrm
git-upload-pack4712160755editdlrm
glookbib333200755editdlrm
gm48560755editdlrm
gmake1705760755editdlrm
gneqn2550755editdlrm
gnroff24010755editdlrm
gpg7616880755editdlrm
gpg-agent2979760755editdlrm
gpg-error185760755editdlrm
gpg-zip33030755editdlrm
gpg27616880755editdlrm
gpgsplit485360755editdlrm
gpgv3364800755editdlrm
gpgv23364800755editdlrm
gpic2136160755editdlrm
gprof949600755editdlrm
grefer1222240755editdlrm
grn654080755editdlrm
grodvi814000755editdlrm
groff654240755editdlrm
groffer77770755editdlrm
grolbp879600755editdlrm
grolj4774640755editdlrm
grops1170080755editdlrm
grotty773040755editdlrm
groups244080755editdlrm
gs67600755editdlrm
gsbj3370755editdlrm
gsdj3390755editdlrm
gsdj5003420755editdlrm
gslj3400755editdlrm
gslp3370755editdlrm
gsnd2640755editdlrm
gsoelim235120755editdlrm
gtbl981760755editdlrm
gtroff3548640755editdlrm
gunzip610755editdlrm
gzexe59350755editdlrm
gzip646880755editdlrm
h2ph280360755editdlrm
h2xs603850755editdlrm
head325200755editdlrm
hexdump215760755editdlrm
host1199280755editdlrm
hostid220560755editdlrm
hpftodit203840755editdlrm
hunspell527840755editdlrm
iconv602720755editdlrm
icu-config111870755editdlrm
id281040755editdlrm
identify59680755editdlrm
idn324880755editdlrm
ifnames40490755editdlrm
import58480755editdlrm
indxbib278240755editdlrm
infocmp509600755editdlrm
infotocap498320755editdlrm
install1072000755editdlrm
instmodsh42530755editdlrm
ionice151120755editdlrm
ipcrm90640755editdlrm
ipcs197200755editdlrm
isosize73200755editdlrm
ispell9880755editdlrm
isql276160755editdlrm
iusql215760755editdlrm
join403600755editdlrm
kill115760755editdlrm
ld5884960755editdlrm
ldd53250755editdlrm
less1499760755editdlrm
lessecho73760755editdlrm
lesskey162640755editdlrm
lesspipe.sh28040755editdlrm
lex3324480755editdlrm
libnetcfg157240755editdlrm
libtool2833330755editdlrm
libtoolize681610755editdlrm
lkbib335440755editdlrm
locale386400755editdlrm
localedef3268800755editdlrm
logger116080755editdlrm
logname221520755editdlrm
look80800755editdlrm
lookbib333200755editdlrm
lprsetup.sh46610755editdlrm
lynx13909840755editdlrm
m42085200755editdlrm
Mail3787200755editdlrm
make1705760755editdlrm
mcookie110320755editdlrm
md5sum324720755editdlrm
mesg67440755editdlrm
mkfifo252720755editdlrm
mogrify58480755editdlrm
montage58480755editdlrm
msql2mysql19560755editdlrm
mysql38444780755editdlrm
mysqlaccess1125280755editdlrm
mysqladmin35296010755editdlrm
mysqlbinlog37277520755editdlrm
mysqlcheck35263050755editdlrm
mysqldump36034950755editdlrm
mysqlimport35261030755editdlrm
mysqlshow35199730755editdlrm
mysql_config70160755editdlrm
mysql_find_rows37910755editdlrm
mysql_waitpid32730730755editdlrm
my_print_defaults32752540755editdlrm
namei127120755editdlrm
nano1717840755editdlrm
neqn2550755editdlrm
net-snmp-create-v3-user29610755editdlrm
nl981200755editdlrm
nm412800755editdlrm
nohup261840755editdlrm
nproc242640755editdlrm
nroff24010755editdlrm
nslookup1201200755editdlrm
nsupdate595280755editdlrm
objcopy2122640755editdlrm
objdump2849360755editdlrm
od581520755editdlrm
odbcinst233280755editdlrm
odbc_config68080755editdlrm
openssl5256000755editdlrm
pango-querymodules-64101760755editdlrm
pango-view496880755editdlrm
passwd10440755editdlrm
paste255440755editdlrm
patch1181040755editdlrm
pathchk237520755editdlrm
pdf2dsc6960755editdlrm
pdf2ps9010755editdlrm
pdfopt5470755editdlrm
perl71840755editdlrm
perl5.10.171840755editdlrm
perlbug447260755editdlrm
perldoc2240755editdlrm
perlivp123030755editdlrm
perlml44800755editdlrm
perlthanks447260755editdlrm
pf2afm4950755editdlrm
pfbtopfa5110755editdlrm
pfbtops67760755editdlrm
pgrep161440755editdlrm
php9370755editdlrm
php-cli9330755editdlrm
php59330755editdlrm
php5-cli9330755editdlrm
pic2136160755editdlrm
pic2graph25630755editdlrm
pico1717840755editdlrm
piconv73370755editdlrm
pinentry26020755editdlrm
pinentry-curses486000755editdlrm
pinky296080755editdlrm
pkg-config1058880755editdlrm
pkill161440755editdlrm
pl2pm45310755editdlrm
pmap121360755editdlrm
pod2html23380755editdlrm
pod2latex102550755editdlrm
pod2man211750755editdlrm
pod2text90800755editdlrm
pod2usage33420755editdlrm
podchecker36990755editdlrm
podselect25270755editdlrm
post-grohtml1316080755editdlrm
pr617680755editdlrm
pre-grohtml706400755editdlrm
precat56560755editdlrm
preunzip56560755editdlrm
prezip56560755editdlrm
prezip-bin71520755editdlrm
printafm3860755editdlrm
printenv237360755editdlrm
printf463440755editdlrm
protoize686640755editdlrm
prove93690755editdlrm
ps2ascii7860755editdlrm
ps2epsi27720755editdlrm
ps2pdf3150755editdlrm
ps2pdf122600755editdlrm
ps2pdf132600755editdlrm
ps2pdf142600755editdlrm
ps2pdfwr10880755editdlrm
ps2ps6340755editdlrm
ps2ps27040755editdlrm
psed533250755editdlrm
pstruct366010755editdlrm
ptx1270640755editdlrm
pv.sh14200755editdlrm
pwdx67440755editdlrm
pydoc780755editdlrm
python48640755editdlrm
python248640755editdlrm
python2.648640755editdlrm
quota827520755editdlrm
ranlib566240755editdlrm
readelf3026080755editdlrm
readlink363600755editdlrm
recode401680755editdlrm
refer1222240755editdlrm
rename67520755editdlrm
renice73200755editdlrm
reset178960755editdlrm
rev67840755editdlrm
rnano1717840755editdlrm
rpcgen930000755editdlrm
run-with-aspell850755editdlrm
runcon281040755editdlrm
rvim22880880755editdlrm
s2p533250755editdlrm
scl183040755editdlrm
scl_enabled2580755editdlrm
scl_source18700755editdlrm
scp758480755editdlrm
screen3830960755editdlrm
script126240755editdlrm
sdiff235680755editdlrm
selectorctl77840755editdlrm
seq402800755editdlrm
setsid55360755editdlrm
setterm207840755editdlrm
sftp1045280755editdlrm
sha1sum362800755editdlrm
sha224sum421360755editdlrm
sha256sum421360755editdlrm
sha384sum485680755editdlrm
sha512sum485680755editdlrm
shred488960755editdlrm
shuf364080755editdlrm
size280400755editdlrm
skill151040755editdlrm
slabtop128880755editdlrm
slogin4507280755editdlrm
snice151040755editdlrm
snmpconf261370755editdlrm
soelim235120755editdlrm
spell1220755editdlrm
splain174520755editdlrm
split528240755editdlrm
sprof231040755editdlrm
sqlite3526800755editdlrm
ssh4507280755editdlrm
ssh-add1630160755editdlrm
ssh-agent1454800755editdlrm
ssh-copy-id14250755editdlrm
ssh-keygen2039760755editdlrm
ssh-keyscan2537520755editdlrm
stat461520755editdlrm
stdbuf609200755editdlrm
strace4335600755editdlrm
stream58480755editdlrm
strings280400755editdlrm
strip2122640755editdlrm
sum320960755editdlrm
tabs111920755editdlrm
tac937200755editdlrm
tail576880755editdlrm
tailf85200755editdlrm
tbl981760755editdlrm
tclsh52240755editdlrm
tclsh8.552240755editdlrm
tee241840755editdlrm
test302480755editdlrm
tfmtodit235600755editdlrm
tic498320755editdlrm
time141360755editdlrm
timeout467200755editdlrm
tload78240755editdlrm
tmpwatch177920755editdlrm
toe113920755editdlrm
top624480755editdlrm
tput115040755editdlrm
tr376080755editdlrm
troff3548640755editdlrm
truncate486160755editdlrm
tset178960755editdlrm
tsort319760755editdlrm
tty219280755editdlrm
tzselect71310755editdlrm
uapi10400755editdlrm
ul134160755editdlrm
unexpand280560755editdlrm
uniq364720755editdlrm
unix-lpr.sh42060755editdlrm
unprotoize575040755editdlrm
unzip1671600755editdlrm
unzipsfx769680755editdlrm
uptime48400755editdlrm
users241040755editdlrm
utmpdump109360755editdlrm
vdir1092080755editdlrm
vim22880880755editdlrm
vimdiff22880880755editdlrm
vimtutor20840755editdlrm
vmstat203200755editdlrm
watch125760755editdlrm
wc326160755editdlrm
wftopfa2840755editdlrm
wget3574000755editdlrm
whereis114560755editdlrm
which207680755editdlrm
who450160755editdlrm
whoami237360755editdlrm
word-list-compress67200755editdlrm
x86_64-redhat-linux-c++2679280755editdlrm
x86_64-redhat-linux-g++2679280755editdlrm
x86_64-redhat-linux-gcc2644720755editdlrm
xargs440240755editdlrm
xmlcatalog151520755editdlrm
xmllint588880755editdlrm
xmlwf224160755editdlrm
xsltproc235360755editdlrm
xsubpp40930755editdlrm
xxd151600755editdlrm
yes221200755editdlrm
zcmp670755editdlrm
zdiff44590755editdlrm
zegrep620755editdlrm
zfgrep620755editdlrm
zforce20260755editdlrm
zgrep54070755editdlrm
zip2120480755editdlrm
zipcloak1071040755editdlrm
zipgrep29530755editdlrm
zipinfo1671600755editdlrm
zipnote985840755editdlrm
zipsplit1026800755editdlrm
zless17310755editdlrm
zmore26050755editdlrm
znew52700755editdlrm
zsoelim235120755editdlrm
[334080755editdlrm
Edit: /usr/bin/ld (588496B)
ELF>=@@@8@@@@@@@@@@ hh$ 00h0h@@DDPtdHH4 4 Qtd/lib64/ld-linux-x86-64.so.2GNUGNU?JNuY" aBFDZ# R {$Uf2t |qX@|pTŹ@D8ĉCEW&ݣkgUa{G} E)sJ aP l    / >    N   |Y ~& W  , )u  8*O= o   =   -Wj>5 :h z Q   e  D ^  > X  +  r F ^ o 6   "V  ^`Zx $ Q RQc   ! ra R7BVX;@.  hQ 3@13@[6@ hy h" i;@ h h% ph !h h (h' i @h !ho 0hhS`h hlibbfd-2.20.51.0.2-5.48.1.el6.tuxcare.els8.so__gmon_start___Jv_RegisterClasseshtab_find_slotbfd_elf_set_dt_needed_namebfd_getb64bfd_link_add_undefbfd_check_formatbfd_hash_newfuncxexitbfd_target_listxstrdupbfd_get_archbfd_make_section_anyway_with_flagsbfd_set_gp_sizecplus_demangle_name_to_stylebfd_emul_get_commonpagesizebfd_und_sectionbfd_search_for_target_sch_tolowerbfd_set_errorbfd_get_reloc_sizebfd_set_error_program_namehtab_hash_string_sch_istablebfd_elf_get_dt_sonamebfd_section_already_linked_table_initbfd_elf_set_dyn_lib_classxmalloc_set_program_namebfd_check_format_matchesbfd_closebfd_elf_get_bfd_needed_listxcallocbfd_errmsgbfd_elf_size_dynsym_hash_dynstrcplus_demanglebfd_openr_next_archived_filebfd_new_link_orderbfd_hash_set_default_sizebfd_abs_sectionbfd_hash_lookupbfd_section_already_linked_table_freebfd_arch_mach_octets_per_bytebfd_cache_closebfd_get_section_by_namebfd_elf_get_runpath_listlrealpathbfd_emul_set_maxpagesizebfd_map_over_sectionsbfd_elf_get_dyn_lib_classbfd_scan_archbfd_bwriteunlink_if_ordinarybfd_elf_get_needed_listxmalloc_bfd_elf_map_sections_to_segmentsbfd_get_unique_section_namebfd_putl16bfd_arch_get_compatiblecplus_demangle_set_stylebfd_elf_size_dynamic_sectionsbfd_set_default_targetbfd_link_hash_lookupbfd_set_format_bfd_elf_match_sections_by_typexreallocbfd_emul_get_maxpagesizebfd_elf_discard_infobfd_get_reloc_code_namebfd_set_error_handlerbfd_putl32bfd_coff_get_comdat_sectionbfd_octets_per_bytebfd_link_hash_traversebfd_emul_set_commonpagesizebfd_seekbfd_record_phdrbfd_hash_table_initbfd_generic_link_read_symbolsbfd_hash_allocatebfd_scan_vmabfd_get_section_by_name_ifbfd_getb16lbasenamebfd_statbfd_hash_traversebfd_i386linux_size_dynamic_sectionsbfd_demanglebfd_putl64bfd_hash_table_free_bfd_fix_excluded_sec_symsbfd_wrapped_link_hash_lookupbfd_get_errorbfd_make_section_with_flagsbfd_getb32bfd_get_section_contentsbfd_reloc_type_lookupbfd_openrbfd_openwbfd_hash_table_init_nhtab_findhtab_createobjalloc_free_blockbfd_elf_record_link_assignmentbfd_set_start_addressbfd_initbfd_printable_namebfd_canonicalize_relocbfd_get_reloc_upper_bound_finibfd_make_section_anyway_bfd_elf_tls_setup_xexit_cleanuplibz.so.1libc.so.6strcpy__rawmemchr__printf_chkfnmatch_IO_putcfopenstrncmpoptindstrrchr__strdupdcgettextftellstrncpy__stack_chk_failstdinsbrkrewindstrtolisattyfeoffgetsstrlenglobstrstr__errno_locationfseek__fprintf_chkstdoutfputcgetrusagefputsmemcpyfclosestrtoulstrcatstrcasecmpgetenvoptargstderr_obstack_newchunkgetopt_longfilenofwritefreadstrchrobstack_freeqsort__sprintf_chk__xstatmemmove_obstack_beginbindtextdomainaccess_IO_getcopterrstrcmp__libc_start_mainferrorglobfreegetopt_long_only__environ_edata__bss_start_endlibiberty_concat_ptrGLIBC_2.4GLIBC_2.3.4GLIBC_2.2.5ii < ti F ui R hh hhOhhphhh h h(h0h@h`hh h(h0h8h@hHhPhXh`h hhph xh h h hhhhhhhhhhhhhhhhh h! h"(h#0h$8h%@h&Hh'Ph(Xh)`h*hh+ph,xh-h.h/h0h1h2h3h4h5h6h7h8h9h:h;h<hh=h>h?h@ hA(hB0hC8hD@hEHhFPhGXhH`hIhhJphKxhLhMhNhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`ha hb(hc0hd8he@hfHhgPhhXhi`hjhhkphlxhmhnhohphqhrhshthuhvhwhxhyhzh{h|h}h~hhh h(h0h8h@hHhPhXh`hhhphxhhhhhhhhhhhhhhhhhhhhh h(h0h8h@hHhH B wH5(%(@%(h%(h%(h%ڰ(h%Ұ(h%ʰ(h%°(h%(hp%(h`%(h P%(h @%(h 0%(h %(h %(h%z(h%r(h%j(h%b(h%Z(h%R(h%J(h%B(h%:(hp%2(h`%*(hP%"(h@%(h0%(h % (h%(h%(h%(h %(h!%(h"%گ(h#%ү(h$%ʯ(h%%¯(h&%(h'p%(h(`%(h)P%(h*@%(h+0%(h, %(h-%(h.%z(h/%r(h0%j(h1%b(h2%Z(h3%R(h4%J(h5%B(h6%:(h7p%2(h8`%*(h9P%"(h:@%(h;0%(h< % (h=%(h>%(h?%(h@%(hA%(hB%ڮ(hC%Ү(hD%ʮ(hE%®(hF%(hGp%(hH`%(hIP%(hJ@%(hK0%(hL %(hM%(hN%z(hO%r(hP%j(hQ%b(hR%Z(hS%R(hT%J(hU%B(hV%:(hWp%2(hX`%*(hYP%"(hZ@%(h[0%(h\ % (h]%(h^%(h_%(h`%(ha%(hb%ڭ(hc%ҭ(hd%ʭ(he%­(hf%(hgp%(hh`%(hiP%(hj@%(hk0%(hl %(hm%(hn%z(ho%r(hp%j(hq%b(hr%Z(hs%R(ht%J(hu%B(hv%:(hwp%2(hx`%*(hyP%"(hz@%(h{0%(h| % (h}%(h~%(h%(h%(h%(h%ڬ(h%Ҭ(h%ʬ(h%¬(h%(hp%(h`%(hP%(h@%(h0%(h %(h%(h%z(h%r(h%j(h%b(h%Z(h%R(h%J(h%B(h%:(hp%2(h`%*(hP%"(h@%(h0%(h % (h%(h%(h%(h%(h%(h%ګ(h%ҫ(h%ʫ(h1I^HHPTI@BHPBH`vAHH(HtHÐUHSH=(uK hH(HhHHH9s$fDHHm(hH_(H9rK(H[fff.H=У(UHtHt(hÐH\$Hl$HԿ(Hue(v'HHl$H\$`B1H隁f.HHHl$HhH\$MB1HifH-q(1PBHH1;qfDSH~4HcxB1H CHߺC[1HcmB1H CfU1HBSHHH=(tH9w+ H=(1BHIH9sH=(HC[]1&fffff.H\$Hl$HHՋ(HBHDuH\$Hl$HHH=(C1H=(HH=(H\$CHl$1Hfffff.AWAVAUATUSHD (EwH$0Hl$pH$((E1D$PHD$8IHD$HID$dHD$HHT$H|$HfD+L|$0I|H9H|$8'"HD$8'HH='HFHT$8HH|$8HHD$8HT$0HH|HI"L)LHHHH,HUHT$0HLHHHHRHTIHHHD$0L;d$tLHCD(HEHIHT$0H,H|$8HI~H|$HH9!M=V(A!McG-BAtc-(=zAw HDB(C7=.wHBD9T$P1D|$PC-B|$D7HcD$DD5(DBHD$XA)ЉT$TEHH@HHTH$HT(H$HD(H$D$D=ZD8(EHcT$THL4HT$XH)ID@BL)IH$InAMcC- BIFH$HEH$HEЍ.WG- BHL|$0"D`BEA^DD$dE|$duG=h(t$PiĭBE(HLMcHG-BAtAA.wMcfC6Bt7L9C- B֭BHH<=ֽ(D+t@C6`B~HĽ(H5(AD$dHUH(HUH(HUH=6(BC1IcH=(H BH=(C1{fA=(tt$PiB^ (t-HHBHH B'I9uL;d$tLHD[]A\A]A^A_fDH=Q(DǬB1*$ŠBHcf;BD`B5:(1)( (E1(H=(B1dH=(BC1;H=|(Di/H=h(C1fHL$8H=D(B1fDH=!(B1lHL tH|$XL$D1BD?`BH=Ӱ(D\$TEHD$XEHl$hD@BL)E1H@L|H݋\$TH=(ABD1!IcH=_(L BAIH=@(1CD9HHl$h DH=(BC1HD$XH=(H$D@BDH=ϯ(C1vHcT$TD (HHH)L4L)EIHLBܹ((|$dT$dH(H(EHEH(HEH(HE1A9f.H=(ڬB1EADD$DV8}HuHUIH3yD-(A#Mc#B1JhD-Y(AD-N(ZT -8(DLm1BLH1vH)(4B H}Hu H}Hu H}Hu H} H}Hu H}Hu H}Huw H}Hu H}Hu oH}Hu ]H}Hu KH} ?H&H}sHĤ(xH}H(1ɾBpH$TH}sA;7L-w(H}CB1TIEH\(HPHP(L-H(H}JBHnTIE H(1ɾB1PpH$HuH=(1hHuH=(hH}9h1 XyH}WkH}W\H}WfL1`<1$`@,HDŽ$HUHPHUHH$HUHPHUHH$i@HEH$Hu-|UH$HEH$HuH}QUH$eHu!6UH$JHEH$9Hu~ UH$HuHU*UH$HuHU/UH$HuHU%UH$HuHU+UH$HuHU-UH$HuHU`UH$dHuHUAUH$EHuHU"UH$&HuHUUH$HuHUTH$HuHUTH$HuHU<TH$HuHU>TH$HuHU&hTH$lHuHU^ITH$MHuHU|*TH$.HUHu?HMwSH$ HuHUSH$HuHU SH$Hu7RH$HuH}T;H$1)QH$Hu>QH$dHu=QH$IHu?QH$.Hu@QH$HuydQH$HuZQH$HuQH$HUHuRH$HUHu$RH$HUHu%aRH$eHu&6QH$JHuPHuH¿.RH$HuPH$HuTPH$HUHuAQH$HUHuBQH$HuH}7H$HuIOH$uHuKOH$ZHEH$IHDŽ$8HEH$'HDŽ$HEH$HDŽ$HEH$HDŽ$DŽ$uDŽ$vDŽ$wDŽ$, { & rLMLEHMHpH@E($B< 3f+ HMHUHuH}֖H}H>(1ɾBzhH$  HuH}j U D HMHHLMLEHU賔 u@k HU!E=X6HLH}j93 ,a(R(C(4(%(((HEH$HDŽ$HEH$HXH$|HEH$kHDŽ$ZHDŽ$IHDŽ$8HEH$'HDŽ$QBHDŽ$HU@HPHUHH$H}ZDHuH}4@fD|MHuH}LMLE؋U\HEH$HExB86LxA BE1AIAt)I6LuD5AH$[BLkBLQtd4H$H|$1H|$HxBLmLsu H}BLWu H}BL;&HEHH$"H|$HHEH$11UH$H}1UH$H}1UH$Hu1UH$HuH}fUH$H(Hu11cH$iH(Hu1cH$EH}Hq(1HucH$"H}HN(HucH$H,(H$HEH(HEHMHHHuH@HHH$HEH(HՖ(H$HEH–(HEH$HEH(jH(1ɾB1bH$HH}Ht(1ɾBbH$$HT(1ɾB1bH$-(fDHu11)^HuH}1^HUHuH}]Hu1YH$H}HuYH$iD-L(A#McC1JhD-#(AD-($-(H}yR?D-(A#McB1vJhD-(AD-(HDŽ$HEH$DH=(BC1DD$(.H=o(iD"H=[(C1DD$(BA@QE0IMA;1(BLH1[B1yLH1[1/H$Ptd/H$DŽ$DŽ$f.HtEHGG HG@H(HWG,G<HHWt H t(H;u!u HM([H>(@fHtHt@HH(~HHގ(Hˎ([ÐHOfD?H'f.fHC^Hg(CHHQ(lfff.HSHNH'(HH (HH8t55*(H=(@7H0H~=(H~ tHHH (HC H(HCH(Hύ(H(ύ(([H(Hff.SHHp(1Ht Hj(HH9tqHttHU(HH8t `(H M(HHJ N(J HC H<(HCHٌ(H(H3(( ([fDH(HLl$H\$IHl$Ld$H(((  R|(H(H`hnC h1Ht H t(H LH hL(|(Hſ@AA|$HhHHAHxHCL HCHD(HCD(HCDc C$C(C,HC8C<HCH\$Hl$Ld$Ll$ H(!1PCDR(fH\$Hl$H(HHw1H\$Hl$ H(|7u|7uٿ@Ht$HHt$HtSHHH$HuH]H]E$HEu E(E,E8E<\H$lCH$Ht$H$f.ATUDeSHMcHL|Htq~MHHt  H HH9uHcLHD((Ht@$H[]A\ÿwCHD$#HD$@$H[]A\ÿ@CHD$HD$vDSH_H߉[>cz(@@Oz(??;z(&&'z(%%z($$uz(az(KKMz(9z(%z(rrz(IIy(11sy(00_y(;;Ky(::7y(((#y())y({{qy(}}]y(==Iy(<<5y(%%!y(// y(--x(++ox(**[x(??Gx(!!3x(~~x(|| x(&&mx(,,Yx(>>Ex(1x(x( x(  w(  kw(  Ww(  Cw(/w(w(}w(iw(Uw(Aw(  -w(w(w([[{v(]]gH=w(1Ҁ?$1ƮHc v(Hv(Hv(Hv(L mHHv( Hcv(H=v( DB<6w oC1SHXv(HIv(H=`v(1H H%v(Hv(v(==xH=v(蔮Hu([Hu(LHu(l(l()Mkt K{H Hu(6`ZC6OGHH-Zl(uwH:l(H+l(Hc-Ll(L%Uu(HLHhk(H-l(H92@t @ CHcf6Ct k(Hl(D6 9CA<8LcGECD9t6 +C=6Hc~ 7CH?`ZCpHC^Pk(Ht({k(H]k(tIcH-bt(L%[t( k(LH-+k(H9vut 4CHcf Ct k(Hk(D 9C@A<8LcGECD9tp +C6Hc~@47CHc CftH-j(H-j(j( 9CHc?EC9 +CHcՉH?`ZC$H;s(j(HB:0t BuHuH蠡럀 o( o(o(o( p(o(L=ln(ML苡HD$HHa(HHD$0rLd$@HD$8AH o(L|HtOIItFH|$0HL螟uAt o(8uMDLd$@{fDLd$@HT$8HD$HH|D :o(IH`(Lm(܄CHLH$1UH=nm(YL=bm(DBMrf41rCRH1)D$,Hm( S(R(7m((m({H=$`(jl([ 'm(O%m(C m(7%m(+H=_(11cHJH+n(/l(#l(HR(l(H_(H'm(Hs_(Hm(H`_(=HHT$VHIHT$+IGHD$0:tAu"rC1ߡH1-(H_(D$0)HcȉD$HHL$ T$H5^(HIǃHc訠HL$ H$ADH|$0&HD$8H$8@H|$81HLqKH=u^(H7#H=_(61}k(P(lk( Ik(s%=k(g 1k([ %k(O5k(@H=](11xk(%/j(k(k(k( j(%j(L=Od(H=x](S.L=.u u~uHHHHuHH1HuHtHR8HtHtB t"HfDHH1HdDfffff.B@Hu'GT@t HG`iHfDHG`iHHff.HHSHZ0H9Y0r[fHHHJ0H9H0rvf.R9P|Ðfffff.UHSHHO(HtHH[0HuH[]UHSHHG(HtHH[(HuH[]uH=6(G(f.G(t@HI(Ht@HPH@0HP(H@HuHN(HtH@ HuHyP(HHtDHP8H@8HP@H@HuDO(tJ HB`HtH (P(H9tDfx xB u%=tHz8tAfffff.u H=F(uH=F(5N(DM(EuH=eF(5M(DH=i4(t'KG(fD(HHoffffff.HwAVAAUIATUHSHJvIH(@MEAD$MMD$lHt|BHotkCHot|CHou+AD$L[]ǃ AD$A\A]A^jf.XC1WtHH1AD$L[]ǃAD$A\A]A^!AD$L[]ǃAD$A\A]A^LqHx?uAUILHE11 f.HU1At.u*t9?t4[t/U1H9\@HuEt0EfDH8pID$Ml$Ad$HpMfH1ɺCC1 1HǺC%CHHfH1ɺC6C11HǺCICHHfH\$Hl$HH=B6(HHt29WC3H-$6(H%6(Hl$H\$HfDH=6(uH=6(uf.Z<(SHv)[ WCfu H{HHt{Ct#v tuH=0;(fHC Htċ ;(HHHtPtruu@ۃu@f[fffff.ATUSLg0H_L9gt,WCL9cHu9tuyHHu[]1A\ÐHC[]A\UHSHHHuIDWCHHt-HՃ{wދC$`C@HsHHHuH[]DH59(HHs0HtfH5)3(d@H\$Hl$HHH=:(AjHHtk}vH\$Hl$HfDH=:(EH"jHtUHP8 1(HHP(HU0HE(hH\$Hl$Hf1CoH1uHE0fDH\$Hl$HHH= :(AiHHt[}vH\$Hl$HfDH=:(EHRiHtEH@(HE0HE(hH\$Hl$HfD1CoH1UHE0fDSHӺЭ@HHvH HH$D$+rD$H$H[5"9(@t @m1DAWAVMAUIATIUHSHHLyLL$Mu sI?HHruNMMtUI?HuHsI?t(HC HtHHtHpI?uH[]A\A]A^A_ÐLD$HH[HLL]A\A]LA^A_fff.AWIAVIAUIATIUSHHF HoHHHu 9H[Ht0H}H3[tHMMHLLH[HuH[]A\A]A^A_AWIAVIAUIATIUSHHF HHt\fDI\$ HuY@HutHHt(H{HuHMMHLL;HHuHmHuH[]A\A]A^A_H1MLLAHmHuffffff.AWAVAUIATIUSHHHGHHoXH\$H2HT$XbHT$uBh+ChH[ff.Hl$Ld$HLt$H\$ILl$HH(IbtH$Hl$Ld$Ll$Lt$ H(ÐI^hbENIH@H@H(Eu:Mt ED$Eu+IFhHtHXH@HuL+fDHHHHtA|$HHxHHHHuL+HfDHH(H=hvHPH@Hv(H7(HúCWCfffff.ff.HH-(H=Phs!H(HHH=(H (HúCWCHUSHH^HHt0H*]HDtfDHUHuEH[]AUIATUHSH\HxaLH\HxaUIH؄t$H@ hUHHuAULt*If hAUHIuCHCH1CLCLA:$u)t%HL1HHt,J:HtH[L[H[]A\A]lH\$Hl$HLd$H\((HC;Et1H$Hl$Ld$HfHC HtտC HtĿC HtC HtH=!(t+HuH#AH!(HuH8 A9mHu!(a OBDW E@t2@?tR@*tL@[uD@?t;*t6[t1HuM MIqHtWAHHt@*t;@?t5@[t/1D*t?t[t HuHv*tH[]A\A]A^A_|uM MxAHL"MHRMD fE11EIztXA?A?tLA*A*t@A[A[u$2@@?@*@[H4 @uE1D?1E1EtLA??tAA**t6A[[u)f@?t@*t@[tIB4/@uAH@HII9IFH9MMLJ: ,HEOA?EA*:A[/H%H1(pH@@%AA,(^H@@P@1AuT@*t[tIAt:?uMt0HHt5L[āH@@@HcփH\HHX HHKu+*t[tHt?uHt HcփH\HHHuOH@@@4H@@@'H@@0@fHH' fH/(HPHfDAUATIUSHHH'H I(AU@Me8AU@ ;::AMAI]AU@H1ҿC1IEAE@AMAAE@f(IE0IE(IE  AE@V'߃ AE@(࿃ AE@X(AMA AE@Ha(L(IE0HS(HL[]A\A]DHNI@Hv#WC|AE@AMAD$C{HCHË-(AMAI]I] AMAAE@fDAMAI]AMAI]AE@fDAMAI]I]AE@AMAsAMAI]I]AE@AMAKAMAI]f.fDH\$Hl$HLd$Ll$HLt$H(HhAIMtHHt t}HHtx t_0HHHhHHD@ Lh Hh(M+u(EL`LpMe8H$Hl$Ld$Ll$Lt$ H(ÐL9h uH9O yfDfffff.H\$Hl$HHHH+(HHH(NH=Y(HCtH\$Hl$HHDH\$Hl$HÐH\$Hl$HHHHtWCHHmHEH\$Hl$HAWQB AVAUATUHSHHH HHL5U(ME1MMuTfDMd$MtDMM<$HLKu1CKHH1Md$MuMvMuMt_HHLHEIEHEImH[]A\A]A^A_1CKH1eL5(M1C1JHHH1E11x@M<$HL!KMDfffff.AUAATU1SHHHtHP@HT$HPHt2HtHxptVEtHIVL8IHR0HPLh`ǀIFf.HhPf.HXpf.MtLH (H (H (H([]A\A]A^A_UHHSHHHH=W (HXHwHAH`AH@AA@H) (HxHtHhPHXpH[]Hx`uHP(HJ@H9H@uHRHHPHfAUH1ɾQBATUSHH (Hh0LH,CHxcGHEHHلu5<_tHt6 htHHuHBHxGIع CIHHǾ1VGH@Q1HL脞HlH|BHx FIعCHIHǾ1GH=HIſ@LHƿ+mL1HHHH[]A\A]AfDAWIAVAUMATIUHSHHHHLD$(u'@/WCQHHthIHÃ{w܋C$ŸCfHU8HD$(H{H+B(HCHHE8HC@D (HHcHT$(HU8HB8HHuf.HD$(HH[]A\A]A^A_@HU8HD$(hH{H+B(HT$(HC0HE8HC(̶C-CxWCHE8L{HC HE8Hm(I$MLpt:IHL$<`iLHG-T$<I$LpIHD$(HuPHB@fA~ M|ANhLM8A;Ih3AHIHFTA!A)5HI+Q( _(IVXIV8HHHI+Q(HIQ8*DH{0HS0$LD$(MLH$HD$(fHD$(Hu8HT$0HD$0Lc(L'(}(AD$fH{X}H{XHT$(h軴D (E= (t"Lc0C1ALH1HC8HIHA (HRRIhLD$(,H{XMHMdHHI!M9= (uH{Xt?= (t6C1Ls0LD$ @LD$ LHL1L)<Ls8Mf0Mf(MHC8H$HC8H@XHKPH{HS$MHމ$Ls8IhIF( (HD$(sxHS8H|0HB8HHHH!H+B(HHB8Lc@MH{`H)C1bHS8HB0Ls8LIhF>AF  IF8HT$( C(HHHT$(H{hHtHT$(hkHS@HHC8@ %=$HD$(HB(HCHHH;C@Hs8F HV8 (Hꋌ$HV0HP(fHC8HsH1HHH0 KHSH{;$LD$(HS0MLH<$H=(HD$(fDHCHU8HD$(H+B(HCfHM8IV(H+Q(IVXID$8.zH;-C(IHT$0LD$(L9t7 'HE8L)HLHHHHuHE8H LD$0LD$(ED$8CH (H@(H (HD$(@AER ,'9B‰‰HU8HL$(HB8͸ƸDI~8WCfMPHy (HH9WC@#pHSHt H:Lc0PC1(H'(H'H5'@H)I)H(_H'1+USHD['E-''H\$ f.k'H'HtfDHPH@0HP(H@HuH('HtH@ HuH'HHtDHP8H@8HP@H@Hu1HD$ DL$ E'LuH[]H5'Ht!HPH@0HP(H@HuHp'HtH@ HuH'HHtDHP8H@8HP@H@Hu1H[]@'XfH='11''RHS'HtfDHPH@0HP(H@HuH 'HHtH@ HuH1'HHtDHP8H@8HP@H@HuHtaL'DExBHq8Ht9H~@uF" uH~HtQH9wtTHdžHdžHI Hu'Hf.H 'uI9uHHt$P tHHuHdžHdžuHyhtLHFN Ht#HHxt*HGAGfHIu@IуH~USHHGv H[]Hw(HHH}H 'H'HH)HH'HH95'IHcHHcH!H5'HH'H)I)L94HHEHHEH v'HHHUH[]H Y' h*H:'H ;'SfD Y'U@Hm11WHC(HAWAVAUAATUSHHHo8.H31C/H;+D`AfAA~HC`HtH'H9EL%' 'HHH1L3C貳HC@H9t>Ht9A#fD胧AuLk@?C1-LH1kHC`HtH=c'H9t2H[]A\A]A^A_11oE1='y`H='Hھ @' 'HNd%L;%'vL%'H[]A\A]A^A_fD 'HLcXL`(HLMtIFIvH,'HH'HLcH)L9LL-'L9 'HHcHHcH!H 'HH'H)H)H9HIH'Ht1H0H@уHItuIv@L,I~t1E1I|AH?DI;FrL;-7'v L;-F'r;L h*H#'j h'H 'H'L-'L-'c 'f.S11HHh'Ht'Sttt xtfD'P[ffff.HH11ҿh'Ht@HfD WCHD$IJHD$@HS1HHhP'Ht[ÐC1*HH1[!H'SHt[ÐHI'H;'uH'Hu fH[(HtG{uCAtHӾH{ Htھ#tHC H@HHt[f.Ha'[USHHG t t"H[]HGH'H[]fDH='t WC菱H[='HH'nH'HHd'H '*H=8'H '5'HGpH='HGHH'5"'H=',虜5c't x'uH'BTBTH'BTBT I'S'u$ɉBTyBTH[]f ɉBTxBTH[]f.1xC(HH1D1PCo(HH1躮D@+H}1҃='9P tlH Ht;Q t+HƿP@*H'Ht!H0H5'5H1H5'#1C'H1&fDH5'@1C'H1P!t*(C1}'HH1ȭH'H-e'1ZCL'HH1藭DH\$Hl$HLd$Ll$HLt$H8GAt'ADH\$Hl$Ld$ Ll$(Lt$0H8;H} %  H} HT$:#- HAuA [A *H!H} $H}HE HE@D-'D%}'+''E@['E@}'''E@7',D%'A'AD-h''@HPH} GLIt1tdHG`iMAAmfDHD 'Eu D'EtHC19H} H'HuH[HH;"I~IH;I:u&G:uG:uG:wt:fMcLL: uC,t<.uC|,auC|,uDA Lu L1ۀ}@AxhLLe C1V$LHH1E1蛪H'VCH޿`ioHC`iHt/H} H!HHtsH>uzDC1#HH1E1DH] C1#HH1DeAAEAD EAmfDLu L@Le 1CK#LH1薩Le 1uC$#LH1oLe 1C#LH1MLd$I4$Ht 1IkC(I4$Hu翨C15C WC誩f.USHHH-'Ht!H}Ht H"t#Hm0HuH{'1ɾHHŐEA<t HH[]1HHD@AWIAVIAUIATUSHHoHtpHHHIH5'Hu;fDH[(Ht,HLHtHLLL蜺H[(HuH[]A\A]A^A_@H'Ht@HLLL_H[(HuH[]A\A]A^A_Et/HHt&C uH{HufH[]fH@@HuH[]H='HquH[]ÐUHSHHDEulHtgH;='u'\@u H{HHHt@H9't7Ct?vՃ tԃDuH=G'HHHuH[]fH꾀@Hfffff.AUATUSHHHXID{C$`C@CAH'HC8t'C@f%f=uH{ tcAHHL-#'H$Ld$u O'H<$tTL9-'WLk@C1LH15HN'H $HPH HT$HPf.HHthHH='H!'Lh0IH{H'H@0I9uDHCH'HHuDH[]A\A]DH{HtBt1 IHH(Ht*xHY8HtH+HI(Hu1H$~IuH9'H6H H2HHIUHAi1H4+I9܉u&f.+L9㉃H[ HuH\$0Mv MH}(E1HtC1tAH} E1HtC1stH} IHHuH=&'A1H}(Ld$D|$DEAD$E$HmHLL% 'MACA@A$xdI|$8t\I\$pHu PHHtHD{EuHkLLHtM|$01CHHL1HHuMd$ Mu'%=1='@1w'qH'HHubYfMCHH1H='11AHQHt xHHmHLeLHx MHHùCH1gH=0'11AHHMxCHU(@H@(hHP0'AIF8Hr@ hH}]HH\$0LHHPpHHT$0H@ HuC1H171L#LLLus't5Q'H"'HHzHHE `iHH@1CdH1貈 'AwDLH+vHrDLHxHHcNHU8 '@H@(hHHP0Ou=''%7 #=GH5'HUH='11AHtP@H='Ht$@1HT$@:H5'H='7HHt,L`(H|'HC1LHH1CHu(H='+txHX[]A\A]A^A_HE1uti1(CHH1D;'EEo'H='Hu1(CNH1蜆hH'_H<jIH'HH61 H@H/P uHx8tމڃIH=x'`iHGH=b':CH=='JH 'H=2'`iHGC1HC]H1諅H5'HH='H5'1H5'HP(HJ`HHq(Hp0HrXH='BHS'C1HH1@LsIAڋ #'ALr0HB8HMgMDA 'HMII$IHC8Hk0HLlM9rL9wHH8C1DT$ LD$(HT$0HD$8LD$(Ht$8HMLH1L$LD$0CDT$ jLHR'HuH[HDc@EtHk L#1CHH+kHk(LH1H׃HL-'1IT$ HM'H H='~` H='1Ҿp@~H 'H~HHJ1/CHHl'NH=@'Ht$LD$Ln|$LS%'GH 'H'GH\$LD$LH=('Hھp@D$LD$LuH='Hھp@D$LH 'HLH='H VH'C>1CH1Tbffffff.AWMAVAUMATIUHSӺHt$@fHxXIHG'1DI~AAAFxCLjx1ҹ  tp9rAV|CLjx!1ҹf. t(9rAM~`H[]A\A]LA^A_D0@0@HhX&SE11ɺHHLW'H5H'$H=L'tZH'H޿=HPH&'HH''kH5'Ht H¿AlH'H[ÐH޿?jHĽ'f.AWIAVAUATAULSLHHHH|$ Ht$(L$tH|$0HD$0H|$8G 'HD$ @ H|$(1E1E11HD$$L-' 'Iąt I;E1ID$MHt$ LLDL111QBtHt }5MGID$8HHSHHHH9tEH;Bt?HHHpHHqHHNHJHPHHHHBJHAHH|$0HCt{HC HqHHT$8H HL$0HH'Ht$0HHH91HS HS(IEIEHJHH(H HHH tHA(HH I}HC(HHL[]A\A]A^A_f1yRHVH+l$(H} JHH'1CHH@@ELD$(@1H|={!EthH1HPH菠Uf.HT$(HD hu<_HEuHH+|$(H IH'1HCH@@ALD$(@1LL$I<9HD$ HhHNQH!h!EH¿=/PH跟!ExgZHgLL$1HLOH聟 @L-i'A@L9=Q'IW8HtzH9HHS0@HHHpHOH'HqH+HNH@HHHHHHAH&@IO(Ht7xHQ8HtHUHI(HufDHI'HHSuHPHT$8fH!'HDH5 'HrDH='HMDLI lHT$8HL{(H HL$0HzH@H@H@H'HHl$( {fDSHHEukHuDH[DHtH811D$HL$&HL$11HH9HD$tHtHP@E1H9S@AHD[@AHD[f`hfDH1A6@X;@h=A`hHQ'hH='11HH@Hμ'H˼'0iHx'Hu'iHҴ'Hϴ'`h蒥1*CH'H@8h `AhH/'*tHf1CHH1Qy1CH15y AVAUATUHSDgHAvH0C1H=0'DH¾1[]A\A]A^WC'zEB$C_HWYBSBC[]A\A]A^HE1wH='tHD'E>C1wH]'Ht HH%HHuD[]A\A]A^H;='Ho8Hw01CnwHHE(H:'H{0AbDA'kA~HU8Hu(1CwLe0L9e(tC1ZLH1vH{hHthh djHkH3HH=HmHuE1@AjAuHCxHx?.4L`LmEE1AHu8hLc5'EH~'H-g'HtHh(1HCvEtH-':C1uH{PHOHTHG Ht @U AaCHo|C1HH1uH{F[]A\A]A^giiDSEyHsHC1luDKEB1CSuLk MfDEEEIEHtHH0iC1uIEL`Mt fDI4$1kCtMd$MuyC1tIuHC1tA}]I}t1ICtMmM]D1CtWhH[0Hf.HHHHu[]A\A]A^H1C[]A\A]A^11tH ' CHkH]Ht/HDMH=չ'1CHXHu[]A\A]A^H5' 1*f.guHC(Hk0HtHh(C-JC WCt1օfDHguHC@HkHHtHh(H{AHCHLCHH(1sHs(H&C1sH{0jCf Ӯ'[II,,H-']A\A]A^HOKC[]A\A]A^H='1,Hw1WCrH5'Ht kC1rQCBC1lr@PfuHC LkHtLh(HS1LC7rLc(I,$Ht1IfDA $H='1CIwHueHC έ'HIDH'>H='1jC6H[HtDHH%HHu[]A\A]A^H=n'wC1DcC1lq4C1Tq.C1H[]A\A]A^A_HE}LpZIHP'H@1XCHLHLH1aH?_Hu @H8_t0CHt HHP@:BuBkC7'讽xC1kCH1ND@HLLHCLHCLHCLHCLHCuC H`CHLD$LL$D$L\$HT$ 蜽LD$LL$D$L\$ CHtLD$LL$D$L\$"CHLHT$ LD$LL$D$L\$1dC诼H1BDʆ'E-/H= 'Ht-:/G:/ Hz'H߇'J'H'HT H='t-̅'tH='HHD=z'WH=5'tQ=''5''mDC1LD$LL$D$L\$蔻H1ALLD$LL$D$L\$NH'`TiCHH̆'ԴH'1pCHH1gAfH'':'DV.'bHC1詺H1@'6'D-''E؄'''' 'H=ф'l<e'W 'IH-i'H~1HCHlH迴CH誴HcHH5ki'IHL萶I C.exe@H=>i'iCILMIMCtBfDLH苸~7HcLH29tκC1LH18?LL޹6L荵H腵D'1Hmh'@CF'ӂ'*1zCWHH1B@H=F'Ht"LF';H=%|'H|$L+Dd$LE\HEɀ'萾Hmw'H'1CHH1 >1觳HIL+d$(18CH-D'I4ׂCHH=u'LHILH?IHII)1Mi@BM)MUH-'1CH=~u'IHIhH1SHf'1CݶHH1(=H|$L*H1>FCHH)v'l1C~LH1<H=f'1CTHH1<f.HH=f'tH=Ӏ'Ht艱w'uHfH=e'H阵H\$Hl$HLd$Ll$Lt$H8dH%(HD$1GdwBHD$dH3%(H\$Hl$Ld$ Ll$(Lt$0H8 t{ uHo H'H9tGC<E uH='H蛵@HSHPHSHPHS(HHP(HS(HP HHo@HH;='tGC}<H=~'H6HHlHCHHEH{ٴHEHE SHE HS8HPH{(AEHE HS(HPfLg(I$H;=~'tGC4;H=~'L蕴HHEHC0HEPHE(H~'Lk HB@ I9$tGCq;C-p`CGC:@H_HH@@f{ Hk`H~'H9tGC:E u%=H=}'H蟳C!I@H@(C@ HC8ID$HCXID$DD|'t?Ht'HufH@(HHH HtHAx C-`CGCw9$CEHC H|'H9HU H@`HBHS HE HRXHPGH|'Hu(LH@P`HE%fDHy|'Hu(LH@P0HEfDHE(D(HE@H9|'Hu(LH@PHHE1C]H1751C=H17tfDHX H9k`@GC8$8CLH H3H{'ILHHQHj{'ILHH诫HH{'IHU HB莰fDAW11AVAUATUSHhA?={'3Hz'HHT$@t$LHD$8RHIHT$8Ht$8D$\HR(HT$0HHIE11E1HD$ @H߉T$LD$ǬT$LD$H:WC:WC:WC:WHL$ALLHL$EAHEHILD$Hl$ IDEHŋEpy't rHD$E1E1H|$  yz'G,.A9s A9vHL$LH; az'gI$QCHH޿[C*Ht$8H6HHt$(荫ÍSHHT$軯HT$Ht$(HIfu9t+CAT huvI\;.HT$@HB@L Hv3Ht$(QCHt$(iCAEH|$@HT$\L迯HFH|$@HHD$$HHLL$#H= x'E1L跧HLHD$!HD$H@0HX(@AD$ C ID$(HC(C$AT$$HC8H[`HCxǃ ЈC$ID$0HC0ID$XHCXAD$hChI$HHHt$ ID$8I$HUHT$0HH)HC8HD$0IT$8HC(HC0HDHH&H)PxuHH HpHY`HH HqX@ v'HE tE1uDE1v'tDH|$ H@8HD$G,.f.HT$8l$LHRHT$8t HH5v'Ht$@HT$@`iHBHHh[]A\A]A^A_HD$AE1fmfIC1OH111cC1-Ht$(H11t1===)=7k=-n'0HS:.u zuH=l'E1`iAHCPJ =m' =m' Hx @H@(H=l'H;G0H\$Hl$HLd$Ll$ H(3Hs>.k1 H{D 0m'E:HH{HruHl'EHE0Hl'HE({CHCHSl'Hl'Hl'Hl'Hl'D=I=?X=@H[ *2l']H{11HI :;=z H@8HhHl'Hk'hHk'Hk'D-k'EH k'Hk'HvHD1HHHk'k'Hk'H+B(Hk'Hhk'H{1THd H@RHOk'HsH=i'1A荙HH Lc1CLH1g%fH{j'~t1CȞH1%j'PvH=j'huhj'H{+Dtj'Nj'E =:j'8C]1KH\$HHl$Ld$Ll$ 1H($H=h'11AbHH@@=<=Z5=&i'H=i'hi'J Hoi'i'Hi'HCHi'HHhujHHWH{H蠝uHCCHi'Hh'H(i'Hi'@=K=yqH[C HCHHuh'h'Hh'hHh'Hvh'f=ia=@==1H;-#h'Hh'?5h'1H{11HH@8g'Hg'Hg'Hg'Dg'EH{bpHSH=_f'E11A`i踚H @;-\' HEg'Hng'Lg'H=g'Sg'E1҃tH=e'`iHGHcg'Hf'hHf'Hf' f'H{11{H9Hx`HSf'Hf'H{f'hH@(H`f'H{1OH\H@ Qf'H>f'hH+f'Hf'BD%f'E(Hf'Hf'hHH(H e'Hf'HvHD1HHHe'He'He'hH@(He'HHe'He'He'hH@(Hte'HHje'Hne'Hce'hH@(HHe'HH>e'dHh;+zH-e'= -t +qL- e'=%===$d'/e'H=d'h d'ttt H5d'HHwd'HvHD51HHŃHZd'n9HUH#`d'HЃ=.d'H/d'TWd'H5`d'HQd'Hjd'H-kd'HHd'^;<D>1H;-c'Hc'Hc'c'Hc'hHc'Hc'H{Hl$H\$Ld$Ll$ H({l1=A=BH;-?c'dH-2c'X=!= c'HH-c',+-H+-b'H-b'|t7= H1H=b'H1-b'H -b'1H;-b'Hb'1H;-sb'Hib'1H1H;-Nb'HDb'jH;-8b']H &b'H =b'C,1H;-a'Ha'H-a'H-a'H a'HHD)1HHHua'b'a'tutt 4HHXa'=a'Ha'Ha'HJHHDHH!Hna'H+a'Ha'=Aa'.1a' `'HH-`' H `'H=`'CH!-`'C1赔HHH=`'hC@H`'H-`'HX(HY`'H9 H=hC1SHHHH\$Hl$1Ld$Ll$ H(H[HC1HHhH[C1HHHHP(Hh(HJ`HGHRXHP0_'H_'H _'H_'H_'=b_'H[C1oHHHe_'HV_'HYH-'_'HHH?HAHHH?HH^'"@=^'^'H^'hH^'H^'H@8H@0H@8H=N]'HX8E1҉HHr=W^'H[C1dHHH[1CDHH1LH94HH^'H)HH!HH]'H^'H]'ff.H]'H]'H]'hjf.H\$Hl$Ld$HHIHtF ]'uQHt2=U]'t)AD$0C1@'_HH1HcH$Hl$Ld$H@H!]'H@(H]'H\'DH\$Hl$HHHHt;5\'uHHt'=\'t0C1ѐHH1HHl$H\$Hf.H\'HHctHffffff.H\$Hl$HLd$HHHtam=G\'tkH=,\'HtJHHt['HшP HH H HHHl$H$Ld$HHt=['t10CHH1 f.L`II|$H x['L@L 19HWЃ vWɃH@42uHA0Z9I1HWЃ vH8>'<$HHt$D$D$*D['Eu.D5H$HHT$HPHT$HPH8fDH=Z'4H8ffffff.H8F<$HHt$D$D$D Z'Eu14H$HHT$HPHT$HPH8fH=1Z'H8ffffff.H8B<$HHT$Ht$HL$ D$D$#DY'Eu?(=4H$HHT$HPHT$HPHT$HPHT$ HP H8DH=Y'H8H8F<$HHt$HT$D$D$DqY'Eu4 3H$HHT$HPHT$HPHT$HPH8H=Y'H8HH&Y'H5'Y'HY'HAQ'H@H1Q'H@H!Q'H@HQ'H@HQ'H@ HP'H@(HP'H@@HP'H@0HP'H@`HP'HHtfDHP'H@hHtfDfDHqP'H@HHaP'H@pHtfDfDHAP'H@xHtfDfDH!P'HHtfDHP'HHtfDHO'HHtfDHO'HHtfDHO'HHtfDHO'H@8fffff.HaO'HHtfDHAO'HHtH@ATIUSHR;'Ht]1hfDHt&HKPUCL1ƄLHH]HuÅt[]A\f.C1g[]LH¾A\1qfUHShHH=:'u?fDICH14HCHHHHP1H;uH[]ATUS?gHH-I:'Ht@@te@%u !@%t"@HH";@u@%u@HCH%{HC';ID$HPIT$ ID$HPIT$ID$HPIT$=ID$HPIT$ID$HPIT$D=H'H= I'HκHL$'}HIHL$HCH1?xLz;ID$HPIT$LID$HPIT$^ID$HPIT$ID$HPIT$mID$HPIT$HID$HPIT$ID$HPIT$A$ID$HPIT$ID$HHIL$A$/wBID$A$HCH1HNw;H <'cC7ID$HPIT$뼺rCH1wkH=A'Ht!H=)A'HtHA'Ht I9m1C|HL$HHH1LH=@'L-@'HtQyH|$`H@'Ht }H@'H=@'HtyH|$X}HL$`H@'D$0Q1C|LH1fIHNA@#CHHHCD-,+'uC1{HHD1u;ID$HPIT$H @G'HVCu;^CH1oHL$`Ht$HHT$ HL${HT$ HL$eHt$HHHL$r{D$0HL$"9{}HHT$0HzAHL$8LD$@1H)H$LL$H)z)r)j)b)Z)R)J)BH$H$D$0HD$HD$ HD$HHHT$0H AHt$(HL$8H)H$LD$@LL$H)z)r)j)b)Z)R)J)BH={E't:H$HH=gE'H1$HD$HD$ D$0HD$oHHHT$0HAHt$(HL$8HH)H$LD$@LL$H)z)r)j)b)Z)R)J)BH$H=7'H$D$0HD$HD$ HD$Hfffff.H\$Hl$HLd$HH҉ItPC1xLHljH1 C1xH1@{1PCwxHH1fffff.H\$Hl$HHC14xHHH\$Hl$1Hoffffff.HHT$0HbAHt$(HL$8HH)H$LD$@LL$H1)z)r)j)b)Z)R)J)BH$H=6'H$D$0HD$HD$ HD$)HÐH\$Hl$HHtHt3P H\$Hl$C'HPH@ HC'H''HDt-C'H\$Hl$HC1vHHH\$Hl$1H$@UHSHxHwH-F''H@Ht@ hHuH''HHH ''H[]DU1Ҿ@C11SH7HHƿHlsuD$1%=@@HrHĘ[]USHH= @'tvsHHtiHrt-?'9| HcH:/t?1H}rH[]@?'9uH=?'H޽t@1H[]ffff.Hl$Ld$HH\$HAu @'uHwvHHD`H%'H%'H}=t2HZv1HHCCH$Hl$Ld$HfDH=A>'Hu11CHCH\$Hl$ CHH-p>'HÅt-HKCt gC1`tHH1KHHl$H\$HfAVAUE1ATUHSH8'HL5$'IHe8'HDm@'HL%+ HHtpH{1HL1IHLIpMtHS$'HHL虪[H-?'L-7']A\A]"'A^H$'H1l18C=sHH1fD{HI{H=>'~CCdHIItFHt2L5#'LH{#'phnL5o#'H 7'L{oH=d>'~CCHIItH*uLFo~CA~CyH=>'!EHHIItHJLnL5"'H6' @MIdfD1fH\$Hl$HLd$Ll$HLt$L|$HHHv8l5;'HC t1HCt C1yqHH1dHC HS@t;HjLc MtLxjuMLuMLuL%6'1,tLD$jLjD$ =uL-L6'fAWIAVIAUIATUHSH(F@ukVH~?/nHqt=H}?/91E@ ЈE@H([]A\A]A^A_HiHE8/Hl9'HL%$Yf.HMH{LMML1H$HHHHT$HT$uyHaiHHtQE@t 6't uHUH{1L1XHHHL"u*E@H(1[]A\A]A^A_HUSfH~HH=Q5'11HHHH]@Hl$H\$HLd$HH tH$Hl$Ld$HG@tXH/'Hu(H;H%u&H[HH;CCHtˀe@DHH4yH]HmHHQkCtbC1jHHHH$Hl$Ld$1HE@tHL%4'MtH^HHƸH[]A\A]Ãt 1H-$'H$'L%$'HH=$'H$'$'$'LH=`$'v$'^=f$'H$'Hp$'Nd%E1IH'$'DH,Htf2$'LH^!$'IHE Ht7DHHHKHHHKHHHKHHHK H(HHH HuHmHuAD9-#'vH5#'H=#')[H=#'[H#'HHL9t HHBH5#'H #'DHHH<H #' `hHh#'S[HHa#'cH\#'H5"'H=>#']5#'"'H"'L%#'H (#'H)#'5#'H5"'H"'"'H5#'IE1IDH,Htmf."'LH]"'IHE Ht7DHHHPHSHPHSHPHSHP HS HH(HuHmHuAD9-*"'FH"'jHY"'HZ"'h[\"'ffffff.AUATIUHSHH5!'1ɺL激hsYHIMe MuD@M$$Mt7I9\$uAD$H`hE!uWAD$H[]A\A]@hYYHIIE I\$I$Me AD$AD$@AD$H[]A\A]D(@AhLYt" 'AD$H[]A\A]1pC\H1c1C[H1F1C[H1&,SHHHt3HS]HtHN 'H@H@ H[H߾(HT$&XHHHT$u1ϐ%'t=&'(CHDHE5&'D G&'@D5U%'f%f=t B%'D!@t^DuT=%'%=t`Dt- Eu#fftGLE(pEHEfDfDq%'@cDo@Y%'DtI%'+EtH\$Hl$HLd$HG@ڃ Dڨt Lg AD$T@u4t H} GT@u1H$Hl$Ld$HÐaT1EYLH1SH@E1YHH¾1S1xEpYHH¾1~S1EMYHH¾1[S18E*YHH¾18S1EYHH¾1S1EXHH¾1R1EXHH¾1R10EXHH¾1RxE1{XHH¾1R1ȔEXXHH¾1fR1E5XHH¾1CR1hEXHH¾1 R1EWHH¾1Q1EWHH¾1Q1XEWHH¾1Q1EWHH¾1Q1EcWHH¾1qQ10E@WHH¾1NQ1hEWHH¾1+Q1EVHH¾1Q1EVHH¾1P1@EVHH¾1P1EVHH¾1P1ؘEnVHH¾1|P1 EKVHH¾1YPhE1(VHH¾16PE1VHH¾1P(E1UHH¾1OhE1UHH¾1OE1UHH¾[1OAVAUIATUSHHH/HHrRLIgRI+f.5 '@HuTHtHHHt?LHLPuBD%t 5| '@8uHtH[]A\A]A^DK|&.VD N 'LHHŹ܄CH1L,$qVH;yQH+HUHffffff.SH~=~^r1@H[f.z~Muˀ l'thuH=)'t7DPuH5 'hBxH5'hUD '?%'''H'MEHރ'$:S:S:S:}@O'fH=A'HtOH,'H'HeCHUDH'WE HLaE HkE HtE HE HE HEH:vC:gC:XC:IwH 'H ']DH '''2fREH`'H M'H 8' fD j'DH-'HEHEHHRHA'H 'vE1PHH1NH '9H ''H w'@H b'EHNCBHSEHqP[EH\PWEHGP^EH2P;EHP_EHP-EHO͞EHO˞EHOaӞEHJEHJHt$H{1QHT$H':u HPHXH0 '8EH1H%'H%'H 'H 'f'U 'G%'9 '+'@' 'Ht$H{1QHT$H':u HPHsHK 'EHL%T' F'7'Ȁ࿈+'ffffff.H\$HHl$Ld$Ll$H(LcH;IuIHc&PN,(HHu HAEz:P:AEHI<$OH<(I$ E@@ue@u@1Ht t  f HtH\$Hl$Ld$Ll$ H(D!E?H@tfDHfH@pDHHW@AWAVAUIATE1USHH8HHBxAE{HE1@ |'%=D$!D 'E hH=hvIAhfDI>Ht(111HIFtDEu AVI0I huH&HA E fDH@ HHH8HtA! uHp0LHuH@(HS&H8& E>''% = S Ah uwI@HI'E1HLHH$PIH8L[]A\A]A^A_H@ DxH޿`E1 pE11tЃt'A4Eu#EL#A0h?@Ah-AhEEELuA`hAhhLEfD11L/HIIv8Ht5DV EHH=d'H\CtIF8@ 3C tw1LHIuwefDC EEAA (@H3E L5&MI~LHl2H'HU1fI8H11LD$v.LD$I@HIp3@HLD$HLD$Hy'}@ELJA}at,D$AE8EAh&DD$AE HL% 'xaE1MD$$S1LDL$MLD$LE1AEIH\$(AEK1a)E@HcH| 9l$$MttIMttSHJ8HtI LEҐt HLEHJ Ht5IHʋxHZ0LHaHJ8HtNjI LH\$(LD$DIMMt=LI@?LDLD$H\$(MA AHtHMtLHuLfH\$Ld$1Ll$Hl$ILt$L|$HHB@IHu-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.LrH~KCLI@CLH5CI|/HhGMEHHM.EH1L$$GHH tpH{ Hk?tJHC @T@t@C@<tHt#H%>HtHH< t< t< t< t< tIIHֿEuJ  <=u-@t)< ft#< t< t< @t< tHBHJ<=uI9t$:/tz/HB7HL9uMLM)IH,IOIwHQI|H975\ '@4IIWH<LLBHr:L>HĈ[]A\A]A^A_HJI@< tT< tPrI@ t@tIA,$@ uA$u@6IL$< uHLL$Ht$ HHD$ILLL$;LD$LL$H $HT$K<H;LD$LD$HL$011LP?uJH|$0t81@l$/HHHD$8LH4HsH;\$0rHl$/H|$0IOIHQE1wLIHM)af.H\$Ld$ILl$Hl$H8H'HoAH@HH0p6H1Ht2Hi4tCT@tH'HPH9St&HF91H\$Hl$ Ld$(Ll$0H8EHt$H= HD$Hth BHT'R'D-F'EuHD$HtAEf.HH^HpLHufD hH8uGH{.4Dg'IEuG0 BH&bH=&thfDH޿E191E9HHL1DH޿hEfDHL/MA<$HLLt$HD$5HHD$lH|$IM)I|=:L9HHtLL7J|+B+/L9H|$DH\$!uUHM5}t/Le5'L7HHuLd5I,s1H([]A\A]A^A_H([]A\A]A^A_@AWAVAUATUSHhH'{8tHh[]A\A]A^A_fDH1'HHy'H : fu%J: [uJ: PIfßEH;HֿHE$@@8CHuOHJ@Rq6!htHHt6!huր:HHE1;H=<'3H,'''%=' H=E'`i[4HIH@H}Ht 3I9Lt1fH{Ht j3uH{Hu6yHH9uHp BH*&H&bH&HtHx 3EHC #'HD$PHCHD$XHCHD$@He&Ht H@H|$@HD$H8Lt$E1IIfH=i&Ht$PD<H=E&Ht$PD H=0&E4Ht$PDHH=&`i2HHu#jf.L1HHLH{SIID$H9CuHt$PDLtLLLt$y1HmH#H-G&HfD۟EH.HtHx8vHx`hHHuJ:  +@ȟEHA4HIL@hH&LF5HO&L`Il$8IDžh BHI$Ip BDH9HmH*D&I^;H=~&t*H=u&Ht$0DHD$0H\$8"I~Y0H&Ht}LhHHthCuH{(0I|^4MNLCHHŹ(EH14H|$@DHl$HnuzH/ffDAA*LxE1HSHsLLt$fDH=`&8JE1Ht$PDH(LLt$H=&1ҾE1HD$HD$ HD$H|$HHSH.H|$HtdH|$H.H-&&C؜EH.H &HHEEHH(P(1H@hHH,.H=&1ҾE1?H|$HH/LkLc1E1LHL1@-(E1?9f.H\$Hl$HLd$Ll$HH=Z&t(H$H$L$L$HĸH Ht-uH{ H.Hs&H9$HZ&/HhHy/Hu.EH.HIkH{ 2.HHL%&IUHI\$H)Hh+0IT$HH޿ȝE#fDHD$H;&]HTHF&Hs E1H{z)Hlf.AT5&USHuH HtGT@u[]A\[-HItwH&HuDHHtHkLHi/t/H8.HuӾ.EHF-HtHPHLH)O*uy&tHC Hx(Itffffff.H\$Hl$HLd$HH#&HtHx +HkHH{ HH=&t \+urHkH=&HL`L~.tMC@t"/H+HtHxLV.t%H{ ,HtH&HHr1.uHn&H$Hl$Ld$Hff.@H huxtGH@GHÍGHúEGHt(11gHIFtDEu AVI0IhuH$&HA E fDH@ HHH8HtA! uHp0LHuH@(H&Hx& E&x&% = S APh uwI@HI'E1HLHH$IH8L[]A\A]A^A_H@ DxH޿`E1pE11tЃt'A4Eu#EL#Ah?@A h-A`hEEELuAhA0hhLEfD11LtHIIv8Ht5DV EHH=D&H<tIF8@ 3C tw1LHIuwefDC EEAA (@H3E L5&MI~LHLH&HU1fI8H11LD$VLD$I@HIp3@HLD$ފHLD$HY&}@ELJA}at,D$AE8EAh&DD$AE HL%&xaE1MD$$S1LDL$MLD$LE1AEIH\$(AEK1a)E@HcH| 9l$$MttIMttSHJ8HtI LEҐt HLEHJ Ht5IHʋxHZ0LHaHJ8HtNjI LH\$(LD$DIMMt=LI@?LDLD$H\$(MA AHtHMtLHuLfH\$Ld$1Ll$Hl$ILt$L|$HHB@IHu-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.LrH~+LI LHI|/HHMEHHM.EH1L$$HHtpH{ Hk tJHC @T@t@C@<tG.H{} H{ HfDH1fAUATUSHHH&x8*B苢H&HH-&Huf.HHHExuHHHtӀ?tI5&LE1HtAMtA<$uEtIIuDL濰iHD$(HD$(H&L &HL&H !&H5&H=&HD$HD$8HD$`iHD$H&H$[H=&HtH\$8HtHHHC8H&HuH[(HC@uH{ VE HHtL`8I|$H{ 1MHHIJ CD%H&E1E11HK L`iP(trLHE`HtHH@HU8H9rH)HH@H[(M HE8HN軈H=&`i u E,HH[]A\A]ÐuGaz@Hs ЛE;DEH=1&`iUJEH]SH@{v[ËC$@GfDHS:?ut=DC H=&`iulHsEU\HS1:uuB:tt<뵐H[f.H{gH{^H[ ]DH{GH[Ffffff.t HU`iS HH=&l}H=&HGxt tdH[]Ðy&uH=/&HH`iiteH&HHH9t~.u1cEHH1[]H9rHc8Eޔ@H@hpff.ATU1SHj  &IH8HuH=&4 Bl%HcdH5&IHL I,@UHHt.:P&uUH5D&HH@H HEL[]A\fff.AWIAVAUATUSHHt$ H|$ C I1MHI;HLmD HL)MdL9u=|+ t6HHHN$(HÉLL43D) HuI9 H Ht#H HtHH< t< t< t< t< tIIHֿEuJ  <=u-@t)< ft#< t< t< @t< tHBHJ<=uI9t$:/tz/HB7HL9uMLM)IH,IOIwHQI|H975<&@4IIWH<LL MoIMoB(Lr BHRL HĈ[]A\A]A^A_HJI@< tT< tPrI@ t@tIA,$@ uA$u@6IL$< uH/MA<$HLLt$HD$HHD$lH|$IM)I|=L9HHtLLJ|+B+/LH|$DH\$!uUH-}t/Le5&LHHuLDI,s1H([]A\A]A^A_H([]A\A]A^A_@AWAVAUATUSHhHc&{8tHh[]A\A]A^A_fDH&HHY&H : Fku%J: ;kuJ: 0kIfßEH;HֿHE$@@8CHuOHJ@Rq6!htHHt6!huր:HHE1H=&H &&&%=& H=%&`i;HIH@H}Ht jI9Lt1fH{Ht JuH{HuyyHH9uH뿐=BH&Hw&B}Hk&HtHx EHC &HD$PHCHD$XHCHD$@H%&Ht H@H|$@HD$H8Lt$E1IIfH=I&Ht$PD<H=%&Ht$PD H=&EHt$PDHH=&`i_HHu#jf.LHHLH{SIID$H9CuHt$PDLtLLLt$YHmH#H-'&HfD۟EHcHtHx8vHx`hHHuJ: g +@ȟEH!HIL@hH&L&H/&L`Il$8IDžh >BHI$Ip BDH9HmH*DZ&I^;H=>&t*H=5&Ht$0DHD$0H\$8"I~9H&Ht}LhHHthCuH{I|>MNLCHHŹ(EH1H|$@DHl$HnuzHzffDAA*LxE1HSHsLLt$ˆfDH=@&8JEHt$PDH(LLt$H=&1ҾE1HD$HD$ HD$eH|$HHSHH|$HtdH|$HH-&&C؜EHgH&HHEEHH(P(H@hHH H=&1ҾE1eH|$HH/LkLc1ELHL1@-(E19f.H\$Hl$HLd$Ll$HH=&t(H$H$L$L$HĸH HtzuH{ HH3&H9$H&/HhHYHu.EHgHIkH{ HHL%&IUHI\$H)HH0IT$HH޿ȝEfDHD$H;&]HTH&Hs E1H{ZHlf.AT5&USHuH HtGT@u[]A\;HItwH&HuDHHtHkLHIt/HHuӾ.EH&HtHPHLH)/u9&tHC HxItffffff.H\$Hl$HLd$HH&HtHx mHkHH{ HH=&t <urHkH&HL`L^tMC@t"/HHtHxL6t%H{ HtH&HHruH.&H$Hl$Ld$Hff.@H huxtGH@GHÍGHú GGGD@AWAVAUATUSHHxdH%(H$h1HGH(HT$HHp LbIL$`HhLImHHIl$XMt$8HT$HL}HCIHuLHCHuE GNUHT$H:`P:`P:`P:_L$L/HT$xBHHLP sLL :DIuIt$X1HMt$81dH$hdH3%(6Hx[]A\A]A^A_HEHßEHnCHLp1@D<:IAH@!htAVIN!htI7Ht$HL$IHD$pHD$HL$9T$ST$ HT$Ht$H{Lt$ LC;HT$ BHHLP u 1fDLLQHLHI9@I$HsI|$8HT$xHT$HI$HCK113EeLLljD$AL$IljE91E1H1}<-K GG~ GGn~fffff.H 8G{&u& &HÐc&t!5K& G!GHEf. J&!Gt &2!GҺH!GHDfH\$Ld$1Ll$Hl$ILt$H8B@IHu"H\$Hl$Ld$ Ll$(Lt$0H8@H~oH{IcLHXI|.HLKMEHHŹ_!GH1L$$HH.tHkj@H1Wf@DBFfDSHt[@Hw:CuHCxt[m!G5}HCH@ [f.Hſ&t HfDH= &`itH mf.E{Hlffff.H 8G};&5&HÐ3&t=&!G4GHE5&HHG ׿&eG5&f%f=t Ҿ&pG!@t^GuT=&%=t`Gt-pHu#fftG`MHkHHEfDfD&0Go@&Gtپ&/HtH\$Hl$HLd$HG@ڃ Dڨt Lg AD$T@u4t H} GT@u1H$Hl$Ld$HÐ1EGLH1ySH@E1#HH¾111xEHH¾11EHH¾118EHH¾11EHH¾11EtHH¾11EQHH¾1_10E.HH¾1<xE1 HH¾11ȔEHH¾11EHH¾11hEHH¾11EHH¾11E\HH¾1j1XE9HH¾1G1EHH¾1$1EHH¾110EHH¾11hEHH¾11EHH¾11EgHH¾1u1@EDHH¾1R1E!HH¾1/1ؘEHH¾1 1 EHH¾1hE1HH¾1E1HH¾1(E1rHH¾1hE1OHH¾1]E1,HH¾[19AVAUIATUSHHH/HHLII+f.5I&@HHtHHHt?LHL)uBD%t 5 &@8uHtH[]A\A]A^DK|&D ޹&LHHŹ܄CH1L,$H; H+HHffffff.SH~=~^r1@H[f.z~Muˀ &thuH=&DPuH5&iBxH5y&iUD {&?%c&'L&H"&MEHރ/&$::S:+S:S: @߶&fH=Ѷ&Ht7H&H&HeCHUDHY&WE HLaE HkE HtE HE HE HEH:^C:]C:]C:]wH O&H O&]DH 8&&&2fREH`E&H ݵ&H ȵ& fD &DH&HEHEHHѴ&H h&vE1=HH1pNH +&9H &'H &@H &EHNCBHSEH[EHWEH^EH;EH_EH-EH͞EHn˞EHYaӞEH_EHEHt$H{1}HT$HY&:u HPHXH&8EH1H%u&H%u&H [&H X&f&U &G%r&9 d&+V&@J& 8&Ht$H{1HT$Hl&:u HPHsHۤ&EHL%& ֱ&DZ&Ȁ࿈&ffffff.H\$HHl$Ld$Ll$H(LcH;IuIHcN,(HHu HAEz:P:AEHI<$H<(I$H@@ue@u@1Ht t  f HtH\$Hl$Ld$Ll$ H(D6H?H@tfDHfH@pDHHW@AWAVAUIATE1USHH8HHBxAE{HE1@ |!&%=D$!D Z&EhH=@hvIA@hfDI>Ht(11HIFtDEu AVI0IhuH&HA E fDH@ HHH8HtA! uHp0LHuH@(H&Hh& E&(&% = S Ah uwI@HI'E1HLHH$lIH8L[]A\A]A^A_H@ DxH޿`E1jpE11tЃt'A4Eu#EL#Ah?@A`h-AhEEELuAhAph@hLEfD11L$HIIv8Ht5DV EHH=&HtIF8@ 3C tw1LqHIuwefDC EEAA (@H3E L5&MI~LHHy&HU1fI8H11LD$LD$I@HIp3@HLD$VHLD$H &}@ELJA}at,D$AE8EA0h&DD$AE HL%&xaE1MD$$S1LDL$MLD$LE1AEIH\$(AEK1a)E@HcH| 9l$$MttIMttSHJ8HtI LEҐt HLEHJ Ht5IHʋxHZ0LHaHJ8HtNjI LH\$(LD$DIMMt=LI@?LDLD$H\$(MA AHtHMtLHuLfH\$Ld$1Ll$Hl$ILt$L|$HHB@IHu-H\$Hl$ Ld$(Ll$0Lt$8L|$@HHf.LrH~LILHI|/HMEHHM.EH1L$$?HHmtpH{ HktJHC @T@t@C@<t8HfH{-H{ HQfDH1fAUATUSHHHg&x8^B;nH&HH-d&Huf.HHHExuHHHtӀ?tI5ϩ&LE1HtAMtA<$uEtIIuDL濐iHD$(HD$(H9&L z&HLh&H ѧ&H5&H=&HD$HD$8HD$`iHD$H&H$k[H=l&HtH\$8HtHHHC8Hʞ&HuH[(HC@uH{ VEWHHtL`8I|$H{ 1MHHICD%H&E1E11HK L`iP(trLHE`HtHH@HU8H9rH)HH@H[(M HE8HNkTH=L&`iu EbHH[]A\A]Ð[8Hdz@Hs ЛEb;DEbH=&`iGUJEH]SH@{v[ËC$`HfDHS:@t=DC H=y&`iulHsEb\HS1:@uB:@t<뵐H[f.H{gH{^H[ ]DH{GH[Ffffff.t HU`iS HH=&-H=&HGxt tdH[]Ð)&uH=ߣ&HH`iteHN&HHH9t~.u1cEkHH1[]`H9rHc8E`@H@hpff.H\$Ld$ILl$Hl$H8H&HoAH@HH0 H1Ht2HtCT@tHh&HPH9St&H1H\$Hl$ Ld$(Ll$0H8EHt$H HD$HthiBHĠ& &RD-&EuHD$HtAEf.HH^HpLHufDiH[uGH{D&IEuG@hBH'&RH=&thfDH޿E1^1EwHHL1_`DH޿hE^fDHLmI<$HtOuHHC`iHOH޿CJ^DAWAVAUATUSHXHc&{8tHX[]A\A]A^A_fDH&HHY&H : F=u%J: ;=uJ: 0=AfßEH3HֿHE$@@8CHuOHJ@Rq6!htHHt6!huր:HHE1]H=&H &&&%= ܠ& H=%&`i;HHD$HfH{Ht jHl$H9t0H}Ht JuH}HsyHmH9uHݿjBH-&HV&AOHJ&HtHx THEHD$@HEHD$HHEHD$0&H&Ht H@H|$0HD$8gE1H\$L|$HL%D&A?/MA<$HD$@LL|$(HD$ 7HDl$MInfDIM)K<>QI9HHtLLJ|3B3/LYt$H|$ H\$((H}fLe5&LHHuLI,pH-1&H۟EHkHtHx8vHx`hHHuJ: 9 +@ȟEH)HIy@hH&L.H7&L`Il$8IDžh kBHI$Ip BDAA*H\$xE1HSHsYHHH9RHHyDl$HD$HxCH&HtL`Lt$@HHlD{EuH{ I<AMNLCHHŹ(EH1H|$0DHl$8u)H}H|$@DUH\$L ؜EHBHǜ&HHEEHH(P([HtS@hHLeHm1E LHH1YR-@(E1/XIf.H\$Hl$HLd$Ll$HH= &t(H$H$L$L$HĸH HtuH{ HH#&H9$H&/HhHiHu.EHwHIkH{ "HHL%&IUHI\$H)HX0IT$HH޿ȝEWfDHD$H;&]HTH&Hs E1VH{jHlf.ATȗ&USHuH HtGT@u[]A\KHItwH&HuDHHtHkLHYt/H(HuӾ.EH6HtHPHLH)?u)&tHC HxItffffff.H\$Hl$HLd$HHӖ&HtHx }HkHH{ HH=&t LurHkHݕ&HL`LntMC@t"/HHtHxLFt%H{ HtH&HHr!uH&H$Hl$Ld$Hff.@H huxtGH@GHÍGHúHO8HTU@AWAVAUATUSHHxdH%(H$h1HGH(HT$HHp LbIL$`HhLImHHIl$XMt$8HT$HL}HCIHuLHCHuE GNUHT$H:/3P: 3P:3P:3L$L HT$xBHHLP sLL DIuIt$X1HMt$81dH$hdH3%(6Hx[]A\A]A^A_HEHßEHnCHLp1@D<:IAH@!htAVIN!htI7Ht$HL$IHD$pHD$HL$9T$ST$ HT$Ht$H{Lt$ LSHT$ BHHLP u 1fDLL$HLHI9@I$HsI|$8HT$HT$HI$HCK113E eLLljD$QL$IljE91E1H1 Q<-KH8HQH8H~Qfffff.H SHR&&%&HÐ#EgGGܺG vT2GGGffffff.HWVWVW V fDAWHAVAUATUSHT$HHL$HLD$HYi HT$HT$\$l$ċT$QAHAHH9vA@H;|$L$3L$D DT$pDl$DpD|$!3L$C"xjB.Vh DHG>p $Dt$D@DXDP \$DνDx$DD$DT$1!3\$D|$ԍ1!1AA1AD!1AxA E|$|D1D!1A*ƇGDD1D!D1G(F0D1!D1G3FAA1AD!1A ؘiADA 1ED!1ADDD1D!AD1E1x(A!F/[E1ED@,AADD$G0\AA1EE!A1A1ED@0A EE!A"kA1DDP4DDT$AqEE1AA!E1E1DDP8A!G*CyE1EDxEA1A!A1ED|$A EB9!EE1A!B7E1DDAE1E!E- E1DAA1E!A1ED|$AAG>ZEEA1A!A1ED|$A EB9EE1A!E1DD|$DB;AE1E!GogE1DAA1E!GL*A1EDt$AAEA1EA!B B9A1Dt$A EE1F<9L$A qDED1D1ˋL$DE "amDD1G 81A͉AD1E7D꾤AD1ADA 1ED1AϋL$AE KDD1G`KD1 DD1E>pD1A\AE1A1EDl$A AG/~(AA1B!'E1G,/EAEA1ߍ+0E1F<9DD1AED1 \$EDDD11ADt$ G59AE1GA1EAAA1AE1G%D")EDt$AEB1|EG*CA1E1DDt$DB3eVEF#E1AA1ADED|$ AA A1EDt$AAE DA1EAB 9AAEE E1GY[eDD$EDl$AED D1DE+ D ىD1ADE:}AAD D1׍3]AˋL$AED DD1GHtH}HL]H\$(Hl$0Ld$8Ll$@Lt$HL|$PHX@ILHI?LMEAHJM)L9J<9HL$LFLO<>LqDuI@HL$wML)SLHHHDt$HHD$YHL$HD$L?H4HDD$G,(A?Dmf.H\$Lt$HHl$Ld$ILl$H(DgGDA9ĉGvGA7A8E)HkEH5LJ|%Od%茾CIt$HBD#CS HBD%LHHl$H$Ld$Ll$Lt$ H(?AxE)vf.Hl$Ld$ILl$H\$HIHHdH%(H$1HLLHHH$dH3%(u(H$H$L$L$H耾AWIAVAUAATIUSHL$PHdH%(H$1LD1fDH|LLH)ھpHHwTHuLuHuYLL1҉H$dH3%(uGH[]A\A]A^A_DHtLHffDLHHJ{#EgGGܺG vT2GGGGHʉ  ʉOʉ  ʉPOʉ  ʉPO ʉ ΁  ʉP Oʉ  ʉPfff.AWHAVAUATUSH0HT$H\$HHl$HHL$H[HT$DmD}\$]Du Dl$]H9vEH;|$؉T$HT$HT$Dt$HD$fDt$HD$1Hl$4  THH@uˋT$\$H@t$|$Dl$Dd$DyZHD$E>yZADD$D1#\$DD$D1Dt$AىD1D!D1G7yZF!yZAډ1AD!DA1B.yZAD|$D1ωD!A1ύ<>DD1!D1ΉEyZAA,$DD1!D1E*yZl$ Aɉ1AD!AD1B;yZADD|$1AD!A1ByZ DDD1D!AD1E+yZDD1!ىD1AˋL$AD1E yZD!D1At$Aɉ1E2yZD!D1AA B;yZD|$$41D1D!AA1AˋL$DӍyZDD1!D1ٍ |$ AAE;yZD1!D1G9yZD|$AE1D1D13T$!1EAAE1EA1D3|$ DE1DyZ1D3t$D!AA1D3t$$A42D>AyZD1AD!AAyZ1DɍDD1D!D1ىލ A1D3l$A<1D3$$DD3d$D1ɉA1!AD1GyZE1AA G nD1A1AAED\$11A1D3\$E1AGnA42EADD$E1D3T$ E1D3D$AAn1D1AA1DL$DL$E1AA1D3L$$E1AA9n|$11<8AnL$11ȉD$3l$L$D1D1 n11|$|$3|$L$D1 D17nt$13t$t$3t$D$D$D1D1ƉD$n\$3\$1\$L$L$؋\$ 3\$D$D11 nL$3L$3L$L$ȋL$$3L$D$D$D1ىD$D$1L$nL$3L$3L$L$L$D$ L$1D1D1D13T$1L$L$D$L$L$nD$L$L$3L$3L$D$L$D$L$L$L$L$L$$D1E1D11nL$L$3L$3L$D$L$L$nL$L$L$L$3L$3L$L$L$D$L$L$L$A1D3|$L$3L$E13L$A1D3t$E1E1AA1A1AnA1E1AAAD$L$L$AnL$L$L$L$3L$3L$D$L$L$AnL$L$L$L$3L$3L$L$L$L$L$L$L$3L$E1ˋD$3L$E1D\$DT$A1AnD$1D$ĉL$L$D1t$ċD$L$L$L$L$L$L$D\$D3\$D3\$nD$1D$D1l$D$L$AˋL$A L$L$L$L$DT$D3T$D3T$DnL$GD\$L$DL$D$1D$D1d$AD$L$ED\$L$D3\$DnD3\$L$GEAEDL$AA11DD$1T$D11L$L$1L$D1D$DܼDًD$A EE D#D$1ʼnL$DD!Al$D$A ȋL$DD$1Ǎ ܼDD ՉL$DD!D!FܼA l$D|$͋L$A9DED E!D!D AA3t$3\$D$E!D11D1L$3L$1Ét$FܼD ƋD$D!މ\$FܼD AA42A1D$DAA!1D$Aۉ L$D!FܼD AAA!!D A AAD1ЉD$D$A1D$D$A1D$D1L$D$(ܼD$FLAD1 A!D$D$!1D$D$D 1D$A,)L$AE1D$A!D8ܼD$ !1‹D$D A<8AA1DT$2ܼD$D\$D !DT$!DL$ ։l$A40AA1E1D3t$A1A!D3t$AD3l$D3d$AܼD3l$ D3l$!AD3d$D AܼD|$\AD) !! AܼA  AA!!D TE1D3\$AD3\$A<ܼD3T$D3L$D/ω E1!A! A3ܼA<8 AA!!A1D E1D3L$t5AAܼE1AD+ !! A ܼ AAA!!D DD$D3D$D3D$L E1AAܼ*ډ !! l$3l$‰T$ D1A!D1A!D =ܼ׋T$|$3|$T$D1D17ܼT$t$ !! t$3t$‰T$T$D1D1ܼ\$\$D|$ A!!D D|$\$AF<;\$D|$A\$\$3\$D11 bʋL$13L$F<9L$3L$D|$D|$D11AD|$bʋT$D13T$D|$AD$F<:T$3T$D|$D|$D$D11F:bD|$D|$A1D3|$D$D|$D|$D|$AD|$D|$D$D|$D3|$D$E1A1AAbD|$D|$D3|$D3|$ANjD$D|$D|$D1AD|$D11D$D|$D|$AD|$D|$F8bʋD$D|$D|$D3|$D3|$D$D|$D$D|$D|$AD|$D|$D|$E1E1E1A1A1A1A1E1AA1AbD|$D|$D3|$D3|$ANjD$AD|$D$D|$D3d$A1ƋD$AADt$EbʋD$Dt$Dt$E1D3t$Dt$AƋD$Dt$Dt$A1ŋD$AADl$EbʋD$Dl$EE1D3l$Dl$ADl$Dl$AAE1Dl$E1D3l$G $$ =syntax errorError: discardingError: poppingmemory exhaustedCleanup: discarding lookaheadCleanup: poppingPT_NULLPT_LOADPT_DYNAMICPT_INTERPPT_NOTEPT_SHLIBPT_PHDRPT_TLS$end$undefinedINTLNAME'='OREQANDEQRSHIFTEQLSHIFTEQDIVEQMULTEQMINUSEQPLUSEQ'?'':'ORORANDAND'|''^''&''<''>'GERSHIFTLSHIFT'+''-''*''/''%'UNARY'('ALIGN_KBLOCKBINDSQUADLONGSHORTBYTESECTIONSINSERT_KAFTERBEFOREDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDSORT_BY_NAMESORT_BY_ALIGNMENT'{''}'SIZEOF_HEADERSOUTPUT_FORMATFORCE_COMMON_ALLOCATIONOUTPUT_ARCHINHIBIT_COMMON_ALLOCATIONSEGMENT_STARTINCLUDEMEMORYREGION_ALIASNOLOADDSECTCOPYINFOOVERLAYDEFINEDTARGET_KSEARCH_DIRMAPENTRYNEXTSIZEOFALIGNOFLOADADDRMAX_KMIN_KSTARTUPHLLSYSLIBNOFLOATNOCROSSREFSORIGINFILLLENGTHCREATE_OBJECT_SYMBOLSINPUTGROUPOUTPUTCONSTRUCTORSALIGNMODSUBALIGNPROVIDEPROVIDE_HIDDENAS_NEEDEDCHIPABSOLUTENEWLINEENDWORDORDERNAMEWORDASSERT_KPUBLICDEFSYMENDBASETRUNCATERELINPUT_SCRIPTINPUT_MRI_SCRIPTINPUT_DEFSYMCASEEXTERNVERS_TAGVERS_IDENTIFIERGLOBALLOCALVERSIONKINPUT_VERSION_SCRIPTKEEPONLY_IF_ROONLY_IF_RWSPECIALEXCLUDE_FILECONSTANTINPUT_DYNAMIC_LIST','';'')''['']''!''~'$acceptfilenamedefsym_expr$@1mri_script_file$@2mri_script_linesmri_script_command$@3ordernamelistmri_load_name_listmri_abs_name_listcasesymlistextern_name_list$@4extern_name_list_body$@5ifile_listifile_p1$@6$@7input_list@8@9@10sec_or_group_p1statement_anywhere$@11wildcard_namewildcard_specexclude_name_listfile_NAME_listinput_section_spec_no_keepinput_section_spec$@12statement$@13$@14statement_liststatement_list_optfill_expfill_optassign_opassignmentopt_commamemory_spec_list_optmemory_spec_listmemory_spec$@15$@16origin_speclength_specattributes_optattributes_listattributes_stringstartuphigh_level_libraryhigh_level_library_NAME_listlow_level_librarylow_level_library_NAME_listfloating_point_supportnocrossref_listmustbe_exp$@17memspec_at_optopt_atopt_alignopt_subalignsect_constraint$@18$@19$@20$@21$@22$@23$@24$@25$@26$@27$@28$@29$@30atypeopt_exp_with_typeopt_exp_without_typeopt_nocrossrefsmemspec_optphdr_optoverlay_section$@31$@32$@33phdrsphdr_listphdr$@34$@35phdr_typephdr_qualifiersphdr_valdynamic_list_file$@36dynamic_list_nodesdynamic_list_nodedynamic_list_tagversion_script_file$@37$@38vers_nodesvers_nodeverdepvers_tagvers_defns@39@40opt_semicolonI@I@I@J@qC@qC@qC@qC@-J@TJ@qC@qC@dJ@vJ@J@J@J@J@J@J@J@K@K@qC@qC@&K@5K@IK@]K@kK@qC@qC@yK@K@K@qC@K@K@qC@K@K@K@K@L@qC@qC@L@ L@*L@8L@FL@UL@eL@qC@qC@qC@qC@qC@qC@qC@qC@qC@qC@qC@qC@uL@L@L@L@L@L@L@L@qC@M@M@M@*M@=M@GM@qC@UM@eM@xM@M@M@M@M@M@M@M@N@,N@JN@YN@wN@qC@qC@qC@qC@N@qC@N@N@N@N@N@N@O@GO@oO@O@O@O@P@7P@_P@P@P@P@Q@@Q@VQ@qC@nQ@}Q@qC@Q@qC@Q@Q@qC@Q@Q@Q@Q@R@'R@qC@qC@qC@qC@5R@FR@WR@hR@yR@R@R@R@R@R@R@R@ S@S@)S@9S@qC@qC@IS@fS@S@S@qC@qC@qC@qC@qC@qC@qC@S@qC@T@0T@:T@iT@qC@qC@qC@qC@T@T@T@qC@T@T@U@qC@U@qC@%U@5U@EU@VU@|U@U@U@U@U@U@ V@'V@8V@SV@rV@V@V@V@V@ W@,W@KW@jW@W@W@W@W@X@$X@CX@fX@X@X@X@X@X@ Y@(Y@CY@^Y@yY@Y@Y@Y@Y@ Z@'Z@SZ@nZ@Z@Z@Z@Z@Z@[@([@9[@J[@[[@l[@}[@[@[@[@[@[@[@[@[@/\@>\@qC@\@\@\@\@\@qC@\@\@qC@%]@8]@E]@T]@c]@r]@]@qC@]@]@]@]@]@]@]@^@^@(^@9^@J^@[^@l^@qC@^@^@^@qC@qC@qC@qC@^@^@^@_@_@_@O`@c@c@c@Mc@qC@qC@qC@^c@lc@ob@b@b@qC@qC@b@b@b@b@b@o`@`@`@`@`@`@a@,a@Oa@ua@a@a@a@b@)b@Mb@_\@T@S@&8-opKxo_ "#+;`bcghiknoqtv zuxKpRw!)x-.}/3xx:OB. PTUVW[\Wr] deA6o 'V&:N kssss,,%%x` !06zb| xx:./13T74IY"iLc6HJJ^\/t efghjkOl9qrVvwxy|&'!(D-2D5;>B:EFGPQ:R:"% !89 #$&'()*+,-./01234567:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~IGiSrZ$87 %&'9~ 89345 !":Z?867CDEFGH@ MNOPQRS99Z\67Ac5kgq8gXg8ak 8g% l  !"12()gg}%g}=8cd%% %%&'UW%345%67%:'%?CDEFGHyz{MNOPQRSH %Z\ %%!%%% !"k%67gq}67%}m9@9G9L !"_%&'ef%%%8345q%%%:%?%$ %%%H%%%MNOPQRS%%%;%%Z%\@%89G9L0k%6q8[_CefqU%\%8% %cYyZ%&'($9%345:%8&%?%%H\MNOPQRSd9%%Z\ 8%8k%&'9q%%%%8%%%9345%%@:%%%%?G%LcHMNOPQRS_$Z\9efqk%&'qM$&345:?4H@MNOPQRSb, Z\)*+,-kb67qhijkl@noprsuvw|}~[]aefq !"./0;<=>@ABIJKLTUVWXY^_`ef$q./0};<=>@ABIJKLTUVWXY^_`efq !"} !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !"&@ !"bhijklmnoprsuvw|}~ !"% !" !" !" !" !" !"Mc;y&aUWg YppQ\]IpqqBQqpexq\]  #CL*R[ZG[\]:b^\]L\]J'EsFnXephikl_`nopqruqt01z{^w~uv3^_LT!^3\x^]^_p\y]de{LV|}q_~_=_ O QLpp;qq>;<xc4567`ab456"<=(>*;?456$%+3,-.2L = 9/G8N>KOPQ*BRSZ[HJcdbffst+,?Tvwxy45|})6_gijklmnopq  */")-05168:;LC;?KMDPU[\]ijklmnopqd iX=>*E?45j6FHoF4pGhg@qrstuvHwxIJKLMyNOPQRSTUVWXz{|45 }~ !"#$%&'()*+,-./01234567 !"#$%&8'()*m+,-./01234567 8           # $ % & ' ( A S Y Z ^ h k   EFGHIJKLMNOPQRSTUVWX     ; E?> < PFI@AOPRnH=@F?BCDEAG.36VaU]_PJ]_Bk4U6m(1/ !$%4&'* QDYZ>\_ -87[KXbW^`C hji635LNGIJTlWb^aQKX+20,#"59RSNL  Vf]`SH):c`YOM k'(9:[dd!#&)=7co\c"k:MgT  ;8eZ>:$< . rqs/%p +}+uvp|~*,t,0,xwyz -{12                           K#DH7^ W,73"1CAz Y.9!:@r<=IN>?@A2EcAVlWj mBD97f CD`ayz{8  8./0;<=>@ABIJKLTUVWXY^_`efq}&@bhijklnoprsuvw|}~}  8   8812%%8%%%%%%%%%%%%%%%&'345:?HMNOPQRSZ\kqm9 9@g%%8%%%%%%%%%%%%%%%%%%% !"8  }99@G_99%g  $%%g9$ 8%(%CDEFG%%cYcZ$9  %&$8%%%d\9'%9%88 )*+,-67@[]aq9%%%%%6%9%67a67%%8%%%%%c$9%B-B5B@BJBRB[BcB !#%**016789:;<=>?@BDFIKMOQSRVYX\`acejmpsvy}|#%$+,016;<AEEIHOPSUY[]_afmosuwy{}!#%'),.02468:<>@BDFHJLNPRTVY[]_acegikmoxz|~  #%-02676@mp|  "&*.26<> "#&+-/249>BEJNSX]bgjmpuz}  !%,.257;>?EFNOV[^abgjksuwy{   "$&(*.29@BCHJKOQRZ[aeijnpsux} !&+05<CJOV[]dkrw|   (-.123:<=AGHLMPRUZ]^abhjmrxyz{mhhionsssrjjj&&bbklpvvuw|}@$~I%J%`%;%;%=%<>^%_%K%@$Y%}%0102B%g%g%g%.89L%q% %6%7%6%7%6%6%7%6%7%7%6%%%%]a6%a%[%q%@$)*+,- e%f%A89@$Z\%T%U%U%V%WX%M% !"H%:O%N%P%Q%%k%&%&%3%4%5%?%'%R%S%q%Z%\%cc%&%d%89G89_89@$CDEFG%%(%(%'%Y89/89c%%89  8 9   8 98 98 9          }8 9}8 9  } }jBBoBzBqC~BBBBBBBBBBBŮBɮBήBծBٮBݮBkBBBBBCBBBBBB BBBBB B&B,B+B1B6B@@}@|@@@@@@@@@@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ &,+"#$%-.'(! sq*) &,+"#$%-.'(! *)$%sq~"#$%-.(! w ww~~ [Ftr=>[F=>tr:4bkWl{`B^h:4kl{B:4bkWl{`B^hU63j@]LKva_63jLU63j@]LKva_?VAT5/i1JG\H?5i1G?VAT5/i1JG\HA<NuceypX2<Numyp<NuceypX2};Sx};x};SxMMMnoInonoIdZddZP|0f|P|0fYEEYEzDCzDCzDC999gg777OO888QQRR77666886 99::;;666666<=6666=========66=6===========================666=666<>66666666>>6Z666666>bbbbb>>>>>>>>>66b>666>?6??66?????????????????????????@66@66ABC666BBZZ6D66BBBBBBB66BBBBBBB66E66F666GGGG6666<6==66=======66=66=====================================================66>>666H66ZZ*66I6bbb>>>>b>>>bb>>>>>>>>>>>>>>>>>>>b>??J?6I??????????????????????????????????????????????????????@@A6BBCCDBBBBBBBBBBBBBBBBBBBBBBBBBBB6EFG6GGG66================================================================>HI>b>>>>>>>>b>>>>>>>>>>>>>>>>>>>>>>>?J??????????????????????????????????????????????????????????????????@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGGG============================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????BBBBBBBBKBBBBBBBBBBBBBBBLBBBBBBBGGG==================================================>>>>>>>>>>>>>>>>>>>>>>>>>>??????????????????????????????????????????????????BBBBBMKBBBBBBBBBNLBBBBGGG=========================================>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????BBBBBBBBBBBBGG===============================>>>>>>>>>>>>>>>>>>>???????????????????????????????BBBBBB========================>>>>>>>>>>>>>>????????????????????????BBBBBB===================>>>>>>>>>???????????????????===================>>>>>>>>>???????????????????================>>>>>>>????????????????==============>>>>>>??????????????==========>>>>>??????????==========>>>>>>??????????=======>>>???????=======>>>???????======>>??????=====>>?????====>????====>????====>????===>???==??=?=?666666666666666666666666    QC5   A   ;= ^ D W !Uq2 ' X 5A; MYZ   " jT7] =RMT   A C n{   w s @u b   R   | 8  { }   { x z n y { o } } q ~ w n b i u d w u c c b C F K <  F) JMyf ` ^ g h [ d Z f N W L W Y \ Q X D X Z ' tG U D N P G E ? M = J J : A = 9 ; = "C 9 9 7 , 7 9 - ; ; / < 5 &, ' 3 " 5 3 ! !   BC uAxI# " &    %  !  V)   Di         w~{zuvsyson~rviNVjsrfpg_nlkcZ[^>bFE:C;4A?>7/02PIQJMHTFLBA5E>8;=:H<6H563E354A"7*2*3,703#'+/%'*%#     q|uxa`Kl)" ("5_qFPOjksp  "# %'%!/-$-;4 +24DEJG:IKB2NJ@MR>EXVROJ^\[b\^gltbowgmLZkttoYU]]Yil~ %&"   842$7!3"EF8G1?@456NI42UVHZOXARIWXMoRqoa]u_q]\ceew   $(&( #!$+'15640-):/B?BOM?AOSV8IY[N\>PaQaY[hfXZhgjL]STeaqdglL]xjmQmcduqsv{[lq{    :EP[fqy{  $H $))  ++--0-. 0.-/. / --120728.2981Wv7H^^9 %% ;QY:[W%:%;::kY!Q``v%lk| m l>[>>|m%%>>>">>%> #z&&cncpncpnc&p&ccdpddzddd$&&%eeeeggeffgeefggfff))ssps&pssG@@sG':(:)q}}q*h~~5}}bhb5+~}~\r,\0r}}}1~5~6**nnn89:;n<*n*OO@*AEOOOOOO001F1*H*0I1JM*00O11POOOOOOZZLVVQRZZZZZZUZ2Z2ZVZVV2vZv22JWvZZZZZZ7Z7ZLZVZVK7ZZbb[77]bbbbbbbT;b;_b`bbb;cdbKeT;;fbbbbbb<b<<gbhi<jkbyy<<PlPyyyyyyPnopPPqrtuvxyz{yyyyyy|}P~    """""""" !"#"$"%')*+,-.012578:<=>""""""?@A"B"SSCDEFGJSSSSSSKLMNSRSSTXYZ[]^_`acdfghjmSSSSSSnopSkSqkrsvxyz|}~22222222222222222    222BB BBBBBBBBBBBBBB !"#$%&'()*+./013456789:B=>?@ABCDEFGJKLMOPQRSTUBBBVWXY\]^_`abcdeghijklmnopstuvwxyz|}      !"$%&(),-/123777777777778888888888899999999999:::::::::::;;;;;;;;;;;<<<<<<<<<<<========>I>>>>>???????@@@@AAAAAAAAAAABBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFGGGGGGHH HHHHJ JJJJJJK KKKKKKKKKLLLLLLLLLLMMMMMMMMMMNNNNNNNNNN~}|{zyxwvusrqolihgfedcba`_^]\[ZYXWVUTSRQPNKJIHGFEDCA@?>=<;:9876543210/.-,+('&%$#"!      ~}|{zyxwutspomlkjigfedca`_^[ZYXQONMLKJIHFEDCBA?>=984     tojih_UTNMLFEDC@?=<6543*" 6666666666666666666666666666666666666666666666666666666666666666666666666666666666 !"#$%&'()*+,-./012345#6789:;<=>?#@####A#B#C#########D##E##F####GHIJKLMNKOPQRSTUVWXYZ[\]^_`abcdefghXiXjklmnoXXpXXXXXXXqXrKXsgggggXXXXXXXXXXtXXXXuvwxKLMNKyPQRSTUVz{|}~\]^_`a{{{{{{q{rK{{{{{{{{{{{{{{{{{{uvwKKKKKKKKKKK}~KKKKKKKK% KKKKKKKKKKKKKK}~KKKKK ',&    B( D,C'KFKKE,UGgh,KKK)+GHI%7H7bLIc8MJ9N!!7O7^!T_:p`i!!jkqa;7d7<e7r7!s77t!=!f!!!!!XuY>Zw{,x[vyz|\]LJ,77+!,!!PKJVVK<VV --5=6 -W-/L0M--W--**C\D]E^F6G6"",""""""777766!!,!!!""""""))VV*+*+**,7---,-;!Q<.Ro!!S*+*+**7,7---,-!.00!!010200q37473r56!3!0707007373!3SS!!77SSSSSS7!7--!!!!! SSSSSS- - ' 7 7!!! !"#$%&'()+,-./0123456789:*;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]^_`abcdefghijklmnopqrstuYvwxyZz{|}~""""""""""""""SSSSSSSS))SSSSSS))mmmmnnnn      !"$%&'()*+,./#0123-456789:=>?;@A<BCDEFGHJKILMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345!!!!!!RRRRRRR*******~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMIHGFEDCBA@?>=:9876543210/.-*)('&%$#"!      ~}|{zyxwvutsplkjihgfedcba`_[ZYXWVUTPONIHBA@?>;:9874321.-,+(&%$#"!    '/(%$~}onmlQKA@?/$#6666666666666666666666666666666666666666666666666666666666666666666666666666666666yylex       %P%F: invalid hex number `%s' %P%F: use the --help option for usage information %P%F: unrecognized -a option `%s' %P%F: unrecognized -assert option `%s' %F%P: unknown demangling style `%s'%s: emulation specific options: %P%F: bad --unresolved-symbols option: %s %P: SONAME must not be empty string; keeping previous one %P%F: invalid common section sorting option: %s %P%F: invalid section sorting option: %s %P%F: invalid argument to option "--section-start" %P%F: missing argument(s) to option "--section-start" %P%F: may not nest groups (--help for usage) %P%F: group ended before it began (--help for usage) %P%X: --hash-size needs a numeric argument %P: SONAME must not be empty string; ignored Shared library control for HP/UX compatibilitySpecify target for following input filesForce common symbols to be definedUndo the effect of --export-dynamicAuxiliary filter for shared object symbol tableFilter for shared object symbol tableSmall data size (if no size, same as --shared)Set internal name of shared librarySet PROGRAM as the dynamic linker to useAdd DIRECTORY to library search pathOverride the default sysroot locationPrint map file on standard outputDo not page align data, do not make text readonlyPage align data, make text readonlyIgnored for SVR4 compatibilityGenerate relocations in final outputJust link symbols (if directory, same as --rpath)Strip symbols in discarded sectionsDo not strip symbols in discarded sectionsStart with undefined reference to SYMBOLDon't merge input [SECTION | orphan] sectionsBuild global constructor/destructor tablesPrint version and emulation informationDiscard temporary local symbols (default)Don't discard any local symbolsDefault search path for Solaris compatibilityAccept input files whose architecture cannot be determinedReject input files whose architecture is 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 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 sectionsSet default hash table size close to Use less memory and more disk I/ODo not allow unresolved references in object filesAllow unresolved references in shared libariesDo not allow unresolved references in shared libsCreate default symbol version for imported symbolsDon't warn about mismatched input filesDon't warn on finding an incompatible libraryCreate an output file even if errors occurOnly use library directories specified on the command lineIgnored for Linux compatibilityReduce memory overheads, possibly taking much longerRelax branches on certain targetsKeep only symbols listed in FILESet runtime shared library search pathSet link time shared library search pathCreate a position independent executableSort common symbols by alignment [in specified order]Sort sections by name or maximum alignmentHow many tags to reserve in .dynamic sectionSplit output sections every SIZE octetsSplit output sections every COUNT relocsDisplay target specific optionsUse same format as native linkerHow to handle unresolved symbols. is: ignore-all, report-all, ignore-in-object-files, ignore-in-shared-libsOutput lots of information during linkRead version information scriptTake export symbols list from .exports, using SYMBOL as the version.Add data symbols to dynamic listUse C++ operator new/delete dynamic listWarn about duplicate common symbolsWarn if global constructors/destructors are seenWarn if the multiple GP values are usedWarn only once per undefined symbolWarn if start of section changes due to alignmentWarn if shared object has DT_TEXTRELWarn if an object has alternate ELF machine codeReport unresolved symbols as warningsReport unresolved symbols as errorsInclude all objects from following archivesUse wrapper functions for SYMBOL-G--shared--library=%s%P: unrecognized option '%s' defaultnodefinitionsnosymbolicpure-text%P%F: invalid number `%s' Usage: %s [options] file... Options: %s-%c%s-%s%s @FILERead options from FILE %s: supported targets:%s: supported emulations: Report bugs to %s ignore-allreport-allignore-in-object-filesignore-in-shared-libs%P%F: bad -rpath option %s%c%s%P%F: -shared not supported %P%F: -pie not supported descendingascending.bss.data.text.text-segmentP,KEYWORDSet architecturemri-scriptRead MRI format linker scriptdcdpentrySet start addressExport all dynamic symbolsno-export-dynamicEBLink big-endian objectsLink little-endian objectsauxiliaryfilterIgnoredgpsizesonameFILENAMEdynamic-linkerPROGRAMSearch for library LIBNAMElibrary-pathDIRECTORYsysroot=Set emulationprint-mapnmagicDo not page align datano-omagicSet output file nameOptimize output fileQyemit-relocsrelocatableGenerate relocatable outputjust-symbolsstrip-allStrip all symbolsstrip-debugStrip debugging symbolsno-strip-discardedtraceTrace file opensRead linker scriptdefault-scriptRead default linker scriptdTunique[=SECTION]UrPrint version informationdiscard-allDiscard all local symbolsdiscard-localsdiscard-nonetrace-symbolTrace mentions of SYMBOLstart-groupStart a groupend-groupEnd a groupno-accept-unknown-input-archno-add-neededno-as-neededassertBdynamicLink against shared librariescall_sharedBstaticdnnon_sharedBsymbolicBsymbolic-functionsno-check-sectionsno-copy-dt-needed-entriescrefOutput cross reference tabledefsymSYMBOL=EXPRESSIONDefine a symbol[=STYLE]embedded-relocsGenerate embedded relocsTreat warnings as errorsno-fatal-warningsCall SYMBOL at unload-timeforce-exe-suffixno-gc-sectionsno-print-gc-sectionshash-size=Print option helpCall SYMBOL at load-timeMapWrite a map fileno-define-commonDo not define Common storageno-demangleDo not demangle symbol namesno-keep-memoryno-undefinedno-allow-shlib-undefinedallow-multiple-definitionAllow multiple definitionsno-undefined-versionDisallow undefined versiondefault-symverCreate default symbol versiondefault-imported-symverno-warn-mismatchno-warn-search-mismatchno-whole-archiveTurn off --whole-archivenoinhibit-execnoinhibit_execnostdliboformatSpecify target of output fileqmagicreduce-memory-overheadsrelaxretain-symbols-filerpathrpath-linkCreate a shared libraryBshareablepiepic-executablesort-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 segmentunresolved-symbols=dll-verboseversion-scriptversion-exports-sectiondynamic-list-datadynamic-list-cpp-newdynamic-list-cpp-typeinfoUse C++ typeinfo dynamic listdynamic-listRead dynamic listwarn-commonwarn-constructorswarn-multiple-gpwarn-oncewarn-section-alignwarn-shared-textrelwarn-alternate-emwarn-unresolved-symbolserror-unresolved-symbolswrap@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@(@@@@@@@@@@@@@@@@@@@@@@F@@@@@@p@@@@U@@@h@~@@@@@ޠ@@@@V@@o@~@@@@@@@@8@c@t@@@@@]@@@@ʟ@@0@@@g@@I@X@s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O@e@@U@@@,@;@p@J@V@@@@@+@:@I@X@g@@@@u@@@]@ @i@@)@@:@@؝@@@@A@Ĝ@@@@@S@@@@@@@@,@;@J@n@@ٖ@@@@@&@5@A@M@Y@e@@@@@Ɨ@ٗ@Ę@ޘ@@@@@)@5@A@P@k@z@@@@v@@@@@@@ߟ@8@ @aQCsC]CAABYC"CbbC@sCjCccCuCCddpsCCdCee?CCυCEC̅CsCޅCCBCCffUBsCCFFUBsCg%C-CGGCtC4Ch;CHtCDCISCptC CllnC[CvCLLCtCCtCmCCCMMtCCnnCچCNNuC׆CPuC;CooCCOC CxuCCqquCCrr&CiBCRRCuCOCssYCkCSSwCCuCC vCCttCBTTCĊCCۇCCpBuuCPvCCCvC CvCƋCvCVvC(Cxx4CNCXXwC]C8wCjCyyCwCYQEXwCC((CC))CÈCwCCwCC݈CCxCC8xCCQCxCCCXB&C2CxC:C=C3CHCxCRCyCiC8yCfChyC{CyCxCyCCCCC͉CC݉CzCCC+CC(C8zCCC:CUChzCiCzCfCzCxCzCuC{CC@{CCCCCCȊCC̊C݊CC CC4Cp{CCC{CSC{CPC|CiCCCC΋C݋CC8|CCp|C$C|CNULL TREE %B:%s+0x%vPROVIDE (%s, ASSERT (, %s) (%s)ldexp.c%X%P: %s %F%S %% by zero %F%S / by zero MAXPAGESIZECOMMONPAGESIZE+=-=*=/=<<=>>=&=|=||&&==!=<<>>MAXMINASSERTA@AAAXAAA@AhAAЕAЖAApAAAA(A@AABqC C C  C  CCCCC C C#C&CCC)C,C1B B,B+B1B6BB=B?B@By\BZ]BA/CB3C`7CgC$`B%sB&BIܰBKB.B%F%S can not PROVIDE assignment to location counter %F%S invalid assignment to location counter %F%S assignment to location counter invalid outside of SECTION %F%S cannot move location counter backwards (from %V to %V) %P%F:%s: hash creation failed %X%S: unresolvable symbol `%s' referenced in expression %F%S: undefined symbol `%s' referenced in expression %F%S: undefined section `%s' referenced in expression %F%S: undefined MEMORY region `%s' referenced in expression %F%S: unknown constant `%s' referenced in expression %F%S: nonconstant expression for %s %s: Supported emulations: %S HLL ignored %S SYSLIB ignored GNUTARGET no emulation specific options. %P: unrecognised emulation mode: %s GNU ld %s Supported emulations: %s version 2.20.51.0.2-5.48.1.el6.tuxcare.els8 20100205Copyright 2009 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. 0x%sno symbol[%s]%s generated--defsym %s%s:%ubuilt in linker script:%u%s+0x%v (type %s)%B: In function `%T': %s:%T%B:(%A+0x%v)%ld%lu%%%c%P%F: please report this bug %F%P: internal error %s %d %P: internal error: aborting at %s line %d in %s %P: internal error: aborting at %s line %d (AJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJA=AӵAGAGA̷AAGAJAAJAJAJAJAJAJAAJAAAA.AJAAAAJAJAJAJAJAJAJAJAJAJAJAAJAJAJAJAJAJAJA AJAJAJAJAJAJA:AJAbAĴA%P%F: cannot represent machine `%s' %P%F: cannot open linker script file %s: %E %F%P: invalid BFD target `%s' %P: skipping incompatible %s when searching for %s %F%P: attempted static link of dynamic object `%s' %F%P: %s (%s): No such file: %E %F%P: cannot find %s inside %s /ldscriptscannot find script file %s opened script file %s /usr/lib/usr/binattempt to open %s failed attempt to open %s succeeded %F%P: %s: No such file: %E .a%F%P: cannot find %s C%X%C: prohibited cross reference from %s to `%T' in %s %P: symbol `%T' missing from main hash table %X%P: bfd_hash_table_init of cref table failed: %E %X%P: cref_hash_lookup failed: %E Cross Reference Table SymbolFile No symbols ldcref.c%X%P: cref alloc failed: %E /* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.sharable_data 0 : { *(.rela.sharable_data) } .rela.sharable_bss 0 : { *(.rela.sharable_bss) } .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 (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.sharable_data 0 : { *(.rela.sharable_data) } .rela.sharable_bss 0 : { *(.rela.sharable_bss) } .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 (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.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.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.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.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.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.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.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.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.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.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.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.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.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.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.sharable_data : { *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) } .rela.sharable_bss : { *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); 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.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } %P%F: --just-symbols may not be used on DSO: %B --build-id[=STYLE] Generate build ID note --audit=AUDITLIB Specify a library to use for auditing -P AUDITLIB, --depaudit=AUDITLIB Specify a library to use for auditing dependencies -Bgroup Selects group name lookup rules for DSO --disable-new-dtags Disable new dynamic tags --enable-new-dtags Enable new dynamic tags --eh-frame-hdr Create .eh_frame_hdr section --hash-style=STYLE Set hash style to sysv, gnu or both -z combreloc Merge dynamic relocs into one section and sort -z defs Report unresolved symbols in object files. -z execstack Mark executable as requiring executable stack -z initfirst Mark DSO to be initialized first at runtime -z interpose Mark object to interpose all DSOs but executable -z lazy Mark object lazy runtime binding (default) -z loadfltr Mark object requiring immediate process -z muldefs Allow multiple definitions -z nocombreloc Don't merge dynamic relocs into one section -z nocopyreloc Don't create copy relocs -z nodefaultlib Mark object not to use default search paths -z nodelete Mark DSO non-deletable at runtime -z nodlopen Mark DSO not available to dlopen -z nodump Mark DSO not available to dldump -z noexecstack Mark executable as not requiring executable stack -z norelro Don't create RELRO program header -z now Mark object non-lazy runtime binding -z origin Mark object requiring immediate $ORIGIN processing at runtime -z relro Create RELRO program header -z max-page-size=SIZE Set maximum page size to SIZE -z common-page-size=SIZE Set common page size to SIZE -z KEYWORD Ignored for Solaris compatibility %P%F: invalid hash style `%s' %P%F: invalid maxium page size `%s' %P%F: invalid common page size `%s' %F%P: unable to place orphaned sharable section %A (%B) %P%F: failed to set dynamic section sizes: %E %F%B: Can't read contents of section .gnu.warning: %E %P%F: failed to record assignment to %s: %E %F%P: map sections to segments failed: %E %F%P:%B: bfd_elf_get_bfd_needed_list failed: %E %P: warning: unrecognized --build-id style ignored. %P: warning: Cannot create .note.gnu.build-id section, --build-id ignored. %P: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored. %P: warning: %s, needed by %B, not found (try using -rpath or -rpath-link) %P: warning: %s, needed by %B, may conflict with %s %P: warning: .note.gnu.build-id section discarded, --build-id ignored. sha1sysvbothinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazymuldefsnocombrelocnocopyrelocnoexecstacknorelromax-page-size=common-page-size=.rela.dyn.rel.dyn.rel.comment.gnu.warning..note.plt%s/lib%s%s.soeelf_x86_64.cLD_RUN_PATH.gnu.warning%P%F: looping in map_segmentsincludelibc.so%F%P:%B: bfd_stat failed: %E found %s at %s md5uuid.note.gnu.build-id.eh_frame.eh_frame_hdr%s needed by %B LD_LIBRARY_PATH/usr/etc/ld.so.conf%s/%s.so./dev/urandomi386:x86-64elf64-x86-64depauditdisable-new-dtagsenable-new-dtagseh-frame-hdrexclude-libshash-styleBgroup.rodata.interp.sdata@A AAAAAAҟE\EYEPbEtEEEEEgldelf_x86_64_write_build_id_sectionread_hex/* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.sharable_data 0 : { *(.rel.sharable_data) } .rel.sharable_bss 0 : { *(.rel.sharable_bss) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rel.init 0 : { *(.rel.init) } .rel.text 0 : { *(.rel.text) } .rel.fini 0 : { *(.rel.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rel.tdata 0 : { *(.rel.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rel.got 0 : { *(.rel.got) } .rel.sharable_data 0 : { *(.rel.sharable_data) } .rel.sharable_bss 0 : { *(.rel.sharable_bss) } .rel.bss 0 : { *(.rel.bss) } .rel.ifunc 0 : { *(.rel.ifunc) } .rel.plt 0 : { *(.rel.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } /* Sharable data sections. */ .sharable_data 0 : { *(.sharable_data) /* Align here to ensure that the sharable data section ends at the page boundary. */ } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } /* Sharable bss sections */ .sharable_bss 0 : { *(.dynsharablebss) *(.sharable_bss) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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", 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.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.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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", 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.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.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .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.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.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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) } .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.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.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rel.ifunc : { *(.rel.ifunc) } .rel.plt : { *(.rel.plt) *(.rel.iplt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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", 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.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.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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", 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.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.sharable_data : { *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) } .rel.sharable_bss : { *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) } .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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-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", 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.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.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.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 (*(.init)) } =0x90909090 .plt : { *(.plt) *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (12, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(32 / 8); . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_i386.celf_i386elf32-i386`*B@*B0*B)B*B)B)BҟE\EYEPbEtEEEEEgldelf_i386_write_build_id_sectionread_hexldscripts/i386linux.xrldscripts/i386linux.xuldscripts/i386linux.xbnldscripts/i386linux.xldscripts/i386linux.xn%s/lib%s%s.saei386linux.ci386linuxa.out-i386-linux/* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.iplt 0 : { *(.rela.iplt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) /* For some reason, the Solaris linker makes bad executables if gld -r is used and the intermediate file has sections starting at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld bug. But for now assigning the zero vmas works. */ SECTIONS { /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } .dynstr 0 : { *(.dynstr) } .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } .rela.init 0 : { *(.rela.init) } .rela.text 0 : { *(.rela.text) } .rela.fini 0 : { *(.rela.fini) } .rela.rodata 0 : { *(.rela.rodata) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rela.data 0 : { *(.rela.data) } .rela.tdata 0 : { *(.rela.tdata) } .rela.tbss 0 : { *(.rela.tbss) } .rela.ctors 0 : { *(.rela.ctors) } .rela.dtors 0 : { *(.rela.dtors) } .rela.got 0 : { *(.rela.got) } .rela.bss 0 : { *(.rela.bss) } .rela.ldata 0 : { *(.rela.ldata) } .rela.lbss 0 : { *(.rela.lbss) } .rela.lrodata 0 : { *(.rela.lrodata) } .rela.iplt 0 : { *(.rela.iplt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(.init)) } =0x90909090 .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini 0 : { KEEP (*(.fini)) } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .init_array 0 : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array 0 : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got) *(.igot) } .got.plt 0 : { *(.got.plt) *(.igot.plt) } .data 0 : { *(.data) SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ } .lbss 0 : { *(.dynlbss) *(.lbss) *(LARGE_COMMON) } .lrodata 0 : { *(.lrodata) } .ldata 0 : { *(.ldata) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 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.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.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 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.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.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.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.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.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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) } .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.iplt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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) } .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.iplt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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) } .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.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.iplt : { *(.rela.iplt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 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.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.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-l1om", "elf64-l1om", "elf64-l1om") OUTPUT_ARCH(l1om) 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", 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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) *(.igot.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } eelf_l1om.celf_l1omelf64-l1om^B^B^B^B`^B ^B ^BҟE\EYEPbEtEEEEEgldelf_l1om_write_build_id_sectionread_hex out of memory ;4 вP x ` @8PPh 0@P(`@pXp0`0Hpp  (0HpP  `Hpp P@`00` "@""" &H&`@'x`''''(@(0(H(`0)xp)))))0**(*H+` +x0,,--(-H00`00p1(1H2x3 509x@9 ;`;;(p?8?X?p@ AAhCD EpFFPG@HH@pKhKLpMM M N@ pNh O P PQ T8!TP!`Ux!`V!V!V"0W "PW8"pWX"X"@X"`X"X"X#]P#^h#`#`#pa#a$@b0$c$e$e%gP%h%pi%v&w(&zX&P|&P~&&P'p'P'' ' ((P(@()P )`)))* (*P* ***P +@+@+P+p@,,@,-0@-@X--Ph..`.p./ X/@p/`/////000@P0`h0`01`81`1P1102P82@2223`(3X3`333404`4 4`44H5p55`56 06pP6p6 6p67@(7H7`7 77 7 70!8P! 8`!88p!P8!h8!8!8!8!8!8!8"9 "(90"@9P"X9p"p9"9"9"9"9#9 #:0#:P#0:p#H:$:p$:@%:p%;%;%0; &H;@&`;P&x;&;&;';';(<p3`<4<4<`5<6<P6=6 =7H=8p=`8=9=9= :>`p

<>@>B?0DH?pDh?D?@E?pF?H`@I@LA`MHAQARASB T(BTPBXpBYB`BaCgXCiCkClClCm0Dn`DrD uDPv@E}E~EEF0FF F@FІFF@GhGGЙG HHHОhHHHH8I@`IpIJ@JpJвJ JK@ K8K`KxKK@KpKK L@8L@LL@L MpHMPM M@M@Mp NpNNNNO`O0xOpOO0Op PPHPpPP0PPp@QhQQ@ Q@ R XR@ R RShSPSSPTPTTTT TUhUUUUUV(VzRx $xN s O b N D^Go J $d@rAPG GFA$N i I ML7$BBB B(A0A8G*C 8D0A(B BBBG {4`LXdP|H@80(  $%<(%T@%lX%p%%%$bDl H M K Q<D G \Dt0()D,@H^ J t D v B D D PA G $GMN0 F <N0Y I D\BAG J0U  AABA _  AABA  AN$ MN0 E $MN Q D $AG n DF ,<AAG h AAE ,l8ADG0s AAG LBBA A(D0W (D CBBD Z (C ABBF HN0b A  gDY E D,XnBBB B(A0A8D@ 8A0A(B BBBA D 8F0A(B BBBA D 8F0A(B BBBA D 8F0A(B BBBA D 8F0A(B BBBB LBGD A(J@S (A ABBG H (A ABBJ L,BBB B(D0H8G 8A0A(B BBBF |h p Q L eBBB B(D0D8DP0 8D0A(B BBBG ,EDLQd?|$-ADD aAA$-ADD aAA,{ p, hRD ;\ t 0    X QHe A b `IMD w DV, DQ$D  MI n D l L4 AHG0[ AAC [CA4 qAAG S FAE DCA `OQ d K L LBEE E(D0A8D`$ 8D0A(B BBBE d ,Aj4 qADD s AAB nAA4 BIA  HBK _DB @EI{, pAIG c AAJ ,D +X0s E g I fdt eBBB B(A0A8GPJ 8A0A(B BBBK  8A0A(B BBBC d BGE E(D0A8DP{ 8D0A(B BBBE J 8A0A(B BBBC D  d\ BEE A(I0y (A MBBO h (A MBBF J (A MBBL  7Dk H 7Dk p fN { G  GQ X 44p!YBAC C ADB EAB,l!ADG T AAF ! $!MD x G F J $"MD x G y G 0#=AL nA$P#\<X#BBE E(D0D8GPw 8A0A(B BBBB L8A0J(B BEBD#xBEE E(D0A8D@S8A0A(B BBBL$BEE E(D0A8D@p 8A0A(B BBBA L4p$BBB E(D0A8D% 8A0A(B BBBE d%LBBE E(A0A8Dp 8A0A(B BBBJ A8A0A(B BBB\&BEE E(A0A8D` 8A0A(B BBBC v8A0A(B BBB$LH'MMI@[ B t'eDP L D$(mKb C S M $X(MN@~ G $ )~EY J A O $ x)MNpG F 4,N a A 4T`,AG ] AJ j AE cA$,MML0h B -BDi A --HDo A $ -MAAG AAA<4.0BEA D(D0  (C ABBD $t.MI w C /Hv J DX0%BBB D(D0G@ 0A(A BBBG @3$H3O` A K E LD3BBE E(D0I8FP 8A0A(B BBBG 4?LD n43Dj4MN ~55 HW$$5MMI0gLx5?N pl5 HW5 HW5QMI zL5BBB B(D0D8G@ 8A0A(B BBBD :*De<4:fBBD C(G0 (D ABBF t< $<MV0 B $=oN H J N=YMD GL>bBLB B(A0D8J@ 8A0A(B BBBA LL(?LBEA C(G0E (D ABBH (D ABB,(@MYD@b D OL@BBB E(D0J8G`b8A0A(B BBB,(BAGJ H AAL <LBZBLA A(D08(D ABBLCX BEB E(D0D8G 8A0A(B BBBE P3D n,P}BUC R ALG 4$0TAAD0 AAA  AAE \UD! K 4|WIAAG O FAA  AAH dXBBB E(A0A8G@ 8A0A(B BBBD _ 8A0A(B BBBG X[CAA<[ID ] G `\[?A] B Z$|[HF B e K HL@\AAG Q AAD O AAG , AAJ S AAK $^MV@l A ,hc|AAG V DAA |LcBEE E(A0A8D@j 8A0A(B BBBE n 8A0A(B BBBH L 8G0A(B BBHN diDM G <(eADG H AAJ ] AAA \AA,,eADG x AAJ <\f2BBA C(G@e (A ABBF 4hBHA A(D0(A ABBhmN f D $hAJ  AF LiBDD C(N0P (C ABBA P (A ABBF $lxjAJ E c M ,jMN0e H  C $lMX0d G (ogMI Ld xo|BBB B(D0D8J 8A0A(B BBBE i 8A0A(B BBBE Dtq BBB D(D0G@W 0A(A BBBD LXtBBB B(A0A8D' 8A0A(B BBBA L (BEB E(D0D8K@ 8A0A(B BEBF $\AQ { AB LZBEB B(D0D8G 8D0A(B BBBJ 4AG Q AF O DE JD $$ @D J U K L BBB A(D0x (A BBBV d (A BBBK S (A BBBA  (A BBBE @ (A BBBK F (A BBBG X (A BBBQ  (O BBBA J (A BBBS  (A BBB] 44!BQH r AII dAI4l!8xBAA D  AABA !!xL!pBEB E(D0D8GPf 8A0A(B BBBC $"<"șT"Йl"ؙ"" DT,"AV I A W A W A"p "hN@K G #D4#BBB A(A0D@u 0A(A BBBG d|#BBB B(A0A8D@5 8A0A(B BBBK  8A0A(B BBBA #СmDo A $$ MN0X E \,$XBEB E(D0C8G@ 8A0A(B BBBG Y8G0A(B BBB$$iMPD0G$$УiMPD0G$$M[@L%BIB A(A0 (A BBLD (A BBB$T%Ag H R N $|%8Ag H R N $%MN0u H j$%MMI0 D ,%0MMN@_ I $$&pMMIPv G ,L&حM[Pm K  G $|&XMU@@ F $&MI0 F ,&رM\G| D ,&H%MMN`q G 4,'Hf BBB B(A0A8Dd'@Di C K$'zMS@X H d'BFB B(A0A8D 8A0A(B BBBI  8A0A(B BBBA <(PBIC N ABA T ABY DT(Aa V { ] m K w a   L y G A O (8HMD v(hXMQ y(QLN v(KMD y)KMD y<)H2ApT\)heMN0` E O I  H 0 H 2 F  E S E )&$)LI f E )yN W K *pDL$,*x9MI ~ D T*qD@U G Pt*qD@R J P*PD@n F P*yD@` D P* *( + + 4+ L+ d+ |+ + + +++  ,$,<,T,l,,,, ,,,4- BDA [ ABK RAM$L-`ADI OAA<t-BAA B HBH F ABO -P#DU-h#DU-LDC-!.,.D.YD h D d.0DS I O$. Ay F Z F ..L._ BBE B(D0D8J 8A0A(B BBBA ,/GL/xGl/G/MI /AMD k/HG$/N | F X H g$0@kADD _AA$<0XALGCA4d0ACD G CAE vAC$0(MI k G 0gS S<0=BBG A(D0 (O BBLI $1 <1$T1NM[P I d|1BEE E(A0D8D`P 8A0A(B BBBA  8C0A(B BBBH ,1rMI Y A  M H H 27DN F Z42$L2MML`zLt2)BBB B(A0A8DP 8A0A(B BBBA d2p`BBB E(D0A8D 8A0A(B BBBA w 8A0A(B BBBM L,3hBOB B(A0A8D@k 8F0A(B BBBA d|3( BLB B(A0A8IPV 8A0A(B BBBA p 8A0A(B BBBA ,3 jADG D FAI <4 BBA A(D0 (A ABBA \T4BBD D(G0r (A ABBE L (A ABBF s (A ABBA $4cAG n AI 4 $4MI H B 5XAD<5XBBE A(A0G@ 0A(A BBBF $5AD  AK $5,HS0 F L5BBB E(D0C8Gp 8D0A(B BBBH $$6P$GYNPn K <L6x%BBA A(Dp^ (A ABBB 6(AN A 6(46(AFI l AAB q FAH ,6)BAC ABL,78*FBEB B(A0A8G 8A0A(B BBBA $|78.0MN@q D d7@0)BEB B(G0A8D` 8A0A(B BBBH D 8F0A(B BBBE L 81&BBB B(A0A8DQ 8A0A(B BBBG $\87fMQq A ,809BGC U ABD 89MI $8:LH[ E G A G A L8:BBB B(A0A8Jv 8A0A(B BBBD L9X>3Dnd9> $|9?MI H B 9?AD9CBBE A(A0G@ 0A(A BBBF $ :DAD  AK $4:PK,HS0 F L\:XLBBB E(D0C8Gp 8D0A(B BBBH $:QGYNPn K <:SBBA A(Dp^ (A ABBB ;UAN A 4;`V4L;hVAFI l AAB q FAH ,;0WBAC ABL;WFBEB B(A0A8G 8A0A(B BBBA $<[0MN@q D d,<])BEB B(G0A8D` 8A0A(B BBBH D 8F0A(B BBBE L<^&BBB B(A0A8DQ 8A0A(B BBBG $<efMQq A , =fBGC U ABD <=hgMI $\=8hLH[ E G A G A L=`hBBB B(A0A8Jv 8A0A(B BBBD =k3Dn=lW$>`lYI@i E ,>m D>mFAJ E u$d>@mSDM G Y O N>xm,Dg>m $>nMI H B >oAD?sBBE A(A0G@ 0A(A BBBF $L?sAD  AK $t?`z,HS0 F L?h{BBB E(D0C8Gp 8D0A(B BBBH $?GYNPn K <@ BBA A(Dp^ (A ABBB T@AN A t@p4@xAFI l AAB q FAH $@@0MN@q D L@HBBB B(A0A8DQ 8A0A(B BBBG $8A0A(B BBB$ D(PMMN@y G <4DPBEA A(G0 (G ABBJ $tD mMQNLDhBEB H(A0D8I" 8A0A(B BBBF 4DGADD l DAF DAA<$E0BHB D(A0v (A BBBB ,dEAC EJ C LEBBB E(A0D8D@I 8D0A(B BBBF LEBBB E(D0A8DpP 8A0A(B BBBB <4F BEA D(G(A ABBtFAF`ADFhBEB A(A0G 0D(A BBBA <F8XBEA A(D (D ABBA <GXBEA A(D(A ABB\GtG6Gd4GGADD m DAE DAAG QGHO rLG`>BJB B(A0A8G@ 8D0A(B BBBF ,4HPAC KYA G dH|H $H<AAD sAAH{Hi G Hx$HpQ_@X 3@ Bo`@@ @ ^ hp#@!@ o!@oo6 @0h.3@>3@N3@^3@n3@~3@3@3@3@3@3@3@3@3@4@4@.4@>4@N4@^4@n4@~4@4@4@4@4@4@4@4@4@5@5@.5@>5@N5@^5@n5@~5@5@5@5@5@5@5@5@5@6@6@.6@>6@N6@^6@n6@~6@6@6@6@6@6@6@6@6@7@7@.7@>7@N7@^7@n7@~7@7@7@7@7@7@7@7@7@8@8@.8@>8@N8@^8@n8@~8@8@8@8@8@8@8@8@8@9@9@.9@>9@N9@^9@n9@~9@9@9@9@9@9@9@9@9@:@:@.:@>:@N:@^:@n:@~:@:@:@:@:@:@:@:@:@;@;@.;@>;@N;@^;@n;@~;@;@;@;@;@;@;@;@;@<@<@.<@><@N<@^<@n<@~<@<@<@<@<@<@<@<@<@=@=@.=@>=@N=@^=@n=@~=@hh:C1Chh'C qAaAoAnA0tAkAiA`gApaAaAPfA`AAAPEAh hh`hCxhiB AAABAPA`AAACLEA`AAPAA`AA:CE+4C#/C+E+E#@BB AAA 4B*BPA`A&BB)G2GA%BBpBBBB:CE+4C#/C+E+E#@DB AAAЮAAPA`ADBBBz!G!GA0DBPCBoB AAA bB^BPA`A [B EBDHMHAYBSBRBKBFB@FB:CE+4C#/C+E+E#@ild.debug.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink @@ !<@<$4o`@`>  @ F@^ No6 @6 z[o!@!@j!@!tp#@p# ~3@3y3@3p =@=mB@B@p H4 HIhh(h(0h0h(hH`h`h h