Yuan,
do you have any progress here?

Ivan

On Thursday, May 28, 2020 at 6:47:41 AM UTC+3 Yuan Ting wrote:

> Thanks for your correction, overriding CMAKE_C_FLAGS and CMAKE_ASM_FLAGS 
> with "-fcf-protection=none" works for me.
> I also try to build gollvm from a clean slate (by recreating a build area 
> and rerun cmake without overriding CMAKE_C_FLAGS and CMAKE_ASM_FLAGS). 
> However, I still failed to build gollvm. I can even see the notice during 
> the configuration:
>
> -- trying -fcf-protection=none workaround
>
> -- Performing Test SPLIT_STACK_WORKAROUND
>
> -- Performing Test SPLIT_STACK_WORKAROUND - Success
>
> -- applying -fcf-protection=none workaround
>
> -- starting libgo configuration.
>
>
> but during building, the same error happened:
>
>
> [2427/2600] Linking C shared library tools/gollvm/libgo/libgo.so.11git
>
> FAILED: tools/gollvm/libgo/libgo.so.11git
>
> : && /usr/bin/cc -fPIC -fPIC -Werror=date-time -Wall -Wextra 
> -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers 
> -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-comment 
> -fdiagnostics-color -ffunction-sections -fdata-sections -O3  
> -Wl,-z,nodelete -fuse-ld=gold   -Wl,-O3 -Wl,--gc-sections -shared 
> -Wl,-soname,libgo.so.11git -o tools/gollvm/libgo/libgo.so.11git ...*(omits 
> all object files)...* -Wl,-rpath,"\$ORIGIN/../lib"  -lpthread  -lm  
> -fsplit-stack && :
>
> ... ...
>
> /usr/bin/ld.gold: error: 
> tools/gollvm/libgo/CMakeFiles/libffi_piclib.dir/libffi/src/x86/ffi64.c.o: 
> failed to match split-stack sequence at section 22 offset 0
>
> /usr/bin/ld.gold: error: 
> tools/gollvm/libgo/CMakeFiles/libffi_piclib.dir/libffi/src/x86/ffi64.c.o: 
> failed to match split-stack sequence at section 26 offset 0
>
> /usr/bin/ld.gold: error: 
> tools/gollvm/libgo/CMakeFiles/libffi_piclib.dir/libffi/src/x86/ffiw64.c.o: 
> failed to match split-stack sequence at section 16 offset 0
>
> collect2: error: ld returned 1 exit status
>
> [2429/2600] Linking C static library tools/gollvm/libgo/libgo.a
>
> ninja: build stopped: subcommand failed.
>
> On Wednesday, May 27, 2020 at 10:36:23 PM UTC+8, Than McIntosh wrote:
>
>> >> I can successfully compile and link gollvm by setting 
>> CMAKE_C_FLAGS="-fcf-protection=none".
>>
>> The manual override of  CMAKE_C_FLAGS shouldn't be needed, if you rerun 
>> cmake from a clean slate (removing the CMakeCache.txt, etc) it should 
>> detect that "-fcf-protection=branch" is hard-wired on, and will add the 
>> right flags under the hood to work around it.
>>
>> >>root@a78010e8da5d:~# go version
>> >>go: symbol lookup error: 
>> /root/llvm-project/install-release/lib64/libgo.so.11git: undefined symbol: 
>> __go_getcontext
>>
>> This symbol is defined in an assembly source file in libgo. What's 
>> happening is that by setting CMAKE_C_FLAGS="-fcf-protection=none" but not 
>> also setting CMAKE_ASM_FLAGS="-fcf-protection=none" you've introduced a 
>> discrepancy between the C and Assembly compiles in libgo. If you 
>> set CMAKE_C_FLAGS, you should also set CMAKE_ASM_FLAGS.
>>
>> Thanks, Than
>>
>>
>> On Wed, May 27, 2020 at 10:02 AM Yuan Ting <yuan...@ict.ac.cn> wrote:
>>
> Thank you for your guidance, now I can successfully compile and link 
>>> gollvm by setting CMAKE_C_FLAGS="-fcf-protection=none". But after 
>>> installing gollvm, there is still a weird problem:
>>>
>>> root@a78010e8da5d:~# go version
>>> go: symbol lookup error: 
>>> /root/llvm-project/install-release/lib64/libgo.so.11git: undefined symbol: 
>>> __go_getcontext
>>>
>>> On Wednesday, May 27, 2020 at 12:01:06 AM UTC+8, Than McIntosh wrote:
>>>>
>>>>
>>>> This looks exactly like the bug in 
>>>> https://github.com/golang/go/issues/38728. The prolog of the function 
>>>> contains
>>>>
>>>>    0: f3 0f 1e fa           endbr64
>>>>
>>>> which is confusing the gold linker. This instruction doesn't get added 
>>>> unless the host compiler has "-fcf-protection=branch" turned on.  I would 
>>>> suggest deleting and recreating your build area or removing your 
>>>> CMakeCache.txt file to insure that you have a rebuild from a clean start.
>>>>
>>>> Thanks, Than
>>>>
>>>>
>>>> On Tue, May 26, 2020 at 11:00 AM Yuan Ting <yuan...@ict.ac.cn> wrote:
>>>>
>>>>> OK, as follows
>>>>>
>>>>> ./tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o:
>>>>>   
>>>>>    file format elf64-x86-64
>>>>>
>>>>>
>>>>> Disassembly of section .text.syscall.GetErrno:
>>>>>
>>>>> 0000000000000000 <syscall.GetErrno>:
>>>>>    0: f3 0f 1e fa          endbr64
>>>>>    4: 64 48 3b 24 25 70 00 cmp    %fs:0x70,%rsp
>>>>>    b: 00 00
>>>>>    d: 72 11                jb     20 <syscall.GetErrno+0x20>
>>>>>    f: 48 83 ec 08          sub    $0x8,%rsp
>>>>>   13: e8 00 00 00 00        callq  18 <syscall.GetErrno+0x18>
>>>>> 14: R_X86_64_PLT32 __errno_location-0x4
>>>>>   18: 48 63 00              movslq (%rax),%rax
>>>>>   1b: 48 83 c4 08          add    $0x8,%rsp
>>>>>   1f: c3                    retq
>>>>>   20: 41 ba 08 00 00 00    mov    $0x8,%r10d
>>>>>   26: 45 31 db              xor    %r11d,%r11d
>>>>>   29: e8 00 00 00 00        callq  2e <syscall.GetErrno+0x2e>
>>>>> 2a: R_X86_64_PLT32 __morestack-0x4
>>>>>   2e: c3                    retq
>>>>>   2f: f3 0f 1e fa          endbr64
>>>>>   33: eb da                jmp    f <syscall.GetErrno+0xf>
>>>>>
>>>>> On Tuesday, May 26, 2020 at 10:44:03 PM UTC+8, Than McIntosh wrote:
>>>>>>
>>>>>> OK. Just to confirm, what do you see from 
>>>>>>
>>>>>> objdump -dr 
>>>>>> ./tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o
>>>>>>
>>>>>> for the prolog of syscall.Geterrno. Should be something like
>>>>>>
>>>>>> Disassembly of section .text.syscall.GetErrno:
>>>>>>
>>>>>> 0000000000000000 <syscall.GetErrno>:
>>>>>>    0:   64 48 3b 24 25 70 00    cmp    %fs:0x70,%rsp
>>>>>>    7:   00 00 
>>>>>>    9:   72 11                   jb     1c <syscall.GetErrno+0x1c>
>>>>>>    b:   48 83 ec 08             sub    $0x8,%rsp
>>>>>>    f:   e8 00 00 00 00          callq  14 <syscall.GetErrno+0x14>
>>>>>>                         10: R_X86_64_PLT32      __errno_location-0x4
>>>>>>
>>>>>> Thanks, Than
>>>>>>
>>>>>> ?
>>>>>>
>>>>>> On Tue, May 26, 2020 at 10:05 AM Yuan Ting <yuan...@ict.ac.cn> wrote:
>>>>>>
>>>>>>> Fine, that is
>>>>>>>
>>>>>>> [1/3] /usr/bin/cc -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS 
>>>>>>> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/gollvm/libgo 
>>>>>>> -I/root/llvm-project/llvm/tools/gollvm/libgo -Iinclude 
>>>>>>> -I/root/llvm-project/llvm/include 
>>>>>>> -I/root/llvm-project/llvm/tools/gollvm/gofrontend/libgo/runtime 
>>>>>>> -Itools/gollvm/libgo/runtime 
>>>>>>> -I/root/llvm-project/llvm/tools/gollvm/libgo/libbacktrace -fPIC 
>>>>>>> -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings 
>>>>>>> -Wno-missing-field-initializers -pedantic -Wno-long-long 
>>>>>>> -Wimplicit-fallthrough -Wno-comment -fdiagnostics-color 
>>>>>>> -ffunction-sections 
>>>>>>> -fdata-sections -O3    -fPIC -g -Wno-zero-length-array -fsplit-stack 
>>>>>>> -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -UNDEBUG -MD 
>>>>>>> -MT 
>>>>>>> tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o
>>>>>>>  
>>>>>>> -MF 
>>>>>>> tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o.d
>>>>>>>  
>>>>>>> -o 
>>>>>>> tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o
>>>>>>>   
>>>>>>>  -c 
>>>>>>> /root/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/syscall/errno.c
>>>>>>>
>>>>>>> On Tuesday, May 26, 2020 at 8:41:18 PM UTC+8, Than McIntosh wrote:
>>>>>>>>
>>>>>>>> OK.
>>>>>>>>
>>>>>>>> I'm wondering if for some reason the fix I put in is not effective.
>>>>>>>>
>>>>>>>> Could you please try this in your build area:
>>>>>>>>
>>>>>>>> rm 
>>>>>>>> ./tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o
>>>>>>>> ninja -v libgo_all
>>>>>>>>
>>>>>>>> and post the compile line for errno.c?
>>>>>>>>
>>>>>>>> Thanks, Than
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, May 26, 2020 at 7:21 AM Yuan Ting <yuan...@ict.ac.cn> 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Yes, I'm sure I fetched the last version of gollvm, 
>>>>>>>>> i.e. 0edc44a02852dd0d56cac35163a45634b497d6cd
>>>>>>>>>
>>>>>>>>> On Tuesday, May 26, 2020 at 6:55:08 PM UTC+8, Than McIntosh wrote:
>>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> The ld.gold error message looks a lot like one reported in a 
>>>>>>>>>> previous bug, https://github.com/golang/go/issues/38728.
>>>>>>>>>>
>>>>>>>>>> Can you please check to make sure that your client is sync'd past 
>>>>>>>>>> the CLs that fix this issue, e.g. 
>>>>>>>>>> 0edc44a02852dd0d56cac35163a45634b497d6cd.
>>>>>>>>>>
>>>>>>>>>> Thanks, Than
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, May 25, 2020 at 10:15 PM Yuan Ting <yuan...@ict.ac.cn> 
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I tried to build gollvm in a docker container (the image is 
>>>>>>>>>>> based on ubuntu 20.04, and the host OS is MacOS catalina). I 
>>>>>>>>>>> configured 
>>>>>>>>>>> llvm by
>>>>>>>>>>>
>>>>>>>>>>> SHELL=/bin/sh cmake -DCMAKE_BUILD_TYPE=Release 
>>>>>>>>>>> -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_ASSERTIONS=On 
>>>>>>>>>>> -DLLVM_ENABLE_RTTI=On -DLLVM_USE_LINKER=gold -G Ninja ../llvm
>>>>>>>>>>>
>>>>>>>>>>> and then build and install gollvm by 
>>>>>>>>>>>
>>>>>>>>>>> ninja gollvm && ninja install-gollvm
>>>>>>>>>>>
>>>>>>>>>>> after a while, I encountered
>>>>>>>>>>>
>>>>>>>>>>> ...
>>>>>>>>>>>
>>>>>>>>>>> error: At most two relocations per offset are supported
>>>>>>>>>>>
>>>>>>>>>>> error: At most two relocations per offset are supported
>>>>>>>>>>>
>>>>>>>>>>> error: At most two relocations per offset are supported
>>>>>>>>>>>
>>>>>>>>>>> [212/1279] Creating 
>>>>>>>>>>> /root/llvm-project/build-debug/tools/gollvm/libgo/tmp-sigtab.go
>>>>>>>>>>>
>>>>>>>>>>> FAILED: tools/gollvm/libgo/tmp-sigtab.go
>>>>>>>>>>>
>>>>>>>>>>> cd /root/llvm-project/build-debug/tools/gollvm/libgo && 
>>>>>>>>>>> GOARCH=amd64 GOOS=linux /bin/sh 
>>>>>>>>>>> /root/llvm-project/llvm/tools/gollvm/libgo/capturescript.sh 
>>>>>>>>>>> /root/llvm-project/llvm/tools/gollvm/gofrontend/libgo/mksigtab.sh 
>>>>>>>>>>> /root/llvm-project/build-debug/tools/gollvm/libgo/tmp-sigtab.go
>>>>>>>>>>>
>>>>>>>>>>> error: no SHELL setting
>>>>>>>>>>>
>>>>>>>>>>> [214/1279] Creating 
>>>>>>>>>>> /root/llvm-project/build-debug/tools/gollvm/libgo/tmp-sysinfo.go
>>>>>>>>>>>
>>>>>>>>>>> ninja: build stopped: subcommand failed.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> By add SHELL=/bin/sh, the errors above seems to be skipped but 
>>>>>>>>>>> another period of time: 
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ...
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 4 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/errno.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 6 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libgo_c_piclib.dir/__/gofrontend/libgo/go/syscall/signame.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 5 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libbacktrace_piclib.dir/libbacktrace/backtrace.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 4 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libbacktrace_piclib.dir/libbacktrace/backtrace.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 6 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libbacktrace_piclib.dir/libbacktrace/dwarf.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 18 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libbacktrace_piclib.dir/libbacktrace/dwarf.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 79 offset 0
>>>>>>>>>>>
>>>>>>>>>>> ...
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libffi_piclib.dir/libffi/src/x86/ffi64.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 22 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libffi_piclib.dir/libffi/src/x86/ffi64.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 26 offset 0
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld.gold: error: 
>>>>>>>>>>> tools/gollvm/libgo/CMakeFiles/libffi_piclib.dir/libffi/src/x86/ffiw64.c.o:
>>>>>>>>>>>  
>>>>>>>>>>> failed to match split-stack sequence at section 16 offset 0
>>>>>>>>>>>
>>>>>>>>>>> collect2: error: ld returned 1 exit status
>>>>>>>>>>>
>>>>>>>>>>> [901/1066] Linking C static library tools/gollvm/libgo/libgo.a
>>>>>>>>>>>
>>>>>>>>>>> ninja: build stopped: subcommand failed.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I'm not sure the error is caused by the container environment or 
>>>>>>>>>>> my configurations/other prerequisites.
>>>>>>>>>>>
>>>>>>>>>>> -- 
>>>>>>>>>>> You received this message because you are subscribed to the 
>>>>>>>>>>> Google Groups "golang-nuts" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from 
>>>>>>>>>>> it, send an email to golan...@googlegroups.com.
>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/23309451-cb0a-4f7b-93a1-27038187302a%40googlegroups.com
>>>>>>>>>>>  
>>>>>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/23309451-cb0a-4f7b-93a1-27038187302a%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>>> Groups "golang-nuts" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>> send an email to golan...@googlegroups.com.
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/1ffd3fb4-e739-4f13-9168-565e4c64bc70%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/1ffd3fb4-e739-4f13-9168-565e4c64bc70%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>> -- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "golang-nuts" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>> send an email to golan...@googlegroups.com.
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/golang-nuts/2e9d2af9-7d78-443b-9cda-34d7b9c41623%40googlegroups.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/2e9d2af9-7d78-443b-9cda-34d7b9c41623%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "golang-nuts" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to golan...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/golang-nuts/975b8157-5795-4c09-9aed-91278aa5f0e6%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/golang-nuts/975b8157-5795-4c09-9aed-91278aa5f0e6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golan...@googlegroups.com.
>>>
>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/51910be4-ce4a-49a0-91f4-1e1cc63902f6%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/51910be4-ce4a-49a0-91f4-1e1cc63902f6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/90a13fea-7ee9-42ae-b2b6-146c6835adf1n%40googlegroups.com.

Reply via email to