From c524f5829050c94d5bc286e8a7994b7be0ce2de9 Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Wed, 6 Oct 2021 22:47:39 +0200 Subject: [PATCH] Toolchain: Introduce stubs for core system libraries This allows the linker to link against these dynamic libraries when compiling libc++/libunwind, without having to do a separate bootstrapping LibC build. Without this change, libc++ would fail to pick up the need to link to `LibPthread` if no prior builds of it existed. Because of this, we'd immediately have an assertion failure in SystemServer, as mutexes are used for the safe construction of function-local static variables. --- Toolchain/Stubs/README.md | 21 +++++++++++++++++++++ Toolchain/Stubs/i686clang/libc.so | Bin 0 -> 67712 bytes Toolchain/Stubs/i686clang/libdl.so | Bin 0 -> 996 bytes Toolchain/Stubs/i686clang/libm.so | Bin 0 -> 4852 bytes Toolchain/Stubs/i686clang/libpthread.so | Bin 0 -> 4952 bytes Toolchain/Stubs/x86_64clang/libc.so | Bin 0 -> 80216 bytes Toolchain/Stubs/x86_64clang/libdl.so | Bin 0 -> 1384 bytes Toolchain/Stubs/x86_64clang/libm.so | Bin 0 -> 6520 bytes Toolchain/Stubs/x86_64clang/libpthread.so | Bin 0 -> 6160 bytes 9 files changed, 21 insertions(+) create mode 100644 Toolchain/Stubs/README.md create mode 100644 Toolchain/Stubs/i686clang/libc.so create mode 100644 Toolchain/Stubs/i686clang/libdl.so create mode 100644 Toolchain/Stubs/i686clang/libm.so create mode 100644 Toolchain/Stubs/i686clang/libpthread.so create mode 100644 Toolchain/Stubs/x86_64clang/libc.so create mode 100644 Toolchain/Stubs/x86_64clang/libdl.so create mode 100644 Toolchain/Stubs/x86_64clang/libm.so create mode 100644 Toolchain/Stubs/x86_64clang/libpthread.so diff --git a/Toolchain/Stubs/README.md b/Toolchain/Stubs/README.md new file mode 100644 index 0000000000..c5bfe89a57 --- /dev/null +++ b/Toolchain/Stubs/README.md @@ -0,0 +1,21 @@ +# Library stubs + +This directory contains stubs for SerenityOS libraries (LibC, LibM, LibDl, LibPthread) +that are referenced from the LLVM runtime libraries. These are needed by the linker +in order to add the required `DT_NEEDED` entries. + +## Do these need to be updated? + +Generally, no. LLVM does not use the header files to decide which functionality it can +use. After adding a new function to a header, you don't have to worry about LLVM +toolchain builds failing because the symbol is not present in the stubs. + +## How to generate these? + +First, you need to have a working SerenityOS installation that's been built by the +Clang toolchain. Then, using the `llvm-ifs` tool, these libraries need to be converted +into a stripped-down stub form. To do that, run the following command: + +```sh +Toolchain/Local/clang/bin/llvm-ifs --output-format=ELF --output= +``` diff --git a/Toolchain/Stubs/i686clang/libc.so b/Toolchain/Stubs/i686clang/libc.so new file mode 100644 index 0000000000000000000000000000000000000000..99d7659f48acbff286feb9423704d1bc85a45a63 GIT binary patch literal 67712 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 literal 0 HcmV?d00001 diff --git a/Toolchain/Stubs/i686clang/libdl.so b/Toolchain/Stubs/i686clang/libdl.so new file mode 100644 index 0000000000000000000000000000000000000000..ab3b2af601d2fa2071ab3b9fd38d694b2dd17306 GIT binary patch literal 996 zcmb<-^>JflWMqH=W(H;k1doA1h8ZGb!l1ywz@Wjv%D@5Vm!uZOrxhjUrp9OHrR6ik$72^w$;mHB%>!FjT$#%dA75OOn4BG-oRJ-$ zmYA8t5TBNrm&p(xpIng$VkYKfR;7YfC+FlBr!u4!rGmH!P3fhHMJY%gD@rXX%1kXw zO<{(&jTBsnga4gXJflWMqH=W(H;k1doA1M+hQg!l1ywz@Wjv%D@56w%!4pXy#D{qi zWUL?qBZDD`0W|_-UJ;ZHqCos9AO;kJ^#4LLZ!;RdfElWofq?;}{u!EkqR{yN5X!;o zEztDuL^Hn}P5v#Kc?;3_5@`I_NZ|)^-z_xr($MS+LzCZ+CSQjp{{_vy{b>9OH2>a0 zGtUZ5{RK3B7Mgvh(BwJL_%3Mb*P_W!MRU(@H1}*l;}@ct_Z-c-=P5((Wc}Fz+_oK=8qVYeWsSiSPj}n@DJka>d(cE(s&AdNo>H8g;`YJT_FVNg) zh^Brbn)^PYng0+?eJ+~$v1sn!ho;^bO?@kx{BJb-`_SC`8BKpMntEk4`&XcuFN>ys z5t@8I8lM$Sy)2r2F=*g5@_aEpsDXiQ~w3c{17ztDroVw63u)$H2vSu%%6c~o*)|E56!&oX!40@ z@`_M-kh4JTtN&>BS)!@mh338rH2HT>^FYRc%Ckji{9KR(6ocfipqXcarhXn&ErQ&LyGo1SA$E z<`%nxBn^!rLQbWbIVq_{5HTZ&SU_S?acYrkfOi=~abZyjLt;{XQ3*qGQc(#*MrA>M z2}53LVo_3MW?l(HPEHYsN=(i#W=Km+DrP7yNl7g#Vo1x$&o5%gORXqLOe;w(Vkk<@ zP0Y+oNiAZ?Nl(npP0WdhvC`nI_#%e1qST54hMW{InV)W0z>t%fl&e>q&rqD4n3I%~ z$Bk&~ALc47|LjX7{f zLZv~nC5d@CAa~|4B&TNPKuCu8_~MepwF zISje^DQOVbmE@Nv7Nvmf%TLK+$SKM%%}dE)C@CtfskZ`mb5a# z0h<91mkhAM8K5u&$4?q4e$v44lLn5TG)VlUA>tpiz+q4s(bbjKF3afrWAn!5l*a zWb;v?Exk0cD1{*{H$R0TEj2y01RVRI@B&%Qke*snkeLG3kdm1npIIEAnU`6TnV6GV zm6`%ml>%`f$TP_h=RqUbq%6O*#5KUg&C|!#FF4-NAh@I`GcP?XGqoHX%{YsfB&heG zzJnTPXcSVEnVz4QpPO1zRA~ar$DV1ft|9TkM)7!*q!Lz=f~v#>R8T>UHiQ`s5ri0q zCJ50E7c?tNNlMSjBhAY&510p+B<7_g7D3C~lGGy80#IR!Kfu7{F>2WhP7&ZlX#`5Y zMj(E!A&6;cz`(!&YLl2SFff3cnoqbH82A_%7~Vna95AJqQkhp=Qp5nJD|5kgVs2(K zgI;k)aY<20ViH&xF$5S zP^cv!c@R?&>VA;A7lI57APgFf0`WoeAoDmF7#O4&7~ow=4j~2x5LN*xfMS?=00K9n Awg3PC literal 0 HcmV?d00001 diff --git a/Toolchain/Stubs/i686clang/libpthread.so b/Toolchain/Stubs/i686clang/libpthread.so new file mode 100644 index 0000000000000000000000000000000000000000..557e7200dcabc4621da39f5cae67d80c875c3b2e GIT binary patch literal 4952 zcmb<-^>JflWMqH=W(H;k1doAXf)GT;gh7FUfkA_Tm4O8!fJD|XAvhrAikt|(5(6W{ zSp=5>#Gi&F4^kh6#{b8P&;XMEfX07?#^1?-s{RHWg0IBDz+l0Q$`3?SAAsaxkbQ0J z2=yR7H=6q*(B!`$*#}a82F?6tH1nsUx&JX*_*EkXG0416X#5Z~`@W*t7l7tpW;Ffw zNa_U{7#Mz_xQCHJ3&lN*3`R)ii7_xR97hBX1IT@4Nalg~%4qyV6#E$&Qc?6XGT5Mm zCnLi~6#p?Y97VEUh=GxT7sY%=hAU|9uSL^;7bW}|85Gd$n~tV_3YvZ2(bVrlvo9G< zzX+OtSE7Zd0h)SCH1};n3m-W&{f21fd!fl^q49mt%sY-|UoDz{a?$+jisoKrH2cfY z%)5YQ{{yt}lr}lqZLU2#Gi@gzgjf+e?jAmqlXuo zduE`SzZOm22rYfiMl+8KEqv0^+~I~{X!5dX@^{eW4bj{)8_m7z(fn77 zCLe|tADn3Ze~8B4i{{_;Xz}+Q&3soh_g0~~_dS~X)}Z-!GMau)H2E~B{UBvx42%q? zq5gsKYtY=^k7oaKsCtkvD19-a`L6|PK1|*K&Am2g>J8BN1t5ojG&3-O({m!4d?<=M z14A#0eGCjgQSui9!v{3}b2L6fK}kkYYGO)!ZfQwsMSMzXaY<2rC8}s*Nl6igOi_7G zesVTespR~;6s!_h1&a$Z^Wdfzr{==hFqc7W!Vm`80vAjJxt<|D%FoEr+t4IFJ}ti} zH?btXEHS4v)icx8wJgXlINr!8q_QB@wJ5PTHN_3AARw_QF}K(iBxz_25ppWc%t=Wt zf`}PG!~znFic^bR1H8)^Kn^U(FD`+H5ZD<>Mfr&-$%(}!4Ds?PA$nx%uS8YLkOiKgb+~z4$OE^ zx{WVLEiTT?%`7g-Oa^Jo$xJG)EG|jS)ho_t$jMBC(NIr8MUz2vYEe;MK0|zbN-8{7 z(~3a0XXd4W#IcDM#}}6*CTD}JP6T-e?((es%sg;7<`<;qF%*{+<)r4pCBe~FoLW+x zoROMR07|NGDeR(P4e3}lU>D8K%*kPhhdM4fBRf7VF*65lNpfOdaw>wGT3DKh;DMvL zI5RyDNvt?CJvXs9o1r)}y`U&R8O(-;AT%d{{aTurlbM%|lvN<{Qc_e2iW<1};53RZ z2u+=!Bv^!^8YTfwk65M3A)@HXp)?Q09I&luVo7Z-C>P|Y*so?3z;1NRq-D9n)Ja7 znQ58HNTMLG!$qUaiz|zh6LWGr{mi^mi}F%)%!45U7O>jMHJ~imI6liYD9d zEdVt|@aqP*W>8x$3{Wo^!x%;|h9Ri7E6pp<%uCTL&esETleM)WYz77fP;=LWfq?jX`b$;S1~#KB&13Y9b3TK->g!0!SUm?I0}6g)kqa x7Q_RMgMj=AQl}!szyQJ?Q1e0ZAoD=o6e$J<29S9mu^b@=1`t*OaiADx9ssg_NKF6$ literal 0 HcmV?d00001 diff --git a/Toolchain/Stubs/x86_64clang/libc.so b/Toolchain/Stubs/x86_64clang/libc.so new file mode 100644 index 0000000000000000000000000000000000000000..373cbddcec7e9ca51d1e4af32b046847b2ef0a7a GIT binary patch literal 80216 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­l8FERCTIymc&% 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 literal 0 HcmV?d00001