karnajit wangkhem via llvm-dev
2019-Jun-13 10:13 UTC
[llvm-dev] Need help on identifying a patch which fixed lld on linux platform
Thanks for the info Rui. Transitioning from llvm 5.0 to llvm 7.0 will take some time due to the nature/process of the production environment. Is it ok to use lld 7.0 with llvm 5.0? On Thu, Jun 13, 2019 at 1:47 PM Rui Ueyama <ruiu at google.com> wrote:> Looks like Ubuntu 12 was released in 2012, and the most recent version of > LLVM is LLVM 8.0.0. > > LLVM 5.0 is pretty old, and in particular, lld in LLVM 5.0 is extremely > outdated. IIUC, the first release of LLVM that includes somewhat usable > version of lld is LLVM 4.0, and I wouldn't be surprised that LLVM 5.0 has a > lot of bugs. > > Can't you simply use a newer version of lld? > > On Thu, Jun 13, 2019 at 4:01 PM karnajit wangkhem via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hi All, >> >> This test is on a ubuntu 12 box. Can anyone please point me what >> revision/commit-id of lld fixed this issue which was atleast in llvm 5.0. >> . >> ├── build.sh >> ├── main.c >> ├── shared >> │ └── sh.c >> └── static >> └── st.c >> >> [[ build.sh ]] >> >> #!/bin/sh >> >> CC="${TOOLCHAIN}/bin/clang" >> AR="${TOOLCHAIN}/bin/llvm-ar" >> CFLAGS="-g -O" >> LDFLAGS="-fuse-ld=lld" >> >> rm shared/sh.o static/st.o main.o >> rm shared/libsh.so static/libst.a main >> >> ${CC} ${CFLAGS} -c shared/sh.c -o shared/sh.o >> ${CC} ${CFLAGS} ${LDFLAGS} -shared -o shared/libsh.so shared/sh.o >> >> ${CC} ${CFLAGS} -c static/st.c -o static/st.o >> ${AR} cq static/libst.a static/st.o >> >> ${CC} ${CFLAGS} -c main.c -o main.o >> >> ${CC} ${CFLAGS} ${LDFLAGS} -o main -Lshared -lsh -Lstatic -lst main.o >> -Wl,-rpath=shared >> >> [[ main.c ]] >> >> void gn(); >> >> int main() >> { >> gn(); >> return 0; >> } >> >> [[ shared/sh.c ]] >> >> #include <stdio.h> >> >> void gn(void); >> void fn(void); >> >> void gn() >> { >> printf("Calling gn...\n"); >> fn(); >> } >> >> [[ static/st.c ]] >> >> #include <stdio.h> >> >> void fn(void); >> >> void fn() >> { >> printf("Calling fn...\n"); >> } >> >> >> Code flow: >> main -> gn (shared library) -> fn (part of the static lib) >> >> Result: >> With llvm 5.0 >> >> ./main >> Calling gn... >> ./main: symbol lookup error: shared/libsh.so: undefined symbol: fn <=>> symbol fn was not found in binary "main" >> >> readelf -s main | grep fn >> <Nothing> >> >> With llvm 7.0 >> >> ./main >> Calling gn... >> Calling fn... >> >> readelf -s main | grep fn >> 9: 0000000000001100 12 FUNC GLOBAL DEFAULT 13 fn >> 36: 0000000000001100 12 FUNC GLOBAL DEFAULT 13 fn >> >> Regards, >> Karan >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190613/043f89fa/attachment.html>
Rui Ueyama via llvm-dev
2019-Jun-14 13:27 UTC
[llvm-dev] Need help on identifying a patch which fixed lld on linux platform
On Thu, Jun 13, 2019 at 7:15 PM karnajit wangkhem <karnajitw at gmail.com> wrote:> Thanks for the info Rui. > > Transitioning from llvm 5.0 to llvm 7.0 will take some time due to the > nature/process of the production environment. Is it ok to use lld 7.0 with > llvm 5.0? >If you are not doing LTO, then yes, you can use any version of lld with any version of LLVM or Clang. lld takes the industry-standard file format as inputs, so you can use lld with any compiler including non-LLVM ones like GCC. I'd recommend you do that if you can upgrade lld. The improvements from lld 4.0 to lld 7.0 are significant, since lld 4.0 was not very mature when it was released.> On Thu, Jun 13, 2019 at 1:47 PM Rui Ueyama <ruiu at google.com> wrote: > >> Looks like Ubuntu 12 was released in 2012, and the most recent version of >> LLVM is LLVM 8.0.0. >> >> LLVM 5.0 is pretty old, and in particular, lld in LLVM 5.0 is extremely >> outdated. IIUC, the first release of LLVM that includes somewhat usable >> version of lld is LLVM 4.0, and I wouldn't be surprised that LLVM 5.0 has a >> lot of bugs. >> >> Can't you simply use a newer version of lld? >> >> On Thu, Jun 13, 2019 at 4:01 PM karnajit wangkhem via llvm-dev < >> llvm-dev at lists.llvm.org> wrote: >> >>> Hi All, >>> >>> This test is on a ubuntu 12 box. Can anyone please point me what >>> revision/commit-id of lld fixed this issue which was atleast in llvm 5.0. >>> . >>> ├── build.sh >>> ├── main.c >>> ├── shared >>> │ └── sh.c >>> └── static >>> └── st.c >>> >>> [[ build.sh ]] >>> >>> #!/bin/sh >>> >>> CC="${TOOLCHAIN}/bin/clang" >>> AR="${TOOLCHAIN}/bin/llvm-ar" >>> CFLAGS="-g -O" >>> LDFLAGS="-fuse-ld=lld" >>> >>> rm shared/sh.o static/st.o main.o >>> rm shared/libsh.so static/libst.a main >>> >>> ${CC} ${CFLAGS} -c shared/sh.c -o shared/sh.o >>> ${CC} ${CFLAGS} ${LDFLAGS} -shared -o shared/libsh.so shared/sh.o >>> >>> ${CC} ${CFLAGS} -c static/st.c -o static/st.o >>> ${AR} cq static/libst.a static/st.o >>> >>> ${CC} ${CFLAGS} -c main.c -o main.o >>> >>> ${CC} ${CFLAGS} ${LDFLAGS} -o main -Lshared -lsh -Lstatic -lst main.o >>> -Wl,-rpath=shared >>> >>> [[ main.c ]] >>> >>> void gn(); >>> >>> int main() >>> { >>> gn(); >>> return 0; >>> } >>> >>> [[ shared/sh.c ]] >>> >>> #include <stdio.h> >>> >>> void gn(void); >>> void fn(void); >>> >>> void gn() >>> { >>> printf("Calling gn...\n"); >>> fn(); >>> } >>> >>> [[ static/st.c ]] >>> >>> #include <stdio.h> >>> >>> void fn(void); >>> >>> void fn() >>> { >>> printf("Calling fn...\n"); >>> } >>> >>> >>> Code flow: >>> main -> gn (shared library) -> fn (part of the static lib) >>> >>> Result: >>> With llvm 5.0 >>> >>> ./main >>> Calling gn... >>> ./main: symbol lookup error: shared/libsh.so: undefined symbol: fn <=>>> symbol fn was not found in binary "main" >>> >>> readelf -s main | grep fn >>> <Nothing> >>> >>> With llvm 7.0 >>> >>> ./main >>> Calling gn... >>> Calling fn... >>> >>> readelf -s main | grep fn >>> 9: 0000000000001100 12 FUNC GLOBAL DEFAULT 13 fn >>> 36: 0000000000001100 12 FUNC GLOBAL DEFAULT 13 fn >>> >>> Regards, >>> Karan >>> _______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org >>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>> >>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190614/1383862f/attachment.html>
karnajit wangkhem via llvm-dev
2019-Jun-14 14:23 UTC
[llvm-dev] Need help on identifying a patch which fixed lld on linux platform
Thanks Rui for the great info. We will definitely take your advise. Regards, Karan On Fri, Jun 14, 2019, 6:57 PM Rui Ueyama <ruiu at google.com> wrote:> On Thu, Jun 13, 2019 at 7:15 PM karnajit wangkhem <karnajitw at gmail.com> > wrote: > >> Thanks for the info Rui. >> >> Transitioning from llvm 5.0 to llvm 7.0 will take some time due to the >> nature/process of the production environment. Is it ok to use lld 7.0 with >> llvm 5.0? >> > > If you are not doing LTO, then yes, you can use any version of lld with > any version of LLVM or Clang. lld takes the industry-standard file format > as inputs, so you can use lld with any compiler including non-LLVM ones > like GCC. > > I'd recommend you do that if you can upgrade lld. The improvements from > lld 4.0 to lld 7.0 are significant, since lld 4.0 was not very mature when > it was released. > > >> On Thu, Jun 13, 2019 at 1:47 PM Rui Ueyama <ruiu at google.com> wrote: >> >>> Looks like Ubuntu 12 was released in 2012, and the most recent version >>> of LLVM is LLVM 8.0.0. >>> >>> LLVM 5.0 is pretty old, and in particular, lld in LLVM 5.0 is extremely >>> outdated. IIUC, the first release of LLVM that includes somewhat usable >>> version of lld is LLVM 4.0, and I wouldn't be surprised that LLVM 5.0 has a >>> lot of bugs. >>> >>> Can't you simply use a newer version of lld? >>> >>> On Thu, Jun 13, 2019 at 4:01 PM karnajit wangkhem via llvm-dev < >>> llvm-dev at lists.llvm.org> wrote: >>> >>>> Hi All, >>>> >>>> This test is on a ubuntu 12 box. Can anyone please point me what >>>> revision/commit-id of lld fixed this issue which was atleast in llvm 5.0. >>>> . >>>> ├── build.sh >>>> ├── main.c >>>> ├── shared >>>> │ └── sh.c >>>> └── static >>>> └── st.c >>>> >>>> [[ build.sh ]] >>>> >>>> #!/bin/sh >>>> >>>> CC="${TOOLCHAIN}/bin/clang" >>>> AR="${TOOLCHAIN}/bin/llvm-ar" >>>> CFLAGS="-g -O" >>>> LDFLAGS="-fuse-ld=lld" >>>> >>>> rm shared/sh.o static/st.o main.o >>>> rm shared/libsh.so static/libst.a main >>>> >>>> ${CC} ${CFLAGS} -c shared/sh.c -o shared/sh.o >>>> ${CC} ${CFLAGS} ${LDFLAGS} -shared -o shared/libsh.so shared/sh.o >>>> >>>> ${CC} ${CFLAGS} -c static/st.c -o static/st.o >>>> ${AR} cq static/libst.a static/st.o >>>> >>>> ${CC} ${CFLAGS} -c main.c -o main.o >>>> >>>> ${CC} ${CFLAGS} ${LDFLAGS} -o main -Lshared -lsh -Lstatic -lst main.o >>>> -Wl,-rpath=shared >>>> >>>> [[ main.c ]] >>>> >>>> void gn(); >>>> >>>> int main() >>>> { >>>> gn(); >>>> return 0; >>>> } >>>> >>>> [[ shared/sh.c ]] >>>> >>>> #include <stdio.h> >>>> >>>> void gn(void); >>>> void fn(void); >>>> >>>> void gn() >>>> { >>>> printf("Calling gn...\n"); >>>> fn(); >>>> } >>>> >>>> [[ static/st.c ]] >>>> >>>> #include <stdio.h> >>>> >>>> void fn(void); >>>> >>>> void fn() >>>> { >>>> printf("Calling fn...\n"); >>>> } >>>> >>>> >>>> Code flow: >>>> main -> gn (shared library) -> fn (part of the static lib) >>>> >>>> Result: >>>> With llvm 5.0 >>>> >>>> ./main >>>> Calling gn... >>>> ./main: symbol lookup error: shared/libsh.so: undefined symbol: fn >>>> <== symbol fn was not found in binary "main" >>>> >>>> readelf -s main | grep fn >>>> <Nothing> >>>> >>>> With llvm 7.0 >>>> >>>> ./main >>>> Calling gn... >>>> Calling fn... >>>> >>>> readelf -s main | grep fn >>>> 9: 0000000000001100 12 FUNC GLOBAL DEFAULT 13 fn >>>> 36: 0000000000001100 12 FUNC GLOBAL DEFAULT 13 fn >>>> >>>> Regards, >>>> Karan >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> llvm-dev at lists.llvm.org >>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>> >>>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190614/1c08086d/attachment-0001.html>