ELF(4dd000hhhDDQtd/lib/ld-linux.so.3GNUGNUmhxF}ɔ@ B`"%& D@p!A Aԍ`(@pP@LH!D F0( ! p @ (H !YC$ @ HpHPPDP*@ A $/ h!`Hf  @⊀@@ L $ , <"K %""Ra !"$%&'()*+-./1345789:;=@ABCDEGHIJLMNOPRSUVWXYZ[\]_`abdeghiklmnpqrsuvxyz{|}~qFp ~+k3ut4lLy4lCw)]a##iш`-M4! g[;D=9 2O8@ *ֈeP&]fNeK1bMW-lSg+2+yOh8Dlz#ʼnګJnWJW"&ѻBE!?~|vݺt-nS_vG^9T;lm'شR`*CjKyQZegnW)'DVM C̔o͉ga[Wۓ/N=S8yLC}L2K:뵅|;'Y,T^7ỉwT<׼`n7vgUa#!t:$u ? pTvŹ@ Y״V1{|!9/thlu {4ֽݣk@aX/t}vC 'c$}o77#!f-2@|ޓ}pG|1_!WqX}=% }tSz͊Rd`vS)dNAM|zӨYh-؟9hLܑu Gu rj CAPބt eێh:[x_t; gz3{SYy-Ɖ?FO; ,1nMV&d3-Ap @*9սsj%!W,˖p:x1 qhi H{4ϝ|-ٌcUfIG2 {lyֈ<{ . = Q  fC p<  KLC  +ȶ `k  l,Gm ^Թ(  8\t :8:(H8; \D ,m|,G j  Գ8 t \8!$ H ( ܺ ȹv,M  8  8 X Ĵ# 0:$D _ x  h;  ]x d ȼ. ct<I 4: X 4? :l <#$ r dM$ ĺLT0X ,P O L 8x ?X>tP X (:+  Լ кB ص ܷ6~8% _0a P $}  -4Ohܴ8!%y<5ķ`  ̵tH E T h mp 2o  `>  4 K D,G ( F 8 P) V @ 4 X (d 0Xf `[  i ȳ  ` l$'8@Px,G  L| Զ[дh = @t$:8 8p | зظDػM$v    8H,:yT dE8@nx |Z S d̻.̸ XRbҒ2 XRXZ XRXRvBqXRN{X .H84-H,8-HP<-HD-H :P-H\-Hh-H8x-H-H-HH-H-H`>-H8-H-H-H8(-H4:H-HLT-H d-H(:p-HX>-H-H pF!HpF HpFt!HpF4!H pF|!HPpF 2  ii Z ii 48{88 8 :$:(:r,:0:A4:R8: 8;#X>o`>1\111J11/11Y111}111111S1]1 1112e22 2@22292O 2$2(2,202~4282"<2@2D2H2mL2 P2T2WX2x\2z`2d2h2vl2np2t2x2|222'2;22222P22E22 222222D2C222*25222`2>2M2222333 333y33 3$3(31,303b43Z83<3a@3D3H3KL3P3T3X3\3^`3Td3h3l3p3Lt3hx3|33?3f303&3323H333G333[33733i3s33d3333U33k3q333(33V44g4 4_4u464I4 4$4<(4,40444Q844<4@4D4XH4FL4:P4-T4X4+\4%`4d4h4l4p4.t4x4|444844B4p4$4444|44j4 44N4t444w44,44!444 4c4@--~ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌxƏwʌpƏwʌhƏwʌ`ƏwʌXƏwʌPƏwʌHƏwʌ@Əwʌ8Əwʌ0Əwʌ(Əwʌ ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌxƏwʌpƏwʌhƏwʌ`ƏwʌXƏwʌPƏwʌHƏwʌ@Əwʌ8Əwʌ0Əwʌ(Əwʌ ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌxƏwʌpƏwʌhƏwʌ`ƏwʌXƏwʌPƏwʌHƏwʌ@Əwʌ8Əwʌ0Əwʌ(Əwʌ ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌxƏwʌpƏwʌhƏwʌ`ƏwʌXƏwʌPƏwʌHƏwʌ@Əwʌ8Əwʌ0Əwʌ(Əwʌ ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌxƏwʌpƏwʌhƏwʌ`ƏwʌXƏwʌPƏwʌHƏwʌ@Əwʌ8Əwʌ0Əwʌ(Əwʌ ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌxƏwʌpƏwʌhƏwʌ`ƏwʌXƏwʌPƏwʌHƏwʌ@Əwʌ8Əwʌ0Əwʌ(Əwʌ ƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌƏwʌ0 -p 嬠 ` W*0S0;0SBA @@0> 00AS Q P U40@O 0 />D00@-0 MSP@ 4`0`$ R B1(e D00 0( @ 0 e Ѝ0A> 8$@-0  :aO-Rb@ 1 p W\(0plSWpG0S ܷ 01, R   M  B gR#@T0A0 R` 0S! 0  0S 0!0  B g0Q1@T 0 S@  R P@P De 0@1@0 S W 0!,0@ 0Y H10SL^!0  0!  0100>D8A-P 0`S0@  V:tp00?P P P0`h``w 0 0>D@-\@*Pp P000*P*P /P P p@d5hO-,MȜy ? 0|))\9T #L ͜PX @@T `  NP  90S~8P [8:P zqdh弈P 0:%DPP PP0 ,,lHl0 A000  P0HP8X  ,,(P$8< @0p030gPP  U`g`W̷2_00hPDn_0S4 t70S%  PXX cPc0ԖS~ <RP c*0]&0Pc(0S=0S V0S~_Hh&P 0-S0S60L05E@6 08   8 @UL0S &40S@60S j,0SP UP 0G0셟SC @PP 0@@P6 P1  됥@P pblhP Up' W 0 P*0Pp *(00S000E SN    U   !PQ tP dP TP DP 4P $P P P P P30S(P [ c2}LP83 i:5hb $a뼢PL@ 8 Hb0Sa0\ SP (f000S$^$0S\ f̒00r002 D b b=pB`ᾚ1PlR PDp4)D 0   P1 0c|0' b$d^mb 41vb x ob\ n   /X d [b< ] Tb$ VMb^pALLFLP5EFELMFE8ME E,5LMTML\MF@FMN$@-0S 0S 3/@0p@-HP@`0< T V* p@ :\h, 0Q@- @!)@$Clx8@-D0P0< SP8,@,x 8@D :|0p@-0@Sh0AQ Tp@ia1 0<p@ba0 ePYaAh>ԏO-_M0MS_`@oȯ0 (0@040 0$ 0$p 1G0 T3:t/kȀW  0S0!$0`P $@p 0000  [0 00 @DHR@pGpT *000Sw ` 0F>`?V p~p} P P00 5p#(5(p%S(p<>`V`0>p(W n ` 0>`V p@0ԏ0h2p\͟p,8p`FYV񟗌lT\((((@@((0 ((t((((((xp`P@80(((((((((((($(xH<(, X8((((x(pXL@4xX8LtL$|dD(4$(( (((((pX@(th\PD8, (((((((((l(\T (((((x(l(`TH(8(x`H0pX@$ |hT@,hP<(|p<0((t(d\L<, (th\P((((( l(((`H@8(($pPdD, `P0S0@0 P0S0D0 P0SL0 : 0_0TgS8p,`I0K?p@DG,` 0`;p`7pWp0>0S? ,` ̌ @ 0R>C`V6VV`f)4pW 4`Vw poㄆp F. 0<Q 0p,p  @FRΌ R [6 F0IS@GW  RA\\,@I 5p`W` 4` u%e0<   4,@ p` 0Ss0SWU 0T00<W@W PލЍ st0S(00{0STPy0p8$Sp(0{ Xl0 (pq0H$,E($ a $ 0509s#.,8pI0K?pß z0@DS kp>G\ß0C0t FXW uGp\3pGp0<@@@ 8e" QX<@=000~(a0SW 3S20 8Vi 40\L4SQŸ0(pS00$2 ` 0R>C0 0 p`*(0 M 0H0@ 00 D L0 0 @00H D0L0{ 0 @00H D0L0s 0 @00H D0L0k 0 @00H D0L0c0 @00H D0L0[0 @00H D0L0S0 @00H D0L0K 0@ H0 D L0C 0@ H0D0L0<0@090@060@030ZWS:-+9'DDD$C'[c|D :xT(Ph@w4<d9D(Xܑ{zyNE&%^~CBA+: ̐EE,-h>0 Y @ # 0D΍ # @ 0 0 Y @ # 1~ # @ 0 01 Y @ # P1n # @ 0  % % % % % %&D0u*P;~L;z;wu0@0rP2@0o0@0l 0~ f 0n `0@0]0@0Zp0@0W00@0T0@0Q 0@0Nd2 \ Jt2 \ F2 \ B2 \ >2 \ :2 \ 62 \ 2 0q _,  pVK9% #  00 ; P a; Q  l3` 0B<@ 0  0X9 #0`@0\ P5 - q 0@0x4@04@04@00@00@00@00@00@00@00@00@0U@SU@0U@(0 U@Q0 U@TtU@\MU@0`iU T@>U@0 T@I0 T@0 T@~'U@y"U@t?U@o$:U@j45U@e 0U@`X+U@[h&U@V uT@QU@L  T@F  T@@?@ 0T@9|  T@3^  T@-&  T@'>  T@!<  T@X  {T@l  uT@  oT@   iT@  cT@E  ]T@-  WT@+  QT@%  KT@/  ET@*  ?T@~T@0@0!zT@0uT@0@0-mT@b 0@0B  ZU B8  B *^79909  @9 7^P0 0H9 0B9 4g[J7} { yo.uk.qg.m k i0@0fqBcnB`8C]5CZ9CW6CT 7P N ]JCG^BD  -C? ? 9 ?΍ 3 ?~ - ?n ' ? ! ` ] @BT;7 607 x;  ;78757; T ; T ;@ $ 0IT K5;0IT E50+P0T0X000\0T P95$<T 35<,0P0TXT 0P\0'5l,0T PT0PX0\05D00`@`: 00`@`0 0 @)0000@! 00 00@0 !R0   00 0 0@0 !R0   0@0 0v0 @00H D0L0n =  B hm pW 1ppZ0@0W0@0T` 0H0N @0 0D  F0@00 R@,Q<`> p@pW   P@2R@$ I P08   8 P r8 0 00@oP pW 11pp  R6g  AA +B 'B B B @@ @AA A AP6P&H H6` 08@PQ9@L9@G9@B9@=9@?@?@P0 ;9@  69 19{ y w L5  B q8e pW$ 1ppc?`4` 08@X 4@ 0 ` R4` @  ` L 00Q@ 00`0>l4` @  ` 8T4 ` 0n8@044 ` 0f8@(4` 0^8@ 0@0#fS@3` 0M8@3 ` 0E8@ 0000@0000@0@0H5E5SSSS!52X ,2X ,2 ` 0 8@2 00X`Rxb2 00XpRX0W 1[ 2X 0Q4 0Q4 0Q4 `p_Q P ~Q4 xQ4|0@0~&0@0{1@0xE?@0u/0@0r*0@0o-0@0l+0@0i0@0f 1 ` 07@^ p`!y p` p`@P PBP@4 h ^W6P@(\1P@#Fh>̑ ԑܑ   :xh4QtdDPtd@0@-4@    @/>D@-@PU P0 CQ`qAP pG 0 P`      P0PPP0B>P/8@-t@P0S  Q8Q  1P0T08U8>@-@PH 0S  T0S@@>P@- P00 0R0@,0@ 01P @/@i>@-@P`p\ 0PS(  1T  0 $0U JPp>p@-`0P0@P P+P 00p@-d@P0S  1S @ 3`pV@>?O- MR  BRY0 (X0S) 嘟O P0` " ` + R`0>CSP0  \ŸA . 쾟RΟ 0оȠL[P0Ο;0 `8C8 Ο kl   S񟗭4hx H   4 $           t d T D 4 $   tdTD4$tdTD4$tdTD4$tdTD4$tdTD4$tdTD4$lP@0 p`| l \ L < ,          H,dPlXH,l````````` 0 0;0 0R0X00*S:ĺ00\0S:0\00S  1S : Ѝ[?::: *'U<ʟP@Z˟000 *D +4:0+(:0+^?0+ :0p+V?0`+90P+90@+900+>0 +90+_?0+90*90*S?0*S?0*d90*X90*L90*@90*N?0p*$90`*90P* 90@*90}0*80y *80u*J?0q*80m)80i)80e)80a)80])80Y)G?0U)l80Q)`80Mp)T80I`)R?0EP)880A@),80=0)K?09 )805)801)70-(70)(70%(70!(70(70(70(70(70 p(70 `(70P(>0@(d700(O?0 (H70(=0(,70'>0'70'70'60'>0'60'Y?0'60p'Q?0`'60P'60@'600'|60 'p60'I?0'60&50&460&F?0&60&S?0&M?0&50&50p&;00`&:00P&(00@&)00}0&{00y &}00u&=00q&<00m%%00i%/00e%-00a%+00]%*00Y%?00U%!00Q%~00Mp%|00I`%&00EP%,00A@%>00=0%409 %405%|401%p40-$d40)$X40%$C?0!$<40$E?0$ 40$40$40 p$>0 `$30P$30@$B?00$[00 $]00lŸd0C$S  k@"0   R MR  D32000SB0C06S#0 Kd#002KR5 ; 2! 7#002"=00 0R|2 XRh2X2"2"820",20x" 20h"20X"20H"108"10{("10w"Z?0s"10o!10k!U?0g!10c!10_D>F DD(:4:mnw~}YWVU1N{zy9765)*'KJIG.FM#"!/-SO:ZQR;=+?>EACB&%v32    $oecbf_ji[aD5^]qrsuDD>D 800, W?0< T00L 00\ 00l 00| 00 00 00 00 10 Z?0 10 (10 U?0 !D10$00CS$0 Adp1 |! 1!t>0!]?000 0P01 Pe,PEQ  0 S `dPT PD P&"0PP=(200%<2plP2\ t2 B2M"0/S0*S0 kല " 0 S"3.#A?& 0!@;0\#\0h0C? 0T0  0LJ;Ό0S \  .BR \@'/PA ,P @PPxT0,t Vꀴ$$4$40$40$W?0$40$ $5%$550%A?4L%>0TT` 0 0` p00刵0 0` ꤵ0 0 ~%%5w%6p&>0l&60h$&-00d4&+00`<&@0 0; 0 T`lp \0 &制`00CS`00000Bz8@-PP8t@0S  Q    0 0P0T08>@-T`PU@qP.0T10@DS@0T0>Q@-`pA@TPQU0@P 0 p``PPpP(P,P0p@-`P@P T0  0S0 00  0P  p0@-@@0/50/>0\/>0/D0/D0/50/>0\/>0/>0/>@-p`@T PQP ppb0QP9PX\>+C-@P$ P ap t x0W q !  ( !`dp$P C=8O$>5DPA-@$0 S`pX10 P U  Q (`pdP$ Pp0@ pP `` m 0pP(P,PPpP00AN$>5p((0 @-@@@/5>((0 @-@ @@/5>((0 @-@ @@/5>((0 @-@@@/5>((0 @-@ @@/5>((0 @-@@@/5>((0 @-@@@/5>0 B  /5>0$ R B1(/>C-` M 00S@P#p`V `V P@ Ѝ 0`p@ 0`)G  * Ѝ KBNGp O-`Mp܏ @P:8 < 80- ϟ@ 0S 0S@<  @ \ 0S 8 0 0 CRP8 S8 0PP8 00< @@2 2 8<0IV9 P0N 0-PGP  RV @V@@T 0-S0lS0S @  T읟0DPX IPP8 <0?P@  IPt! @D T#######################################t:$:#######################H:###\:88#,9##D9\9p99##946T6#6#66#######7H7\777745L8d8##84501#1d841L1`1x1#11############################1 2$2283,945333\:3345<5T5h5555555 6 6&,&D''L8((t((`(((4)L)d)|))))H*X*** +D+|++++++,,0,\,,l.,,,- . .<.T....../,/D/@0\022H2`2x22p0000::::;;D;;;;|;|<L<`<:88830P@0 *L@, L {Lɟ 0 `\@ 7+@TZPT  :J@PP0S MT@I<)00100``020?X80(S S1P0<0- 000000PP0S  2*LT0S  *"L0l R007 0SD8 @   ) Ѝ<0S S W2gS0 0ŵ  K;0?7,0H@ T ,04  (`` @0P0D0`  P R R  P (`400 ƟD0,H @ Hu&0H@6LP t&@P6\ƟL D0HƟ@(LX&0L@PA 6Ɵ 00000 `@0 00 0%@T P PU0(00d%0800`0000<080005@Pl4 0%X00 @004$00,0 0}40wğ0qh$0kP40e<ğ0   _$$6H#0p0l#P0000N H H00S@ 4 #J3T@@@08H8t3DC/ND3 0&<ß00X00 B N2  p2Ÿ< R < 80S08002< R < "80SŸ08001|2xŸ< R < 80S\0800H08 <0R4"08000000"000Ÿ0$000$00000!0000 00P)  C!0PpP#  \!08!0 !0 !0@ 0@   8 X>  X`(` FF(5 (GPp F0 < L @?   F4: 4@^ EAAAE8<D8h5DE`>EF , x90GH000BP0T 0  ;l0   50  / 0 )0 0  "0 0Pe h000 000 00 $ 0 ! HH0800`!`0<00x!=@1P0 @R  R8 I00c 0 0 Ce 00CH H00S   {rIKB %0tP 002QF+2 0() 2 -0P00008003   04"0H3L 0  }d0 `  w3 0r30lEF3 0e0 ) _f80Z3l@P^ P P0GL$0ATd 0 0 08x0  20   ,4 0 %0   0 @   0` "  %0E 0d5 \000l5 5P 0 &@P Hs00000%040004000 00 6 0@  &否 w똖\Z P`@#0p@W 0S _@ R8 J!@`V P0S R 0S X00{pl0H00u7 0p0   j000e'000` 8 0['0U(0O 0 &0GH000B\000=d8h 0@  58H00/K8 000&D8 00 )( ( @ P9@@Z 0H h@<Pp)0|)@$09J9 H0000$0)T@T 0S  00Q00AA 0< 0 PT T0 0t 0,00 0D000JST *    , : R0 0(00+ 0P00, HP+H00S0` l0@00yxG0s;H00n+0,000d; 0  P  U,H <,0PX0: S , 0A\ %0L8|:J030 @ -%0' 0\00! 0,0000   = 0  ,-0$00 @0$00D-Pc X=\ 0 x @0P"0 (  0 @  0Q000" R `0000   (,0Q0000" R 0d@000P0.2PP0h 0R0.0>h00Pp P0S0`V* 0S' 0CS[/ X 0 (X`V @  ,@x #@pWTV@ `T \  @ H@T  $0PQ@ Q  hT4v}B  @(ğkB  a @P 0x0<0@T (` 0ß0(000+P3 0t!P dP X L#E0<#0$PD PT 0  "  ogE0 iaE00400 ]|"SE  UME]x PHE0d JBE0 Ÿ9P000 %02 0  !` 200y0wPL0pPN 0 !@  a X! E0X| E0d D0HV80LA,0 N 0H9 ; 0T0/ 0D 004 hD0 D D04FLhF<F  `>DE$ hX +DEd P/41 0 RrS@-$  R\DC(D(DDDDDDDDDDDDD(D(DDD(D(DDD\ @T  @.T 0S@/0S\ 0S R 0@ /  RP D0 !QP://@-@"QP : 0R@/-Ѝ/0S060/8@- 0PR@ $$/D0 0 8h18@-@PP 0 08@P C 2P0@-@ M @P# PX 0 P0T0L`0PP QB$ P Ѝ0h y P Ѝ0 5D@-Qp3@-Jp3C-(Q@0SS@Pap0SGGGGGGGGGGGGGGGH "P P @T0S  5:RQ p0S RQ CCFD@2H2h1 @-@  <@|C4zC$uCrCoCؑ4|O-P,MpXR d崄A0SHIJ,J,JJDJ,JLPLK,J,JKJ,JJT 0 "ST / ! +B(  @ E 0< S 004 1  P c  C22# $ B% 0%4P P <Y,Ѝ0   0401P b B3320A% 0%Y%  Y% 0S R0 W _RA0 _R AeR 0nS0dS0S00P ;YW0 1 c@ C22# A% 0%Y?P ; PI !" z00% 0%Y*y TP ; P9 0S " 0!0F?C0CS/(M(ML8M0MY YZBYR 0R 12% 0%YC   | .&Bl )!BLXX T00" .Rd0S00u@F<DDh1p2P20E0@-hP M  0}@P 0S Ѝ0  0 Ѝ0@k AE28@-PM@P80 S 00S008@-p@"`0SP=  @0@S0S.  0S@@ 0S S S 0@S WUA@  @8:22O-\p  0 0-SP  `V%`Y! `0  PU 威@T PP010XY0000@```@T @T7p0P' >W! "!oP@@>T">B"UT  ">4P hh'7>@T @T@>@T0 Rj  .Q w 6Q&o7 0S~ 0 R Y R 0AS @P 0]>Yh6A0x0V>hvhL0 }P@PT L@ @T LЍCi 8> 8ЍCJ>0>5Q *>G%> @5>@T0@S "@P!  0>X XuLT X>şp0 7 `c `C22It L0 "@T @T L0ЍC 4P ЍC=@=@T(0CS "@P 0   00p0\=Q0LH=7=07  0!Ѝ3 LЍCw@=@T0BS "@P0F?C0CS񟗭b|blb$bb R 0S 80 03tLЍCXЍCy== 0SYQ 0p= 0SN k=PU$ 0S.0S _=0@T X=@TS=Q N= 0S0S F=PUA=W=@T K@TX4=H1=D.=18 L@  ЍC===dqp!!p0 = 0 0SM = Ippppt<p<y3j<@5$HH! <n8! 0 6P 0؁X%B@ P 0<n<kDE33D`4@d4l4<@F44F 4434DaL4T444544H4443@333W3d93h1;ԓ$4̓ēܓ44w0E44@-0@40PS1 S*  0R `P P P P pD0S jD0`eVD@0S 0S 0RE55(585@0S ?S *S [S ?S *S [S 0S p@-@PQ`0TpS    " T 004000p3pP ppEG-@MT`p P@T P0PP 0S 0S PЍ, 80 ` (40$  ,S013<@b 0 R0< PL5 Pl25, 400 000#`; ,47t0St Y "4 4x0Sx Y X4tLL$0 0S RD $ 30"""# #0Sn j0  00,0S X0S0 0@4 l$P 0PD@"Tt Dl̇l d0llpt`p1̇g R0l h0f 0"B@< L0 l2>p ,\A`2Bbe0 000SU,P, "pb@W @`T  0*SP0@S `T ,0 00 @T]P@ @T0/0, !  R( 0$`V! XP q`V 4P0S 0S 1 P%03 @Pb\@b(Z lQP QKbQPE @ lGp P"` 0 $FD@<F77D6GS8\@16(E7H77h1EB, @;(0S   ,b!WVb&c # ! 0bWV:"WV  2b@2 R@( P0S, "a`p`VpT! 0D 0  0 d 2$34 0( R0`p(`pb#b`pG-@@$P pkZZ` LP` [W@@T JG@2( 8C-p, P- P( 1ԀX. `@@T VP/ PP # 2@TXV j@m0 @l 2L0ԀXH  01` }P`(@8\88A-P 0p@P* (`V0 00U0S  pP& p(`XPUS 0S ( V@X0SWW  @1p` 1@{9p@-0M0 0@4h =0P 10P@@0`0 @@` xt0tt 00P Ѝp( fЍp@\1 @X@@ 5F89@DD`9<DE@-@ 0S'hh@@@0=CS 3  =0PQ@p@-@`DP" 81HP ,Q\/ P 0PX% ,P 0P D0s \0pP 0 G0P0PPPPPPPPPPP0 <`P0 0 00H5{Eh99p@- 0`PS@@ PP0@T (0S X0S USppph1O- M0蓟@`Tp` P 0RL W  7/P  3(0SPUP[0SI  X30S[ Y T= P430SL0 30SL0   P@T LQ W  07/P 0"( RP@T00Wpppi0p@T0SP0 0RL W  7/P 0 "( RP@T10S 10S? 0W TP  0RL W  7/P 0(P@TT P 0RL W  7/P 0 !( RP L   P@TPP ЍT P 0RL W  7/P 0 ( RP@TqTPP L0Q00# P@T ЍDE@  @@@@G-鰂pMPrUb) 08 "$ l@T @T X0S 0R 0Y $ Lu _PU i/ L@c ^ PY T0 :PU'  L3!t l [/ P@@f/T!<O/,0S ]/,00S D/0X/PU L@0@  !@0 T!P 8@TpЍ000 @T t @T \ @FE:99999:X:5`:4h:8:D @@s,tC-@ MD`W0Rp0P'     RX 01 3/P X0S ЍX0S1X00P0x|SL Sp0SX    . P 0"P1 3/P. 0d13/P Y 1(!0S 008 8088, R 8  8  8@1 !D ,0 ,1P 40 0S0R !R P !봀DP ,|p ,P t ,P}T ,Eh1' ED@G Gh5F$;:FDdl:89::@-@ $0=P l@b,@L; @-0$-@P j, @h1 @-0@8P 0S S 0s 01 0@@8@-T0P    40!@ A00S88@D@E0A-p0QL@L0P PQh`%*u <@PETL00PP /@TL :FD8@-@QSR p0@0S 00!  PUP 0R888FDD0@-@M0    Ѝ@D\0@-a MLpL@P`.@a YЍ@FD1@-P  R@ 0S0S  RSa T @R 0SU T   R   QpRP T P  10S 0S 0P@/P"P  00S 0S 0S p00S 0S H0Pp0S P0lP0p@E<8@-0R0P,PS8@A0C7SNԪĪĪԪĪĪ0000S80 00000000000 *;8@-$0P@T85/@T8D8@-$0P@T85/@T8@ 8@-00 @R hh*0`P R $P 00@$0 ,8@! *0@h1%Eh5T&%0G-M@P ЍW-%0P P &P`00S\ Si3QU*PU $p AR LR LR R  tP0S .Sp0aS0S000`$035 rP 0P#" ⣯ Q pp%00%0%0 00%0`c {) ~u) xo)`Q di)QTd)LLL ?@E0<<FF;@<DDA>;;;;h1 X18@-0P@T 0S P @TH0 0N@%00S 8P8DFG-P`U pP$ T1@T@T  0P  00@T0@T 0#@T0S ?S *S [S ?S *S [S 0SP 0GL0@T 0@T  SP@8@-@P8P0S<DDD`DDDDDDDD<DT@T8  wDHEp@-@PPp`S S @T 0 ST0p@Tp4 VT0pT0pDmG-@Pp`娒娂0SPȵȵȵȵȵ @Tp P0Sf S0S;   $0S 0S^  1SPUPU 0S Pa0S 0S % , QV QH0S& ^?C0CST00T0W0HT Q0|"!  0R 0H0V Q  0 Q a PUT 4Q  4PED@d<yq@-0`S@PPx0Pp0Sꔷط@T x0S@T YFDTO-@P Mp S0S| |||||ظ|||l2@T20 R' Ѝ 0`  0 0 S0 10S b `V 0S ?S *S [S  ?S *S [S 0SPa %0p 1S0 1 1W 0L0   #`0P<10S 0S)  &0 0 0  `2= S V 1S2= SP 80@ 2P%00 0%00 00 1SP TP %00%0j@D 5EDD<Fl<$0$!R Q/ $!/@$5C-` (p $P0, R,VP`0<`L0<`@i !P  Q  R:@X !P00 0 S  R:D00P0@<<40@- @ 0 0 00 5$50Q !("Q\00S T T 0S800l\/## \/@DE@-H1 R 8 K1Q 1@p H0SP #P` PU 0S @@Q0 !p0S0S   \0S@@T00T00iS` PlPU0p0t00Ct0FDE@O-0 M80 p`80S 080ЍȒ0x Eu &Ц $ 0 R0pZ t0  $ &@P &@TP r0[Z@P8Z@TP7% 1UTf* lQg Ф@" S R:QP\0T@1 \ D0 d10$QPJ0D ?@  Z0UT 0 R0$wP T0Фp t0& p R0E   0 \i @$P%p@P` @ 0UTZ:080ЍODФ Ф@ 0FE0@-P MU"@@p@PW` 0D00D0:P!0L S@0pW0@0* ЍP ЍEEO-@Q M` Pp@0S RP(q0PSPV R 0*SP0S0x4<P 0  0R ~ p 080 0 $T@0$0 (0,00040 ! X `PQ ?Q *Q [Q ?S *S [S 0S`V. P\ Ѝ?S *S [S 0S03 [Q ?S [S 0S *SQ*S0S`VU0YX  `VO ?V7 *V5 [V3 0?\ *\ [\ \0S( ?S *S [S ?S *S [S 0 S\S R ! P Z 0 0S 1<PM0`00p` `8`F<1TU? ,1U> <Uh1 0 0S *S [S 0S ?SP  1$ U!  Q_S 0S @@ 00S@@Zθ Pҹ VaJ ⾸ lP¹X  + >IA@( 8|=C=O-M0Pp <0 8`@1S: 4T0L>@EO-xlMP /_0 1$d?AT |@T(P lO0 1(PLH?(o<QE/10 00@T, (_(P(^@T4 %0`~$ ៶Ο$> 0Sp P 0 0 0R 80 WM t0S 0SpZ @>003/P0SǶ@T(@X0SD NؐY pL匶`P 0P4h@  PP' PT * 0 p:@T:090Y 0(`<XP@㸷 0@ p80b|"̟00  Q %0 0l0S   )  0SQX0 013/(@h< R $\  0S <( R) R hP %4 ˟  Ṷ`00S`0 0 `0孶K+1 [0 1`@pPU 0S^V 0U P PTppH P@0`0b`UH0T H 00bVH0H V0bH0 @0T ؀X1 z娚j(P0l@T% @T" X0S$00 X` ὴP *0 0S :Q0  J @TX0@V (f@9PUpa ` PU H0S$80S  R S @0 1@T wPZ:`p PUP T 0P. 4( 0 $$@P`8 @ 00   0p兵P [GoPU! H0S0S 8@T@T `dVP L ᒴ @TPUlW7 0S8 (pQ-8ǟ 0lPU `pĵǟ 0`0P R ! Y @V1 ⥴ T᩵ 0 `ȴ4 0P \@P pAP0SY 0SV 0S 0SP Y@1@T 8Y+@T #0Sp (Pe 0S_VI 0   Rş000000S0`0 @@T H 00aRH0 0S ^V\ @ 0S S@  RT   @ lQd @p  R p0 $S 0 ß00SXdp `p0H0SP 㭳S00p13/Y@P 㝳4Qt}   PG  ,0Sa  0 9pC0 42! a. A<.< p 5 Y4(@2SR0B?SQ  R@L BSN "0Q"@ 2 000ʳŸP 00C0SR `IJ0` Q9 024r壳`P T  /"%"ɴP( lЍB 0SlP{h!BS@X10SL1P@ Pa場P lЍ0S  } py 0 |wp`0@tPn%0lQg @8F@?d9dQDr<d<D?@@H@P@@@DB$B$@{A?DDAAD? 5@ED>F\A@@h1mFE>AE@ Q 00S#p @QT 00b1,4 l L1 1<V@D<@@PcB@D<\S!UT000&S7 x BS# IS 0Rp0|6 4 6RUTСbIV 0]C $!08!YƟR YA T 0Y! Y0 0d$F8FP P0S  0.S0S E00)0P BQM Q[ Q QVRP  S ЍOآ0S\ 4 0@pP 00C0S40TS tQ 0L! q0Sn S 0X13/3    \0FSX  -0P T O  @0P p 0AF0P A`F0App 090S6 0P 3@ 0@mP? 0S @;<   0S ! 0!0S A"UT P 0kB $!00S 0S B!@P2UT0" R 0MB $!0! 0   0! 0!! r0!|S !SB 0 00 0+S -S/! T0Z!1`!S  S  42 b0 B505"Z0 0QS !S !UT*A0P 0S04 R~\Q4!BH`@P"UT *04 R | 3" @( dFFABS?#NWW UDUG%AT EtUUUT WTVVTT<E2VFFV0'`F!5ЍOH0 0 p@P !UT030#0! 0 Q!0M!`p bA0 Z000 0 000 0 $!0Z!X1$aWVV0 FAF1!P 0Rp01 !4Q80S \2 \A\080!UT000!0 Z!@2!0# "Z!d2 2 B0 b40"Z0 2!UT0#030!UT000((!c5 @!m!,UTph 6  ЍO*B@aXPv #P_ !E 0! O0SF0S9  280 CR[0CS410S' X   0A10Sq  0 !0"!   0 &4C匠0 g@0d4 R ! 0! \ 㳟ЍO@lT|r! @!!%8%< Rw  \0r0\\Сؕ S &`Rp`pp P r0 0 R % 0H t  j U TP @T P 0!$!0A-`Pp@@2T 1SW 2T~U  Ld2WL A膠L僠WALWL vhRFXWp@-@ Pz400`ᘸ(0 0A 0p5@-@ Ppc000`ၸ$ 0Ap 05@-p @PM000`k$ 0 pA 0k50-0@0 B04F$@-@ 00@@"4F<@-|`$Mp0h@P 00 0 pB4 0S  ㍞$Ѝ$ЍF<C-|`$Mpl@P 0 B0p4 0S  i$Ѝc$ЍF<@-t@$M0 P\ "0P4 0S  G$ЍA$ЍF<p@- MPڷt0t@` 0d"P`04  f 0S  ! Ѝp Ѝp5F<A-P @p=`P@p` A-P @=` P@`  A-P @pl=`P@p` @-@p[`! p`@ A-HSHs@`L0S0L0T 0 S񟗜>t???@<@<@T@d@p>0Q 0!AE?@0C.SvA@@@@@@@@@@@@AA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAL?:L@80S L0؝L)AΞ1PU $ RL`AgL0@xL4 [! A L0 宝bL AIL(㠞XA^ L0呝E L ゞL(7 L0\|TAILAF :xW|WWWpWWWTWW dWC-Pp p` l0@PB0 40 P 0S 0S 0  F<W- M ? ЍG-Pp a1@PB400 P W R  ќ   P @P   "\"H"Ġ0 P@⩐P p@D00L S7L0 "T  pF<WC-Pp ` 0@PB0 40 P 0S !X 0S , |  rF<W@- 0003/A@- 0003/A@- 00 03/A@- 0003/A@- 0003/A@- 0003/A@- 00 03/A@- 0003/A@- 00003/A@-00@0S3/A@-0040S3/A@- 00$03/A@-0080S 3/A@-00<0S 3/A0@-MH\ @@,ՙ깙-0@0@`00S  P 00SN &PI  @0@40@0 Ё ` 0 000@0S  R$ 0`V 0Sn " 0@ 0@ l0b00Q100Q QHיP`` @V ,ߙ0@r2  0@l ҙ0@dᔚ0@Z )"  "X XbP 4bP {00P20S D2 P ci0@([0@" ( R 偙0, H`S`R GS5 (0S 0 R 10nV g0@0 Rd  a @ ja(0@0 F0@0T0Jñ004 8(Q P,—P ㄙFZ5$ZGA`ZO-P$Mp`  0/S< P200/S1 1@T*0荕 P  @T $ 0 0  t P$ЍЍ@0 ^@rP@ݔ$GEP5E8@-0PS8$0 CW 0 C RS000S R %  0 ( 00 000S=A8@-,@P0S P80AL_8@-,@P0S P80AL_8@-,@P0S P80AL_}80@-0@S ې- AL_D0@-0@S ɐ nP uAL_D0@-0@S ᴐ YP `AL_i2O-0 MS`P ᏐY8P@p0 13/ @R` \0f 0 Qo vuvvv傠Q! R  倐 PU Џ  R p W P ᦐ ЍQc  R0  R8 T @0S1vwww  Q/ 0! 0  倠 ܰ 05  050000 ~P Ѝ0Sp 㪏0  048",gTA__4`8;<"`L_-0H- M 0P @ S S(  0坏 0MЂ 00@P 0dP 㥏 K0H Ѝ/$ 00t $0MЂDd`$:4: :\`@-$00S oLAL_@-$00S >AL_ŸO-M P0 Xg`㼒P@Sh \g Sc R % p80@pp0pS6`V P @E 0S9 0npW 0B0Sp0B0S2R0 0 BR0 S \- S 0S %0p0pSp x Ǝ  0  00apЍ0 p 0p0B0S |倏P  000S 0S00Sp@p|0@@ R P @T@DD  SA00SS00AE(G`l`AL_ 09070 P/ ZA`p@-P$㢎$ @UP寎P D D0 @@@p( =`b 05A`p@-`@PP y `00"0 p  A`8@-0P G၎@P 80":80嘎ӏ] ግP 003/P 88 嵍P 8$ 8,:a 0a 0/AO-Xc M@Tl @R 1T S s 0   BR񟗚t@0 ԀĀx| 0SPU @ pbP R| 0 R@0P :/PbPUPŸ@訐 0@L1 @D0 Ѝ     t h \  D 8 ,      0,0z    ێPx ,0  lA_Es(t|tp|XaBdq$5x$ywx|tsXssL_ha`a`0C-@ M`p@Q@X@X T0S 0S @3/P0 0@T 0S  㺌@Vx0S 0S %00%0L Ѝ}%00%0 ЍAa@-XP0@X0Tp` 0S @3/`P0 0@T PAA-`@Tp@T 0S PU p@3/PPv@T _ EAa80@0 00S //00S0/0XX -QR eE" 0QP#3/@-0 R03/PB8@-$0@#S PP 080@ U 80@88 c@- @  ڌ ӌ ̌ ۋŌ pԋᾌ X͋᷌ @Ƌᰌ (㿋ᩌ 㸋ᢌ 㱋ᛌ 㪋ᔌ 㣋ፌ 㜋ᆌ 㕋 ㎋x h㇋q P》j 8yc r\ kU dN ]G V@ O9 H2 xA+ `:$ H3 0, %        pދ X׋ @Ћ (ߊɋ ؊‹ ъị ʊᴋ Ê@謋 dhdddHeeee4fxffgPggg5E.PB;=XB6\Bxssssstt t,t8tHtTt`tHstt Ps@sFsXstshtpt|tttttttt@-P`@p· <PRsć.0E0@hua8@-@PT 0SH4444444444x(`@T8P 8lP 8P 8 0R0 008P 8uDO-8Q$M`00妆P 2 A00 $(,p  p埈 &``唇0`V 0Pq$ 7/P`$ЍO08 *8 [0 0$ЍOwED0uPB5|uu1@-@ MT R@TQA000l0S -P* IQ 0 0 0IP 00C0S( Æ Ѝ@ a0S   0/P B0S Ѝ0X R b% 0 00x||45@\`T 0S T00S H ㅆ {000 Ѝ@EPBvAuB5DuB0@-P M@ 0S+؜tt 0.Q tPhN 0.QQ @@@ Ѝ0E4v0S/O-ēģ4M 嬇   04 R $@#T$ |sHX 0S @T\S`(@T% 00S0TP 0S ^\  D ܆ P`[ Q  [ @TP,DP0  P@܆P^ @P ,@T 嫆0400$ X@P9X6 $0 +P 0p4 `  p@ᮅP. 0 @ V Q 45 Q  p Y4 0S 娀0S  5P  L0S0L0Z:000 0Sw 40S6T0S P P ,ЍY  P  0 0"> "PB  0R  R2  嬂P0SP0 P Q00SV ㅂP|Sx30SA WW VP sPU 8S 0й ,Ѝ[  0Ź ,Ѝ V P2$[}  0ᴹ GP`Rpd"2aWppIxRl00drCP  Ⴖ0Sa4"忷0P,20Y$RT RR0 "0aS0q0[0g P@`P@ p$) 0a RrSEP? 0 0S s XU Q R  R   PQ  @  R `H Rp فP  R   R R[ 0PCP0@P\ 00@PXSZ   PE8PB5 L6\6D6L5,54D465d{$0C-P M@` Ѝ壀᠀pᝀpp 0PpPP pAP 080@ $00S D~- ЍZ Ѝlu0S/130S/0 /X0S/ 0R/AEp@-P@0S p0SpPp R p0 0p`P $0 /㞀P 0!P kPp0PP@p@pPBT @-00  W@7@0@  e 8u3cO-0 x0MX `Rᴱ D R PppCT0@TP A3/0T0 3/0T0 3/ ~@ mR# dR  5R R x1 083/P % 0C岀PJ ЍX~P4 S~PQ  ㄀PdQ @-P:PX@P 00  000   j 0 0 0`0  @ x1 03/P ` 0LUTЍpWh0~0pbP  ~P 5UX h~`@@@ 080 <D@s5 8$,|ucO-,W4M $0S 4Ѝ(`V* @T @T 00S0mS }P' `p&}@Pb  0\ 㬐o~ (|6@cx t: L6 0|~pP 4f44@P '~ 0 W 0S ~w}P Y00@%0S ~@T4Ѝ 0R 00 0S 0 0P  p05L YP HRP $L0S K~ GP\}P w Qp0 ^}[ YW0S P 0$0$0 (0 P\~04[d  0 Y\ 0SK~} 0p~ pjP%}}` @TT} F @TC xs `00Sy@To 00S`Y8}P #SRX0S+~P|0(00dS05S0S  } GQO p / 0pPp 'gP|P$`p 8 ~P(0 `p   `p 0Sc  -S:S (|0(0VY 01(  g|P 0\0`(|(@H0S<Q}P 0S HP p $0,0(0|p$P ]|0 |p$R|$P ]p$J|p00 SE+@`PB FLE$G<x @s5 8,vE@-p@\0SP8 @s|`P! X@T@T |/P P'}PP{P  e v|P0\00|`PBx0XX -QR eE" 0QP#3/@-0 R03/0C8@-$0@#S PP 080@ U 80@8|8 {c@- @{| {| {| {| {| {| p{| X{| @{| ({| {| {| {z| {s| {l| {{e| t{^| hm{W| Pf{P| 8_{I| X{B| Q{;| J{4| C{-| <{&| 5{| .{| x'{| ` { | H{| 0{{  {{ {{ z{ z{ z{ z{ z{ pz{ Xz{ @z{ (z{ z{ z{ z{ z@{ dhdddHeeee4fxffgPggg6E.0C;=8C6 V Q 45 Q  p Y4 0S 娀0S  P  L0S0L0Z:000 0Sw 40S6T0S P 6 ,ЍY  P  0 0"> PB  0R  R2  rP0SP0 P Q00SV krP|Sx30SA WW VP YrPU 8S 0ᶩ ,Ѝ[  0᫩ ,Ѝ nP4 9nPQ  jpPdQ @-P:PX@P 00  000   j 0 0 0`0  @ x1 03/P  ` 02oUTЍpWh0n0pbnP  mP pUX NnF@@@ 080 {<D@s5 8$,|\,O-,W4M $0S 4Ѝ(`V* @T @T 00S0mS mP' `p&m@Pb  0\ 㬐Un (|6@cx t: L6 0bnpP 4f44@P n 0 W 0S n]mP Y00@ 0S m@T4Ѝ 0R 00 0S 0 0P  p05L YP HRP $L0S 1n GPBmP w Qp0 Dm[ YW0S P 0$0$0 (0 PBn04[d  0 Y\ 0S1nm 0pn pjP mkm` @TT} F @TC xs `00Sy@To 00S`Y8mP #SRX0SnPl0(00dS05S0S  m GQO p/ 0pPp 'gPolP$`p 8 nP(0 `p   `p 0Sc  -S:S (l0(0VY 01(  MlP 0\0`(gl(@H0S<7mP 0S HP p $0,0(0lp$P Cl0 lp$8l$P ]p$0lp00 SE+@0CtFE$G<x @s5 8,vE@-p@\0SP8 @Yl`P! X@T@T k/P P mPPkP  e \lP0\00l`0Cx@-,,@0((  000@/ቫ#EgܺvT20@-@MP 0  P@ 0kЍ00-0Q00M0`0   V3*@8P 0 0) 8霊p @(@ 00@$@dJ )   " 8' p$p0 0 p'pd8gu"0  ,0DȟP' P@0%0P$ȟc:@! @ P$PHW #@ p" 'lŅ@% @ $ $@'霌,  (p!00cJ)+G 0)0O BP #, 7' $0 p!pd70guP"0P %40@W'P @0)0$8@c:!  P)P< W# +p pg%v"p ) ὂp+pp'00㛋,0 p)p p'PPe9p| P# P P%  bv` P' PP% -( 0i B Ѝ@/ЯG-@pT)@X# `P @@ h@PE@ %@U@@A0H#3@H H  h?@  ?X`PdQP1 h0@0@T0e?`  ?@  h@p@-M0DD@@`

0S` P< \ 0 00Qe`0  d!_ ` 0 B0 0_ _@ >aЍ < 4`\a 0$0 T`Ta 8 :P|0P P/ R//-LM sa0 !!#LЍ@BD0p@-`VpP@UPRQPJ@D053/t`Vp8x0p@- pPR@h  0`S 0 apf`P @0@ p0:8l6Q0  aB Q 00`BS /ooB  S0C !S0C !!S!1C "!S1C !S""!\`B/<`B/3//o b\3`B/P'Q @-@A/SRQPM`-Ѝ /SRQPM`-Ѝ /@-^A-@`p4#@P0@VP@A-`p@.A#HP0@VP@QO-MPp@pPp@S r0@X `\2?oS c5"c&X (p ")8 Q!*G* QG20k  )p Q!*`G*VG2 Ȍ\`?oS0fP8 c c7!5&s +   '8  Q P!*PJ* QPJ200l00x'x  Q !* J* Q J200kX&00*)8Q !* K*Q K20g  v )p   Q!*`G* VG2ȌZXVoYW UP3P## P!N*L 0i;; AB;D PF;M;;;G;;;; ;;;;;;;;H;;);;;HW;;;;;;;;;;;;;*;;;;;;;  n  ;I';O,9KKKKLL;;;   ;;;  ;;;;Ys &;;;V;UH;;;;;;;^;l;;;;;;;;;;;;;;v;;;;;o0;;?; ;;@z;Z;;;; cw  gss;;;;;;;;;0x;$;;;(;;w;;;;;;;;;+;;X;X;1;;c;;;;-;;;;;;A;;;;;U;;;;;;i;;;G;;;;;;;;;;;X;3;;;;;;9v##;;;#;;XX;;;;deprsu;;;R;XjXw##;#;##;;;;1;#;;;;;;;;;;;;;;#;;; ;;;;;;;;(;;(;;;(;"% !:; #$&'()*+,-./0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~KkIUt\$v%&'( : ;345A< A6789K PQRSTUVd]_6789;:Ko:; uk:k;f?B6789:u_%  k: !"#$%&'(k./%k:C%jkl%%%&'%'%\k^345k%< !"%A12FGHIJK%PQRSTUV%N%]_%%+'FGHIJo%% uo%%% !"67 67q d;%&' 67345}~;<A%%KPQRSTUV%:%%%]_E%% o%%%:u%%%%@%B%%%%e%%  M:;;%_f$%&' !"345B<AJOK%%PQRSTUVb]:_hij !"uou%&'%345<%fA\]$K;&PQRSTUV%:]%_%%g_;o%%u:%&'%:%%;%%%%345%%%%<%%A%%%:%K%%PQRSTUV% ]_$f)*+,-;o6789uB !"^`dhijS>u !"d./06=>?@BCDELMNOWXYZ[\abchij;$uB./0JO=>?@BCDEbLMNOhijWXYZ[\uabchiju !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !" !";BJO&bhij$u&B !"Belmnopqrstvwyz{elmnoprstvwyz{ !"% !" !" !" !" !"Se=\^ih{cdcdGzzz,`{{{zGHSz{{Rcdoz)I0]\\]{cdede @cdQRP$uxfgfmpqst-vwxyz}y67_evKLezfe)^{_`a^}9_fgRR[~fGR9]f[Y*R#$%wx jklR=zHF {ez!"#$%{:;<='z:;<{klmnopqrs8*+1V2klmnopqrs3L R T   pA56^85?.T>(QbMUViWjXYZkqai=l{n|~ !"#$%CD+E567 !"#$%8  /"#&(,3497;:?@BDERMINWUZ_efgnsy z{|}~z  !"#$%  rN567%>Pj !"#$%oJA !"#$%&'()*+,-./01234u567B8CD9+ !"#$%&':E()*+567,-./01823456789 !"#$%: !"#$% !"#$% !"#$% !"#$% !"#$% !"#$% !"#$% !"#$% !"#$% !"#$%- !"#$%. !"#$%/ !"#$%0 !"#$%1 !"#$%2 !"#$%K !"#$%] !"#$%c !"#$%d !"#$%h !"#$%r !"#$%u !"#$%& !"#$%A !"#$% !"#$%bGCD+GHE5678HI !"#$%IJKLMNOPQRSTUVWJXYZKLMNOPQRSTUVWXYZ !"#$% !"#$% !"#$% !"#$% !"#$% !"#$%; OI> < ZPSJKOPRoH=@F?BCDEAG.36`k_giZTgiLl>U6n(1/ !$%4&'* [NYZ>]` -87eUblahjMikj@=?LNQ\IJTmWc_bQKX+20,#"59\]XV*"*Vg^aSR):mjcYW* l12 CD[en$%&'(+- 03 GAdpfm),#lDMh^*EBfd !HD. F 8*srt9/q55vwx~q46u6:6zy{|7};<     ""')+0067<=>?@ABCDEFHJLOQSUWYX\_^bfgikmrux{~ 0=FQZenw{ $#)(/7?@DEIKPUV[]cegkmsv  "$+-/46*@B@HGNOPQRVWX\]bchinotv{~ --78<@DKOWZ^bfmquy~}}~ qllmsrwwwvnnn&&eeoptzzy{B$L%M%c%=%=%?%>@a%b%N%B$\%%0102D%E%k%k%k%.:;O%u% %6%7%8%6%7%6%6%7%6%7%7%6%%9%%%%%`d6%d%^%u%B$)*+,- h%i%j%C:;B$]_%W%X%X%Y%Z[%P% !"K%<R%Q%S%T%%o%&%&%3%4%5%A%'%U%V%u%]%_%ff%&%g%:;J:;b:;B$FGHIJ%%(%(%'%\:;/:;f%%    : ; :;:;:;:;:;:; "#&+-/249>BEJNSX]bgjmpuz}  !%,137:<@CDJKST[`cfglopxz|~   &)+,.02468:=>@BDFHJLNPRVZahoqrwyz~ "&*048=?AFKPUZ_dkry~  !$+69;<>ABCGHIJKW\]`abiklpvw{|x      ;;;;;;E;;;;;;;;;;n;;;!;;;;I;;;n;;;;;;;C<;~&;;;;;;;;\;;;;;;A;i6;;;;;;;;;;;;;;;;;(;;;;;;;;;;;;;;;;=;;;;;y;;;A| [4;+<F t>?O'X@ABC<OmG`vatwDJC!Ah EFbc  }~  ::  ./0=>?@BCDELMNOWXYZ[\abchiju&Belmnoprstvwyz{:   ::12%%:%%%%%%%%%%%%%%%%%&'345<AKPQRSTUV]_ouq;;Bk%%:%%%%%%%%%%%%%%%%%%% !":;;BJb;;%k$%%k;$:%(%FGHIJ%%f\f]$;%&$:%%%g_;'%;%:: )*+,-6789B^`du;%%%%%%%%6%;%67d67%%%:%%%%%f$;Stack now %dtoken %s (nterm %s (Deleting%s %P:%s: file format not recognized; treating as linker script %P%F:%S: %s in %s %P%F:%S: %s Starting parse Stack size increased to %lu Entering state %d Reading a token: Now at end of input. Next token isShiftingReducing stack by rule %d (line %lu): $%d = MRI style script%P%F: unrecognised keyword in MRI style script '%s' -?fill valueoriginlength*default*PT_GNU_STACK%X%P:%S: unknown phdr type `%s' (try integer literal) FILEHDRPHDRSFLAGS%X%P:%S: PHDRS syntax error at `%s' VERSION scriptgloballocalextern-> $$ =syntax errorError: discardingError: poppingmemory exhaustedCleanup: discarding lookaheadCleanup: poppingPT_GNU_EH_FRAMEPT_NULLPT_LOADPT_DYNAMICPT_INTERPPT_NOTEPT_SHLIBPT_PHDRPT_TLS$enderror$undefinedINTLNAME'='OREQANDEQRSHIFTEQLSHIFTEQDIVEQMULTEQMINUSEQPLUSEQ'?'':'ORORANDAND'|''^''&'NE'<''>'GELERSHIFTLSHIFT'+''-''*''/''%'UNARYEND'('ALIGN_KBLOCKBINDQUADSQUADLONGSHORTBYTESECTIONSINSERT_KAFTERBEFOREDATA_SEGMENT_ALIGNDATA_SEGMENT_RELRO_ENDDATA_SEGMENT_ENDSORT_BY_NAMESORT_BY_ALIGNMENTSORT_NONESORT_BY_INIT_PRIORITY'{''}'SIZEOF_HEADERSOUTPUT_FORMATFORCE_COMMON_ALLOCATIONOUTPUT_ARCHINHIBIT_COMMON_ALLOCATIONSEGMENT_STARTINCLUDEMEMORYREGION_ALIASLD_FEATURENOLOADDSECTCOPYINFOOVERLAYDEFINEDTARGET_KSEARCH_DIRMAPENTRYNEXTSIZEOFALIGNOFLOADADDRMAX_KMIN_KSTARTUPHLLSYSLIBFLOATNOFLOATNOCROSSREFSORIGINFILLLENGTHCREATE_OBJECT_SYMBOLSINPUTGROUPOUTPUTCONSTRUCTORSALIGNMODSUBALIGNPROVIDEPROVIDE_HIDDENAS_NEEDEDCHIPLISTSECTABSOLUTELOADNEWLINEENDWORDORDERNAMEWORDASSERT_KFORMATPUBLICDEFSYMENDBASEALIASTRUNCATERELINPUT_SCRIPTINPUT_MRI_SCRIPTINPUT_DEFSYMCASEEXTERNVERS_TAGVERS_IDENTIFIERGLOBALLOCALVERSIONKINPUT_VERSION_SCRIPTKEEPONLY_IF_ROONLY_IF_RWSPECIALINPUT_SECTION_FLAGSEXCLUDE_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_specsect_flag_listsect_flagsexclude_name_listfile_NAME_listinput_section_spec_no_keepinput_section_spec@12statement@13@14statement_liststatement_list_optfill_expfill_optassign_opendassignmentopt_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@17expmemspec_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@37version@38vers_nodesvers_nodeverdepvers_tagvers_defns@39@40opt_semicolon   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ &,+"#$%-.'(! vt*) &,+"#$%-.'(! *)$%vt "#$%-.(! { {{ \Gwu>?\G>?wu;5cnXoaC_i;5noC;5cnXoaC_iV74mA^MLzb`74mMV74mA^MLzb`@WB}U6/l2KH]I@}6l2H@WB}U6/l2KH]IB=Oydf~sY3=Oyp~s=Oydf~sY3<T|<|<T|NkNNk1qrJqr1qrJe[ee[Q0gQ0gZFFZFEDEDED:::hh888xxxPjPj999RRSS ZbbbbbbZZZZ/bbbbbbbbb    QC5E F F B F , = F F F * ) ( AF '     C@A  ^  F "F F 0  + DF 'F F   F &Wq5F F Y \F 5A;  ZSf F F  F F rT7   W=RyW    F F F F   A  F F F nB ] F F   F F F F F b1F F   F F F  F F R T      F F F F F F F F u)F F F JMy   " q t t     t 2 w $ x z (w k r ~ m ~ l l k L O T E  F B3xAn m q ` a _ p c k l j k V SB VA E 6 7 5 D 8 ? @ > ? , t a ` F F K G S P Q G E O O L = 6 M L C H 8 = C ; E B / ? 6 2 7 * 9 - 6 4 6 2 ) # $ ) %  + !    ) #     "  " #  !                by|tuw  z}zyzvvxwezmumvozsvfjYnrahjmhFBb_Zf_UIYRPT^MML^O\=RNPSHMI*&F?B=I;A76")  KUgB7Wf .5,GOCNR^cECeeyx}yw~##"!,1;(5>-9%6=9IN=LNEP6NSEUQM[YPY_`8FW^Zprwthwzqas~zeqry&v  "$$'&1##3%:!"45+2=B@JD"5AGC',)`aXYK]RaJ[Mk_hj^_~|nik}jh~uyz{yw ""'#$/&%31.$3+2(<06<:873CC;H:DE=<PGFT6ESKNQWaYeakopsopmXnqul|~`rx{y|xs       % $"."+!3(/%)-9'-;00=5;166?E::G?E;?0OB?J5BG8WJGRPXJ\L\V^PbRTZ`iR^Z`foXnd`qrhdkqmsnoqrF  ")0:DNX $  $))  ++--0-. 0.-/. / --120Q24.2481:H8:WQ:: %% 977;Y%[%9W7;mY^^H%``m" l >$}>>[l%n%>>>}>>%n%> w{&&cocqocqoc&'&q&ccdqdd{dwdd&&eeeeggeffgee()fggfff*M+Mtt.tttt.z,z./~~ : ?n? :~~hnh~~~b~~~b01//F~F~~Fy//OOy/23OOOOOO455656/6/57689/5566:OOOOOOZZ;\\<=>ZZZZZZ?Z7Z7Z\Z\7@ZD77EIJZZZZZZ<Z<ZLZ\Z\M<NZbbO<<PbbbbbbbT@b@UbYZbb@\]ba^c@@dbbbbbbAbAA_ebfiAjkbzz`AAVnVzzzzzzuVhuuoVVq^u_sutuhvwxyzzzzzzz{`V|}~''''''''''''''''''YY   YYYYYYYY !"#$%()*+YYYYYY,./Y0Y124578:<=>?@ABCDEGIJKLMNPRSTVXZ[]_`abcdefghijknopqrvwx|}~FFFFFFFFFFFFFFFFFFFFVVVVVVVVVVVVVVVVV    !)VVV*+,-./01234567892:;<>@ABCDEFGHJKLDMNOPQRSTUVWXYZS[\]_`abcdefhklmnpqrstuvwxy|}~      #$&'()*+,-./0123456789:;<=?@ABCDEGHIJLMNOPQRSTUVWYZ[\]^_`abdeghijkmnoqrstuvwxy{|~   }zwvutsrqponmlkjihgfedcba`_^\YXWVUTSRQPNMLKJIHGFEDCBA@?>=<;:98743210/.-,+*)(%$#"!    }|{xwvtsrqpomlkjigfeda`_^WUTSRQPONLKJIHGEDCB>=9"!     upkjih_UTNMLFEDC@?=<653*"  !"#$%&'()*+,-./012345#6789:;<=>?#@####A#B##C#########D##E##F####GHIJKLMNKOPQRSTUVWXYZ[\]^_`abcdefghijXklmnopXXqXXXXXXXrXsKXtgggggXXXXXXXXXXuXXXXvwxyKLMNKzPQRSTUV{|}~\]^_`a||||||r|sK||||||||||||||||||vwxKKKKKKKKKKK~KKKKKKKK # ` *KKKKKKKKKKKKKK~KKKKK ,1 +J-$KKHKK,1IL[MKKK)+GHI#*1<N<hROi=SP>T&&<U<1dm&Ze?$f&&nosptqg@<j<Ak<z<&{<<|&B&l&&&&&^}_C`wxa~ybc)*<<1&&&V1Z[\\H\\22AIB2]2?@;22]<22// _!j`k_^la"X''Y1''''''<<<<&&1&&&''''''..\\/0/0//1<22212O&P3}&&/0/0//<1<22212&355&&5657558<9<8:;&8&5<5<55<8<8&8YY&&<<YYYYYYP&Q2R2 && S T  YYYYYY223<<<<&&&&&& !#$%"&'()*+,-./0123456789:;<=>?@ABCDEFGHIKLMNOPQRSTUVWJXYZ[\]^_`abcdef''gijklm''''''hnopqrstuvwxyz{|''''''YYYYYYYY55~}YYYYYY55{{{{||||      !"#$%&'()*+,-./0123456789:=>?@ABC;DEFG<HIJKLMNOPQRSTUVWXYZ^_`a[b\cdef]ghiklmnopqjrstuvwxyz|}~{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&&&&&&XXXXXXX6666666~}|{zyxwvutsrqponmlkjihgfedcba]\[ZYXWVUTSRQNMLKJIHGFEDCBA>=<;:9876543210/.-,+*)('&%$#"!      ~zyxwvutsrqponmihgfedcb^]\WVUONMLKJGFEDC@?>=:9874210/.-,+('&%$#     ,4-*)%vurWQGFED4)(%"! yylex       %F%s: file not recognized: %E \%03o%P:%S: ignoring invalid character `%s'%s out of dynamic memory in yyensure_buffer_stack()out of dynamic memory in yy_create_buffer()fatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflow%F%P: read in flex scanner failed out of dynamic memory in yy_get_next_buffer()%F%P: EOF in comment ldlex.l in script in expressionfatal flex scanner internal error--no action foundout of dynamic memory in yy_scan_buffer()out of dynamic memory in yy_scan_bytes()bad buffer in yy_scan_bytes()%F:includes nested too deeply %F: macros nested too deeply aAA)bb @cc&Llddpdee*E48Tff`hFF`gGGh$HIX``'llLLm0<LMMX|nnNNoo&O(@H\hlqq(rr4iPRR&`ssSS  LttTđTT&h|&"uu$(\vTVpxxXX ,yy<YX`(())<p|LTt$8`p0L,HXt $ P `     !!D!L!`!h!!&!!!!!! "0"@"t"""" #(#D#\#x#####$0$H$x$$$$$$%\% d%%%%%%%,&4&l&x&&&&&X&'X$'P'h't'x'''''((,(<(h(|(((((())<)D)d)p))))))) *,**4*P**X*x**********+,++,,& ,@,X,,,,-<-X-x-&-----.(.P.\.....//L/d/////0040T000%P%F: invalid hex number `%s' , --shared--library=%s%P: unrecognized option '%s' %P%F: use the --help option for usage information default%P%F: unrecognized -a option `%s' definitionsnodefinitionsnosymbolicpure-text%P%F: unrecognized -assert option `%s' --defsym%F%P: unknown demangling style `%s' %P%F: invalid number `%s' Usage: %s [options] file... Options: %s-%s%s %s @FILERead options from FILE %s: supported targets:%s: supported emulations: %s: emulation specific options: Report bugs to %s ignore-allreport-allignore-in-object-files%P%F: bad --unresolved-symbols option: %s %P%F: bad -plugin-opt option %P%F: bad -rpath option %s%c%s%P%F: -shared not supported %P%F: -pie not supported descendingascending%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" .bss.data.text.text-segment.rodata-segmentP,%P%F: group ended before it began (--help for usage) %P%X: --hash-size needs a numeric argument %P%F: -r and -shared may not be used together %P%F: -F may not be used without -shared %P%F: -f may not be used without -shared %s-%cKEYWORDShared library control for HP/UX compatibilityARCHSet architectureTARGETSpecify target for following input filesmri-scriptRead MRI format linker scriptdcForce common symbols to be defineddpentrySet start addressexport-dynamicExport all dynamic symbolsno-export-dynamicUndo the effect of --export-dynamicEBLink big-endian objectsELLink little-endian objectsauxiliarySHLIBAuxiliary filter for shared object symbol tablefilterFilter for shared object symbol tableIgnoredgpsizeSIZESmall data size (if no size, same as --shared)sonameFILENAMESet internal name of shared librarydynamic-linkerPROGRAMSet PROGRAM as the dynamic linker to useLIBNAMESearch for library LIBNAMElibrary-pathDIRECTORYAdd DIRECTORY to library search pathsysroot=Override the default sysroot locationEMULATIONSet emulationprint-mapPrint map file on standard outputnmagicDo not page align dataomagicDo not page align data, do not make text readonlyno-omagicPage align data, make text readonlyoutputSet output file nameOptimize output filePLUGINLoad named pluginplugin-optARGSend arg to last-loaded pluginfltoIgnored for GCC LTO option compatibilityflto-partition=QyIgnored for SVR4 compatibilityemit-relocsGenerate relocations in final outputrelocatableGenerate relocatable outputjust-symbolsJust link symbols (if directory, same as --rpath)strip-allStrip all symbolsstrip-debugStrip debugging symbolsstrip-discardedStrip symbols in discarded sectionsno-strip-discardedDo not strip symbols in discarded sectionstraceTrace file opensRead linker scriptdefault-scriptRead default linker scriptdTSYMBOLStart with undefined reference to SYMBOLunique[=SECTION]Don't merge input [SECTION | orphan] sectionsUrBuild global constructor/destructor tablesPrint version informationPrint version and emulation informationdiscard-allDiscard all local symbolsdiscard-localsDiscard temporary local symbols (default)discard-noneDon't discard any local symbolstrace-symbolTrace mentions of SYMBOLPATHDefault search path for Solaris compatibilitystart-groupStart a groupend-groupEnd a groupaccept-unknown-input-archAccept input files whose architecture cannot be determinedno-accept-unknown-input-archReject input files whose architecture is unknownadd-neededno-add-neededas-neededOnly set DT_NEEDED for following dynamic libs if usedno-as-neededAlways set DT_NEEDED for dynamic libraries mentioned on the command lineassertIgnored for SunOS compatibilityBdynamicLink against shared librariesdycall_sharedBstaticDo not link against shared librariesdnnon_sharedstaticBsymbolicBind global references locallyBsymbolic-functionsBind global function references locallycheck-sectionsCheck section addresses for overlaps (default)no-check-sectionsDo not check section addresses for overlapscopy-dt-needed-entriesCopy DT_NEEDED links mentioned inside DSOs that followno-copy-dt-needed-entriesDo not copy DT_NEEDED links mentioned inside DSOs that followcrefOutput cross reference tabledefsymSYMBOL=EXPRESSIONDefine a symboldemangle[=STYLE]Demangle symbol names [using STYLE]embedded-relocsGenerate embedded relocsfatal-warningsTreat warnings as errorsno-fatal-warningsDo not treat warnings as errors (default)finiCall SYMBOL at unload-timeforce-exe-suffixForce generation of file with .exe suffixgc-sectionsRemove unused sections (on some targets)no-gc-sectionsDon't remove unused sections (default)print-gc-sectionsList removed unused sections on stderrno-print-gc-sectionsDo not list removed unused sectionshash-size=Set default hash table size close to helpPrint option helpinitCall SYMBOL at load-timeMapWrite a map fileno-define-commonDo not define Common storageno-demangleDo not demangle symbol namesno-keep-memoryUse less memory and more disk I/Ono-undefinedDo not allow unresolved references in object filesallow-shlib-undefinedAllow unresolved references in shared librariesno-allow-shlib-undefinedDo not allow unresolved references in shared libsallow-multiple-definitionAllow multiple definitionsno-undefined-versionDisallow undefined versiondefault-symverCreate default symbol versiondefault-imported-symverCreate default symbol version for imported symbolsno-warn-mismatchDon't warn about mismatched input filesno-warn-search-mismatchDon't warn on finding an incompatible libraryno-whole-archiveTurn off --whole-archivenoinhibit-execCreate an output file even if errors occurnoinhibit_execnostdlibOnly use library directories specified on the command lineoformatSpecify target of output fileprint-output-formatPrint default output formatqmagicIgnored for Linux compatibilityreduce-memory-overheadsReduce memory overheads, possibly taking much longerrelaxReduce code size by using target specific optimizationsno-relaxDo not use relaxation techniques to reduce code sizeretain-symbols-fileKeep only symbols listed in FILErpathSet runtime shared library search pathrpath-linkSet link time shared library search pathCreate a shared libraryBshareablepieCreate a position independent executablepic-executablesort-common[=ascending|descending]Sort common symbols by alignment [in specified order]sort_commonsort-sectionname|alignmentSort sections by name or maximum alignmentspare-dynamic-tagsCOUNTHow many tags to reserve in .dynamic sectionsplit-by-file[=SIZE]Split output sections every SIZE octetssplit-by-reloc[=COUNT]Split output sections every COUNT relocsstatsPrint memory usage statisticstarget-helpDisplay target specific optionstask-linkDo task level linkingtraditional-formatUse same format as native linkersection-startSECTION=ADDRESSSet address of named sectionTbssSet address of .bss sectionTdataSet address of .data sectionTtextSet address of .text sectionTtext-segmentSet address of text segmentTrodata-segmentSet address of rodata segmentunresolved-symbols=How to handle unresolved symbols. is: ignore-all, report-all, ignore-in-object-files, ignore-in-shared-libs[=NUMBER]Output lots of information during linkdll-verboseversion-scriptRead version information scriptversion-exports-sectionTake export symbols list from .exports, using SYMBOL as the version.dynamic-list-dataAdd data symbols to dynamic listdynamic-list-cpp-newUse C++ operator new/delete dynamic listdynamic-list-cpp-typeinfoUse C++ typeinfo dynamic listdynamic-listRead dynamic listwarn-commonWarn about duplicate common symbolswarn-constructorsWarn if global constructors/destructors are seenwarn-multiple-gpWarn if the multiple GP values are usedwarn-onceWarn only once per undefined symbolwarn-section-alignWarn if start of section changes due to alignmentwarn-shared-textrelWarn if shared object has DT_TEXTRELwarn-alternate-emWarn if an object has alternate ELF machine codewarn-unresolved-symbolsReport unresolved symbols as warningserror-unresolved-symbolsReport unresolved symbols as errorswhole-archiveInclude all objects from following archiveswrapUse wrapper functions for SYMBOLno-poison-system-directoriesDo not warn for -L options using system directorieserror-poison-system-directoriesGive an error for -L options using system directorieslang_do_assignments_1print_data_statementcompare_sectionpush_stat_ptrpop_stat_ptrlang_size_sections_1load_symbols/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/ldlang.c%P%F: bfd_hash_allocate failed creating symbol %s .init.fini%F%P: invalid data statement %F%P: invalid reloc statement %P%F: bfd_link_hash_lookup failed: %E biglittle%X%P: address 0x%v of %B section `%s' is not within region `%s' %X%P: %B section `%s' will not fit in region `%s' 0x%V %T 0x%V %W %B %W (size before relaxing) Fail with %d SORT (CONSTRUCTORS) CONSTRUCTORS SORT(EXCLUDE_FILE(%s) Address of section %s set to CREATE_OBJECT_SYMBOLS FILL mask 0x%02x0x%V %W %s 0x%v0x%V %W RELOC %s %s+ *fill*0x%V %W %s0x%V %W load address 0x%V0x%V[0x%V][unresolved]*undef* TARGET(%s) OUTPUT(%sLOAD %s START GROUP END GROUP INSERT %s %s elf32-bigelf64-bigelf32-littleelf64-little/DISCARD/%P%F: Could not define common symbol `%T': %E Allocating common symbols Common symbol size file 0x%lx%016llx.init_array..fini_array..ctors..dtors.-l%P:%S: warning: redeclaration of memory region `%s' %P:%S: warning: memory region `%s' not declared %F%S: non constant or forward reference address expression for section %s %P%X: Internal error on COFF shared library section %s %P%F: error: no memory region specified for loadable section `%s' %P: warning: no memory region specified for loadable section `%s' %P: warning: changing start of section %s by %lu bytes load base%P: warning: dot moved backwards before `%s' %P%F: can't relax section: %E %X%P:%S: section has both a load address and a load region %F%P:%S: error: alias for default memory region %F%P:%S: error: redefinition of memory region alias `%s' %F%P:%S: error: memory region `%s' for alias `%s' does not exist %P%F: failed creating section `%s': %E %P%F: can not create hash table: %E *ABS*%P%F: Illegal use of `%s' section %P%F: output format %s cannot represent section called %s Memory Configuration NameOriginLengthAttributes%-16s %-18s %-18s %s Discarded input sections Linker script and memory map %-16s 0x%s !%P: warning: could not find any targets that match endianness requirement %P%F: target %s not found %P%F: cannot open output file %s: %E %P%F:%s: can not make object file: %E %P%F:%s: can not set architecture: %E %P%F: bfd_hash_lookup failed creating symbol %s %P%F: invalid syntax in flags %B: file not recognized: %E %B: matching formats:%F %F%B: file not recognized: %E %I %F%B: member %B in archive is not an object --whole-archive%F%B: could not read symbols: %E COMMON%P: warning: %s contains output sections; did you forget -T? %Fsubsection alignmentsection alignment%P%F: multiple STARTUP files __stop_%s__start_%sprogram header type%X%P:%S: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them __load_start_%s__load_stop_%sCC++Java%X%P: unknown language `%s' in version information %X%P: anonymous version tag cannot be combined with other version tags %X%P: duplicate version tag `%s' %X%P: duplicate expression `%s' in version information %P%F: Failed to create hash table %P%F: %s: plugin reported error after all symbols read %P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported %P%X: %s architecture of input file `%B' is incompatible with %s output %P%X: failed to merge target specific data of file %B .exports%X%P: unable to read .exports section contents phdr flagsphdr load address%F%P: bfd_record_phdr failed: %E NONE%X%P: section `%s' assigned to non-existent phdr `%s' .startof.%s.sizeof.%s%X%P: section %s loaded at [%V,%V] overlaps section %s loaded at [%V,%V] %X%P: region `%s' overflowed by %ld bytes %P%F: gc-sections requires either an entry or an undefined symbol %P%F:%s: can't set start address %P%F: can't set start address %P: warning: cannot find entry symbol %s; defaulting to %V %P: warning: cannot find entry symbol %s; not setting start address %F%P: %s not found for insert %F%P: no sections assigned to phdrs %X%P: unable to find version dependency `%s' typeinfo name for*typeinfo for*operator new*operator delete*SANE_EXPR%X%P: unknown feature `%s' mri_alias%d/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/mri.csrecIEEEieeeCOFFcoff-m68k%P%F: unknown format type %s GLOBAL_%P%X: Different relocs used in set %s %P%X: Different object file formats composing set %s %P%X: %s does not support reloc %s for set %s %P%X: Unsupported size %d for set %s Set Symbol %T %G reloc_overflowmultiple_definition%X%H: reloc refers to symbol `%T' which is not being output %X%H: dangerous relocation: %s %B: reference to %s %B: definition of %s %F%P: bfd_hash_table_init failed: %E %F%P: bfd_hash_lookup failed: %E %X%C: undefined reference to `%T' %C: warning: undefined reference to `%T' %X%D: more undefined references to `%T' follow %D: warning: more undefined references to `%T' follow %X%X%B: undefined reference to `%T' %B: warning: undefined reference to `%T' %X%B: more undefined references to `%T' follow %B: warning: more undefined references to `%T' follow Archive member included because of file (symbol) %s(%s)%B (%T) (%s) %X%H: additional relocation overflows omitted from the output relocation truncated to fit: %s against undefined symbol `%T' relocation truncated to fit: %s against symbol `%T' defined in %A section in %B/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/ldmain.c relocation truncated to fit: %s against `%T'+%v%X%C: multiple definition of `%T' %D: first defined here %P: Disabling relaxation: it will not work with multiple definitions using multiple gp valueswarning: %C: %s%s %P: %s%s %B: %s%s %B%F: could not read symbols: %E %B%F: could not read relocs: %E %P: warning: global constructor %s used %P%F: BFD backend error: BFD_RELOC_CTOR unsupported __CTOR_LIST____DTOR_LIST__%B: warning: definition of `%T' overriding common %B: warning: common is here %B: warning: common of `%T' overridden by definition %B: warning: defined here %B: warning: common of `%T' overridden by larger common %B: warning: larger common is here %B: warning: common of `%T' overriding smaller common %B: warning: smaller common is here %B: warning: multiple common of `%T' %B: warning: previous common is here armelf_linux_eabild/usr/share/locale--sysroot=arm-poky-linux-gnueabi%X%P: can't set BFD default target to `%s': %E COLLECT_NO_DEMANGLE_init_finiLDEMULATION-m%P%F: missing argument to -m -mips1-mips2-mips3-mips4-mips5-mips32-mips32r2-mips64-mips64r2-m486built in linker scriptusing external linker script:using internal linker script: ================================================== %P%F: no input files %P: mode %s %P%F: cannot open map file %s: %E %P: link errors found, deleting executable `%s' %F%B: final close failed: %E .exe.dll%X%P: unable to open for source of copy `%s' %X%P: unable to open for destination of copy `%s' %P: Error writing file `%s' %P: Error closing file `%s' %s: total time in link: %ld.%06ld %s: data size %ld %P%F: bfd_hash_table_init failed: %E %P%F: bfd_hash_lookup failed: %E %X%P: error: duplicate retain-symbols-file %X%P: %s: %E %P%F: bfd_hash_lookup for insertion failed: %E %P: `-retain-symbols-file' overrides `-s' and `-S' a.outbuild_link_order/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/ldwrite.c%P%F: bfd_new_link_order failed .stab$GDB_STRINGS$$GDB_SYMBOLS$%F%P: cannot create split section name for %s %F%P: clone section failed: %E %F%P: final link failed: %E  W W W WWWWW XXX XXXXX Xē̓ԓܓ+2:`; <t=>?A@BC~^D(XE,Xd0Xk($ % &8LN0%X%P: %s /srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/ldexp.c%P: warning: address of `%s' isn't multiple of maximum page size %F%S %% by zero %F%S / by zero %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 SECTIONS %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 MAXPAGESIZECOMMONPAGESIZE%F%S: unknown constant `%s' referenced in expression NULL TREE 0x%v%B:%s+0x%vPROVIDE (%s, ("", ASSERT (, %s) (%s)%F%S: nonconstant expression for %s +=-=*=/=<<=>>=&=|=||&&==!=<=>=<<>>ALIGNMAXMINASSERTGNUTARGET%S SYSLIB ignored %S HLL ignored %P: unrecognised emulation mode: %s Supported emulations: no emulation specific options. %s: GNU ld %s (GNU Binutils) 2.23.2Copyright 2012 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. Supported emulations: %s 0x%sno symbol[%s]%s generated(%s)%s:%u%s+0x%v (type %s)%B: In function `%T': %s:%T%u%s(%A+0x%v)%p%u%ld%lu%%%c%F%P: internal error %s %d %P: internal error: aborting at %s line %d in %s %P: internal error: aborting at %s line %d %P%F: please report this bug /ldscriptscannot find script file %s opened script file %s /usr/bin/usr/lib/usr/arm-poky-linux-gnueabi/bin%P%F: cannot open linker script file %s: %E attempt to open %s failed attempt to open %s succeeded %F%P: invalid BFD target `%s' %P: skipping incompatible %s when searching for %s %F%P: attempted static link of dynamic object `%s' %P: cannot find %s (%s): %E %P: cannot find %s: %E lib.a%P: cannot find %s inside %s %P: cannot find %s %P%F: cannot represent machine `%s' /srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/ldcref.c%P: symbol `%T' missing from main hash table %X%C: prohibited cross reference from %s to `%T' in %s %X%P: bfd_hash_table_init of cref table failed: %E %X%P: cref_hash_lookup failed: %E %X%P: cref alloc failed: %E Cross Reference Table SymbolFile No symbols   /srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-arm/build/build/tmp/work/armv5te-poky-linux-gnueabi/binutils/2.23.2-r4/binutils-2.23.2/ld/plugin.c@.gnu.linkonce.t.%P%F: unknown ELF symbol visibility: %d! %P%F: %s: non-ELF symbol in ELF BFD! %P%F: %P%X: %P%F: %s: plugin symbol table corrupt (sym type %d) %P: %B: symbol `%s' definition: %d, visibility: %d, resolution: %d %P%F: %s: error loading plugin: %s (symbol from plugin)could not create dummy IR bfd: %F%E onload_onload%P%F: %s: plugin error: %d %P%F: %s: plugin reported error claiming file %P: %s: error in plugin cleanup: %d (ignored) P p$-0.4/@0L1T2`7x345689:;<=(>read_hexgldarmelf_linux_eabi_write_build_id_section%P%F: --just-symbols may not be used on DSO: %B --audit=AUDITLIB Specify a library to use for auditing -Bgroup Selects group name lookup rules for DSO --build-id[=STYLE] Generate build ID note -P AUDITLIB, --depaudit=AUDITLIB Specify a library to use for auditing dependencies --disable-new-dtags Disable new dynamic tags --enable-new-dtags Enable new dynamic tags --eh-frame-hdr Create .eh_frame_hdr section --exclude-libs=LIBS Make all symbols in LIBS hidden --hash-style=STYLE Set hash style to sysv, gnu or both -z combreloc Merge dynamic relocs into one section and sort -z common-page-size=SIZE Set common page size to SIZE -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 max-page-size=SIZE Set maximum page size to SIZE -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 --thumb-entry= Set the entry point to be Thumb symbol --be8 Output BE8 format image --target1-rel Interpret R_ARM_TARGET1 as R_ARM_REL32 --target1-abs Interpret R_ARM_TARGET1 as R_ARM_ABS32 --target2= Specify definition of R_ARM_TARGET2 --fix-v4bx Rewrite BX rn as MOV pc, rn for ARMv4 --fix-v4bx-interworking Rewrite BX rn branch to ARMv4 interworking veneer --use-blx Enable use of BLX instructions --vfp11-denorm-fix Specify how to fix VFP11 denorm erratum --no-enum-size-warning Don't warn about objects with incompatible enum sizes --no-wchar-size-warning Don't warn about objects with incompatible wchar_t sizes --pic-veneer Always generate PIC interworking veneers --stub-group-size=N Maximum size of a group of input sections that can be handled by one stub section. A negative value locates all stubs after their branches (with a group size of -N), while a positive value allows two groups of input sections, one before, and one after each stub section. Values of +/-1 indicate the linker should choose suitable defaults. --[no-]fix-cortex-a8 Disable/enable Cortex-A8 Thumb-2 branch erratum fix --no-merge-exidx-entries Disable merging exidx entries --[no-]fix-arm1176 Disable/enable ARM1176 BLX immediate erratum fix sha1sysvboth%P%F: invalid hash style `%s' defsmuldefsmax-page-size=%P%F: invalid maxium page size `%s' common-page-size=%P%F: invalid common page size `%s' execstacknoexecstackinitfirstinterposeloadfltrnodefaultlibnodeletenodlopennodumplazycombrelocnocombrelocnocopyrelocrelronorelrotextnotexttextoff%P: warning: -z %s ignored. scalarvectorUnrecognized VFP11 fix type '%s'. pz:P:earmelf_linux_eabi.c%F%X%P: error: Cannot change output format whilst linking ARM binaries. linker stubs%X%P: can not create BFD %E %X%P: can not build stubs: %E %P: warning: '--thumb-entry %s' is overriding '-e %s' %P: warning: cannot find thumb start symbol %s %P%F: failed to record assignment to %s: %E Errors encountered processing file %s__ehdr_startLD_RUN_PATH%P%F: failed to set dynamic section sizes: %E .gnu.warning%F%B: Can't read contents of section .gnu.warning: %E %X%P: can not make stub section: %E %F%P: map sections to segments failed: %E %P%F: looping in map_segments%X%P: could not compute sections lists for stub generation: %E %X%P: cannot size stub section: %E include%F%P:%B: bfd_elf_get_bfd_needed_list failed: %E libc.so%F%P:%B: bfd_stat failed: %E found %s at %s %P:%B: bfd_stat failed: %E .so.%P: warning: %s, needed by %B, may conflict with %s /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.iplt) } .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.iplt) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.iplt) } .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.iplt) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { *(.rel.iplt) } .rela.iplt : { *(.rela.iplt) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.iplt 0 : { *(.rel.iplt) } .rela.iplt 0 : { *(.rela.iplt) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .ARM.extab 0 : { *(.ARM.extab) } .ARM.exidx 0 : { *(.ARM.exidx) } .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .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. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } } /* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.iplt 0 : { *(.rel.iplt) } .rela.iplt 0 : { *(.rela.iplt) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .ARM.extab 0 : { *(.ARM.extab) } .ARM.exidx 0 : { *(.ARM.exidx) } .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .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. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /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-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } .rela.dyn.rel.dyn.rel.gnu.warning..note.plt%s/lib%s%s.so%P: warning: .note.gnu.build-id section discarded, --build-id ignored. GNUuuid/dev/urandom%P: warning: unrecognized --build-id style ignored. .note.gnu.build-id%P: warning: Cannot create .note.gnu.build-id section, --build-id ignored. .eh_frame.eh_frame_hdr%P: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored. %s needed by %B LD_LIBRARY_PATH/usr/etc/ld.so.conf%s/%s%P: warning: %s, needed by %B, not found (try using -rpath or -rpath-link) .rodata.interp.sdata.commentauditBgroupbuild-iddepauditdisable-new-dtagsenable-new-dtagseh-frame-hdrexclude-libshash-styleno-pipeline-knowledgethumb-entrybe8target1-reltarget1-abstarget2fix-v4bxfix-v4bx-interworkinguse-blxvfp11-denorm-fixno-enum-size-warningpic-veneerstub-group-sizeno-wchar-size-warningfix-cortex-a8no-fix-cortex-a8no-merge-exidx-entriesfix-arm1176no-fix-arm1176elf32-littlearmgot-relP p$-0.4/@0L1T2`7x345689:;<=(>read_hexgldarmelfb_linux_eabi_write_build_id_sectionearmelfb_linux_eabi.c/* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.iplt) } .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.iplt) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for --shared -z combreloc: shared library, combine & sort relocs */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.iplt) } .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.iplt) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { *(.rel.iplt) } .rela.iplt : { *(.rela.iplt) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { KEEP (*(.preinit_array)) } .init_array : { KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) } .fini_array : { KEEP (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.iplt 0 : { *(.rel.iplt) } .rela.iplt 0 : { *(.rela.iplt) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .ARM.extab 0 : { *(.ARM.extab) } .ARM.exidx 0 : { *(.ARM.exidx) } .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .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. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } } /* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) /* 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) } .rela.init 0 : { *(.rela.init) } .rel.text 0 : { *(.rel.text) } .rela.text 0 : { *(.rela.text) } .rel.fini 0 : { *(.rel.fini) } .rela.fini 0 : { *(.rela.fini) } .rel.rodata 0 : { *(.rel.rodata) } .rela.rodata 0 : { *(.rela.rodata) } .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) } .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) } .rel.data 0 : { *(.rel.data) } .rela.data 0 : { *(.rela.data) } .rel.tdata 0 : { *(.rel.tdata) } .rela.tdata 0 : { *(.rela.tdata) } .rel.tbss 0 : { *(.rel.tbss) } .rela.tbss 0 : { *(.rela.tbss) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } .rel.got 0 : { *(.rel.got) } .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.iplt 0 : { *(.rel.iplt) } .rela.iplt 0 : { *(.rela.iplt) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } .init 0 : { KEEP (*(SORT_NONE(.init))) } .plt 0 : { *(.plt) } .iplt 0 : { *(.iplt) } .text 0 : { *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } .fini 0 : { KEEP (*(SORT_NONE(.fini))) } .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } .ARM.extab 0 : { *(.ARM.extab) } .ARM.exidx 0 : { *(.ARM.exidx) } .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ /* Exception handling */ .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata 0 : { *(.tdata) } .tbss 0 : { *(.tbss) } .preinit_array 0 : { KEEP (*(.preinit_array)) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } .got 0 : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .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. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } } /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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", 0x00008000)); . = SEGMENT_START("text-segment", 0x00008000) + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.init : { *(.rel.init) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /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-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } . = DATA_SEGMENT_RELRO_END (0, .); .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); PROVIDE_HIDDEN (__rela_iplt_end = .); } .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.*) PROVIDE_HIDDEN (__rel_iplt_start = .); PROVIDE_HIDDEN (__rel_iplt_end = .); PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } /* Script for ld -pie: link position independent executable */ OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) 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) } .rela.init : { *(.rela.init) } .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rel.fini : { *(.rel.fini) } .rela.fini : { *(.rela.fini) } .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rel.data.rel.ro : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) } .rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) } .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.iplt : { PROVIDE_HIDDEN (__rel_iplt_start = .); *(.rel.iplt) PROVIDE_HIDDEN (__rel_iplt_end = .); } .rela.iplt : { PROVIDE_HIDDEN (__rela_iplt_start = .); *(.rela.iplt) PROVIDE_HIDDEN (__rela_iplt_end = .); } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(SORT_NONE(.init))) } .plt : { *(.plt) } .iplt : { *(.iplt) } .text : { *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) } .fini : { KEEP (*(SORT_NONE(.fini))) } PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); .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.*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = 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.*) } .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { 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 (*(SORT(.fini_array.*))) KEEP (*(.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 .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } . = DATA_SEGMENT_RELRO_END (0, .); .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); . = .; __bss_start = .; __bss_start__ = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even 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); } _bss_end__ = . ; __bss_end__ = . ; . = ALIGN(32 / 8); . = ALIGN(32 / 8); __end__ = . ; _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.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) } /* DWARF Extension. */ .debug_macro 0 : { *(.debug_macro) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } } armelfb_linux_eabielf32-bigarm%s: error: too many @-files encountered out of memory D2 Z x C00od  1pxo0ooPoodoo\0(V!H@FF<:FHFqHԕFFFFF D!HqF<HYFF}F`$F.HH F%HH(FIFMFxFFa!HtAF7FF|!H<HFHsFFXF@k!H|FAFFD}FpFAFHtFHH4]!H@!H,h!H#FD HFF4HA!H-H(F>!HPF F4!H,pFF-HFp;FGHhi!HT!HqFsF|9FhyFvFLHH(F|F,Fp&H̏FȃF\D!H -HHFFܤFHFXFKFIF$vFF$H:FlFĶ%HuFwFzFHFH@F`%F HpH~F,~FvFF5$HxFF HH=FTF&HyFHFHF\;Fp}FX!FkFFqFwFH[FqF%H%HHK!HثH\[F%HPFF-HlwFAF@F?@@@)'P  hH |DUUxVd67$G^A BHl+#+t+|#@LHpH(GȼԢGG,L8<ܘTpHl+#+t+|#@LHpH(G0<GG\D  \DCBBBBQ00000000000000000000000000000000-H -H@-H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8nF8;(F;@nF<HF<0nF<hF=HnF=FH>libbfd-2.23.2.so_ITM_deregisterTMCloneTable__gmon_start___Jv_RegisterClasses_ITM_registerTMCloneTablebfd_initlibiberty_concat_ptrbfd_elf_get_bfd_needed_listbfd_getb32bfd_make_writablebfd_elf_discard_infobfd_hash_table_init_nbfd_get_next_section_by_namexmalloc_set_program_namebfd_putl32bfd_elf32_arm_vfp11_erratum_scanbfd_get_reloc_upper_boundbfd_set_assert_handlerbfd_target_listbfd_getb64bfd_use_reserved_idbfd_close_all_done_bfd_elf_tls_setupbfd_elf_set_dyn_lib_clasself32_arm_setup_section_listsbfd_putl64bfd_hash_newfuncbfd_elf32_arm_get_bfd_for_interworkingbfd_make_section_anywaybfd_get_section_contentscplus_demangle_name_to_stylestd_sectionbfd_elf_get_dyn_lib_clasself32_arm_size_stubsxstrdupbfd_get_machbfd_scan_archbfd_hash_set_default_sizefilename_ncmpbfd_check_formatbfd_elf_get_needed_listbfd_hash_traverseconcat_lengthobjalloc_free_blockxexitbfd_link_hash_traverselbasenamexmallocbfd_arch_get_compatiblebfd_seekbfd_arch_mach_octets_per_bytebfd_get_unique_section_namemake_relative_prefixbfd_get_reloc_code_namebfd_elf32_arm_set_target_relocsbfd_elf32_arm_set_byteswap_codebfd_octets_per_byteconcat_copy2bfd_createbfd_make_section_with_flagsbfd_scan_vmabfd_hide_sym_by_versionbfd_set_errorbfd_get_errorbfd_elf_set_dt_needed_namebfd_set_error_handlerunlink_if_ordinarycurrent_demangling_stylebfd_elf32_arm_init_mapshtab_createbfd_elf32_arm_process_before_allocationbfd_statbfd_elf32_arm_set_cortex_a8_fixbfd_elf32_arm_add_glue_sections_to_bfd_sch_tolowerbfd_hash_lookupbfd_make_section_anyway_with_flagslrealpathbfd_canonicalize_relocbfd_elf_get_runpath_listbfd_openr_next_archived_filexcallocbfd_elf32_arm_vfp11_fix_veneer_locationsbfd_map_over_sectionsbfd_link_hash_lookupbfd_hash_table_initbfd_hash_table_freebfd_record_phdrbfd_link_add_undefbfd_printable_namebfd_set_arch_infobfd_emul_set_commonpagesizefilename_cmpbfd_new_link_orderbfd_wrapped_link_hash_lookupbfd_elf_size_dynamic_sectionsbfd_get_reloc_sizebfd_elf32_arm_allocate_interworking_sectionsbfd_emul_set_maxpagesize_bfd_elf_match_sections_by_typebfd_bwritebfd_errmsgbfd_elf_get_dt_sonamecplus_demangle_set_stylebfd_get_arch_info_finibfd_make_readablebfd_generic_link_read_symbolsbfd_reloc_type_lookupbfd_set_formathtab_findbfd_get_section_by_name_ifbfd_set_error_program_namebfd_set_gp_size_bfd_fix_excluded_sec_symsbfd_elf_size_dynsym_hash_dynstrhtab_find_slotbfd_coff_get_comdat_sectionconcatbfd_search_for_targetbfd_check_format_matcheself32_arm_next_input_sectionbfd_elf32_arm_set_vfp11_fixbfd_closebfd_set_default_targetelf32_arm_build_stubsbfd_section_already_linked_table_initbfd_cache_close_all_bfd_elf_map_sections_to_segmentsbfd_section_already_linked_table_freehtab_hash_string_bfd_abortbfd_emul_get_commonpagesizebfd_get_gp_sizebfd_set_start_addressbfd_demanglebfd_hash_allocatebfd_get_section_by_namebfd_elf_record_link_assignmentbfd_get_archbfd_getb16xreallocbfd_emul_get_maxpagesizebfd_set_symtabbfd_openr_sch_istablebfd_openwelf32_arm_fix_exidx_coveragebfd_putl16_xexit_cleanuplibdl.so.2dlsymdlerrordlclosedlopenlibc.so.6globfree64fflushstrcpy__rawmemchrfnmatchsprintf_IO_putcsetlocalestrncmpoptindstrrchr__strdupdcgettextglob64ftellputcharstdinsbrkrewindstrtolisattyfeoffgetsstrlenmemsetstrstr__errno_locationfseekmemcmpstdoutfputcgetrusagefputsmemcpyfclosestrtoulstrcasecmpraise__xstat64getenvoptargstderr_obstack_newchunkgetopt_longfilenofwritefreadlseek64strchrobstack_freefprintfqsortmemmovefopen64_obstack_beginbindtextdomain_IO_getcopterrstrcmp__libc_start_mainferrorstpcpygetopt_long_only__environ_edata__bss_start__bss_start____bss_end____end___endGLIBC_2.4libz.so.1/lib/ld-linux.so.3A*aeabi 5TE arm-poky-linux-gnueabi-ld1ELF(4X94 (p044444400000t000HHHDDQtd 44HH !hh$4o >  FNoPP*[o00,@j pp,xs , |xx3 w3 pp=C C lmp0 00000000011X448 8p 8+78 W8.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.ARM.exidx.eh_frame.init_array.fini_array.jcr.dynamic.got.data.bss.ARM.attributes.gnu_debuglink.dynbss.gnu.liblist.gnu.conflict.gnu.prelink_undo TThh !$4o >  od\ NoPP*[o00,@j pp,xs , |xx3 w3 pp=C C lmp000000000011X4488Td>d>Fdd>pMM+xM #MlS5