Re: clang 3.9.0 buildkernel on old powerpc64's vs. trying to build hwpmc_e500.o and the like. . . [Actually .__start code failure vs. working and R_PPC64_ADDR16_DS vs. R_PPC64_TOC16_DS]
I'll note that: Bug 214855 - head -r309179 TARGET_ARCH=powerpc64 clang 3.9.0 based cross build: powerpc.powerpc64/usr/src/tmp/usr/bin/ld: BFD 2.17.50 [FreeBSD] 2007-07-03 internal error means that I can not use the bootstrap binutils to do buildworld for powerpc64. I've confirmed that it still happens in -r311147 . So to span both buildkernel and buildworld does require devel/powerpc64-binutils or the like for TARGET_ARCH=powerpc64 . === Mark Millard markmi at dsl-only.net On 2017-Jan-8, at 4:40 PM, Mark Millard wrote: [I've not tried lldb yet but I have good news. . .] Well it turns out I was wrong: after the @toc changes (now in the TOC_REF(...) macro instead of per instruction) I can boot a kernel built using the bootstrap system binutils and clang as well. devel/powerpc64-binutils or the like is not required. It looks like bugzilla 215821 is wrong/redundant and 215819 actually covers the issue. I will likely close 215821 after I've played around some more. I can build with clang 3.9.1, devel/powerpc64-xtoolchain-gcc, or gcc 4.2.1 as I have things. clang 3.9.1 based builds do not handle throwing C++ exceptions. lib32 does not work for devel/powerpc64-gcc based builds. As stands I have head -r311147 with: # svnlite status /usr/src/ | sort ? /usr/src/sys/amd64/conf/GENERIC-DBG ? /usr/src/sys/amd64/conf/GENERIC-NODBG ? /usr/src/sys/arm/conf/BPIM3-DBG ? /usr/src/sys/arm/conf/BPIM3-NODBG ? /usr/src/sys/arm/conf/RPI2-DBG ? /usr/src/sys/arm/conf/RPI2-NODBG ? /usr/src/sys/arm64/conf/GENERIC-DBG ? /usr/src/sys/arm64/conf/GENERIC-NODBG ? /usr/src/sys/powerpc/conf/GENERIC64vtsc-DBG ? /usr/src/sys/powerpc/conf/GENERIC64vtsc-NODBG ? /usr/src/sys/powerpc/conf/GENERICvtsc-DBG ? /usr/src/sys/powerpc/conf/GENERICvtsc-NODBG M /usr/src/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td M /usr/src/lib/csu/powerpc64/Makefile M /usr/src/sys/boot/ofw/Makefile.inc M /usr/src/sys/boot/powerpc/Makefile.inc M /usr/src/sys/boot/powerpc/kboot/Makefile M /usr/src/sys/boot/uboot/Makefile.inc M /usr/src/sys/conf/Makefile.powerpc M /usr/src/sys/conf/kern.mk M /usr/src/sys/conf/kmod.mk M /usr/src/sys/ddb/db_main.c (Not relevant) M /usr/src/sys/ddb/db_script.c (Not relevant) M /usr/src/sys/modules/zfs/Makefile M /usr/src/sys/powerpc/aim/trap_subr32.S M /usr/src/sys/powerpc/include/asm.h M /usr/src/sys/powerpc/ofw/ofw_machdep.c (Not relevant) The various KERNCONF's include standard ones then adjust things. They are not otherwise relevant. Notes on the differences ("M" lines): [I do not have a context to test powerpc's kboot or uboot for powerpc or powerpc64: only PowerMacs. Those Makefile changes were based on avoiding build errors that occurred before the change (long ago). I've not gone back through the armv6(/v7) and arm64 builds recently but historically they have worked on the rpi2, bpim3, and pine64 with the boot/uboot/Makefile.inc change in place.] llvm/lib/Target/PowerPC/PPCInstrInfo.td is Roman D.'s incomplete patch for the e500 instructions. It was sufficient to let me continue. The various Makefile*'s and *.mk's deal with: -mlongcall (gcc) vs. not (clang) -m elf32ppc_fbsd (old) vs. -Wl,-m -Wl,elf32ppc_fbsd (new) -mcpu=powerpc64 and -Wa,-mppc64bridge in a Makefile (kboot) that TARGET_ARCH=powerpc tried to build and failed: delete the usage of these options. (No test validation of built kboot result!) -Wa,many for gcc vs. no-such for clang sys/conf/kern.mk deals with: -mllvm -disable-ppc-float-in-variadic=true (older clang) vs. -msoft-float (newer clang) sys/modules/zfs/Makefile deals with: -mminimial-toc (gcc) vs. no-such (clang) sys/ddb/db_main.c and sys/ddb/db_script.c : These would not be included. (They set up to execute a built-in default script so I get information for early boot issues from before ddb takes input.) sys/powerpc/aim/trap_subr32.S deals with: Have a cmp instruction be explicit by adding a "0, ". (This is a TARGET_ARCH=powerpc issue, not a TARGET_ARCH=powerpc64 issue.) sys/powerpc/include/asm.h deals with: Have TOC_REF(...) also include @toc in the notation that results. Have a TOC_NAME_FOR_REF(...) that only adds the .L to the name passed in and use it where appropriate. sys/powerpc/ofw/ofw_machdep.c : This would not be included. (It is a PowerMac G5 specific workaround for a openfirmware vs. FreeBSD conflict that makes booting unreliable for standard FreeBSD builds.) The details that are not driven by PowerMac G5 specifics look like: Index: /usr/src/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td === --- /usr/src/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td(revision 311147) +++ /usr/src/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td(working copy) @@ -2336,6 +2336,12 @@ def MFTB : XFXForm_1<31, 371, (outs gprc:$RT), (ins
[Bug 215821] head -r311147's bootstrapped ld for TARGET_ARCH=powerpc64 produces kernel.full as a "shared object" for -pie instead of as a "executable": booting the produced kernel crashes
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=215821 Mark Millardchanged: What|Removed |Added Status|New |Closed Resolution|--- |DUPLICATE --- Comment #2 from Mark Millard --- I mis-atttributed the cause of the address that the PowerMac G5 so-called "Quad Core" showed for the bootstrapped binutils context this report was about. That lead to other bad inferences. It turns out that bugzilla 215819's issue controls the behavior of this as well. So I'm closing this one as a poorly attributed report that is actually a duplicate of 215819 technically. *** This bug has been marked as a duplicate of bug 215819 *** -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 214971] clang + lld 3.9.1: Unhandled relocation 1031
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214971 --- Comment #2 from Shawn Webb--- Ping. -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
Re: clang 3.9.0 buildkernel on old powerpc64's vs. trying to build hwpmc_e500.o and the like. . . [Actually .__start code failure vs. working and R_PPC64_ADDR16_DS vs. R_PPC64_TOC16_DS]
Mark, Would you be interested in trying lld? It has some support for ppc/ppc64, which is probably quite incomplete but it would be nice to know what exactly is missing. We also have some people (emaste@, davide@) that have non-trivial lld knowledge so perhaps progress can be achieved on this side easily? Roman On Sun, Jan 08, 2017 at 02:57:11AM -0800, Mark Millard wrote: > [I forgot to indicate that I still can not use the system bootstrapped > ld command and so there is a reason that I used devel/powerpc64-binutils.] > > On 2017-Jan-8, at 2:24 AM, Mark Millard wrote: > > > On 2017-Jan-8, at 1:03 AM, Roman Divacky wrote: > > > >> I think we should add the @toc notations to all the places where it's > >> needed. > >> Can you submit such a patch (perhaps with the one for adding 0 to the cmp > >> instruction) so they can be committed to FreeBSD repo? > > > > In order to test I added @toc to each of the 10 instructions instead > > of adjusting the macros so that instructions would automatically > > get the notation but other (what are now) TOC_REF(...) usage would > > not that should not. > > > > I suspect Nathan and Justin might prefer a more automatic > > alternative so that TOC_REF(...) in an instruction would > > be sufficient without an explicit @toc in the instruction. > > > > I'll see about switching to such code before providing a > > patch. I'd include the "0, " update to the cmp instruction. > > > > But adding @toc's in those instructions (with prior workarounds > > as well) did allow me to build a bootable system based on using > > devel/powerpc64-binutils and clang 3.9.1 for both buildworld > > and buildkernel --still using clang's internal assembler. > > > > One issue is that clang does not support (or need) the > > -mminmal-toc in sys/modules/zfs/Makefile but gcc 4.2.1 > > requires it. For sys/modules/zfs/Makefile my source > > currently does not support gcc 4.2.1 without editing. > > As I remember devel/powerpc64-gcc > > (devel/powerpc64-xtoolchain-gcc) does not require the > > -mminimal-toc either. But devel/powerpc64-gcc does > > allow -mminimal-toc so it can be a clang vs. gcc based > > choice. > > > > I might also deal with that before providing patches. > > > > Note: -mlongcall was also not needed nor used for clang. > > (Still used for gcc.) > > > > sys/boot/powerpc/kboot/Makefile has a -mcpu=powerpc64 > > and -Wa,-mppc64bridge that I eliminated (they messed up > > 32-bit powerpc builds) but I've no way to test kboot that > > I know of. This patch might be rejected. > > > > Remember that I got this far in part by using your partial > > e500-instructions patch. I can provide my variant that > > is a diff with -r311147 instead of an older place in the > > history. But it would be incomplete coverage of those 2 > > instructions in clang. > > > > Also I build with a workaround for PowerMac G5 boot > > reliability since OpenFirmware and FreeBSD interact > > badly at times on PowerMac G5's. This I would not > > provide as it is PowerMac G5 specific. > > > >> If gnu as warns and llvm assembler does the wrong thing without @toc and > >> both > >> do the correct thing with @toc I think it's an obvious decision. > > > > My choice would be to supply the @toc notation in some way, > > not necessarily the form I used for the initial test. > > > >> Also, with all these changes. Does clang compiled kernel boot? > > > > The PowerMac G5 so-called "Quad Core" that I currently have access > > to is now running from buildworld and buildkernel based on > > devel/powerpc64-binutils and clang 3.9.1 : > > > > Copyright (c) 1992-2017 The FreeBSD Project. > > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 > > The Regents of the University of California. All rights reserved. > > FreeBSD is a registered trademark of The FreeBSD Foundation. > > FreeBSD 12.0-CURRENT #2 r311147M: Sat Jan 7 16:55:01 PST 2017 > > > > markmi@FreeBSDx64:/usr/obj/powerpc64vtsc_clang_altbinutils_kernel/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODBG > > powerpc > > FreeBSD clang version 3.9.1 (tags/RELEASE_391/final 289601) (based on LLVM > > 3.9.1) > > . . . > > > > # uname -apKU > > FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT #2 r311147M: Sat Jan 7 > > 16:55:01 PST 2017 > > markmi@FreeBSDx64:/usr/obj/powerpc64vtsc_clang_altbinutils_kernel/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODBG > > powerpc powerpc64 1200019 1200019 > > > > I've built about a dozen ports on it after booting but I've not > > done a self-hosted buildworld buildkernel yet. > > > > [Note: Anything dependent on throwing C++ exceptions in > > code generated by clang++ 3.9.1 is broken.] > > I should have been explicit: > > I still can not use the system bootstrapped ld command > and such binutils for buildkernel and so there is a > reason that I used devel/powerpc64-binutils instead. > > Thus even with my patches clang 3.9.1 would not be ready > for general use or for a default way of
Re: clang 3.9.0 buildkernel on old powerpc64's vs. trying to build hwpmc_e500.o and the like. . . [Actually .__start code failure vs. working and R_PPC64_ADDR16_DS vs. R_PPC64_TOC16_DS]
[I forgot to indicate that I still can not use the system bootstrapped ld command and so there is a reason that I used devel/powerpc64-binutils.] On 2017-Jan-8, at 2:24 AM, Mark Millard wrote: > On 2017-Jan-8, at 1:03 AM, Roman Divacky wrote: > >> I think we should add the @toc notations to all the places where it's needed. >> Can you submit such a patch (perhaps with the one for adding 0 to the cmp >> instruction) so they can be committed to FreeBSD repo? > > In order to test I added @toc to each of the 10 instructions instead > of adjusting the macros so that instructions would automatically > get the notation but other (what are now) TOC_REF(...) usage would > not that should not. > > I suspect Nathan and Justin might prefer a more automatic > alternative so that TOC_REF(...) in an instruction would > be sufficient without an explicit @toc in the instruction. > > I'll see about switching to such code before providing a > patch. I'd include the "0, " update to the cmp instruction. > > But adding @toc's in those instructions (with prior workarounds > as well) did allow me to build a bootable system based on using > devel/powerpc64-binutils and clang 3.9.1 for both buildworld > and buildkernel --still using clang's internal assembler. > > One issue is that clang does not support (or need) the > -mminmal-toc in sys/modules/zfs/Makefile but gcc 4.2.1 > requires it. For sys/modules/zfs/Makefile my source > currently does not support gcc 4.2.1 without editing. > As I remember devel/powerpc64-gcc > (devel/powerpc64-xtoolchain-gcc) does not require the > -mminimal-toc either. But devel/powerpc64-gcc does > allow -mminimal-toc so it can be a clang vs. gcc based > choice. > > I might also deal with that before providing patches. > > Note: -mlongcall was also not needed nor used for clang. > (Still used for gcc.) > > sys/boot/powerpc/kboot/Makefile has a -mcpu=powerpc64 > and -Wa,-mppc64bridge that I eliminated (they messed up > 32-bit powerpc builds) but I've no way to test kboot that > I know of. This patch might be rejected. > > Remember that I got this far in part by using your partial > e500-instructions patch. I can provide my variant that > is a diff with -r311147 instead of an older place in the > history. But it would be incomplete coverage of those 2 > instructions in clang. > > Also I build with a workaround for PowerMac G5 boot > reliability since OpenFirmware and FreeBSD interact > badly at times on PowerMac G5's. This I would not > provide as it is PowerMac G5 specific. > >> If gnu as warns and llvm assembler does the wrong thing without @toc and both >> do the correct thing with @toc I think it's an obvious decision. > > My choice would be to supply the @toc notation in some way, > not necessarily the form I used for the initial test. > >> Also, with all these changes. Does clang compiled kernel boot? > > The PowerMac G5 so-called "Quad Core" that I currently have access > to is now running from buildworld and buildkernel based on > devel/powerpc64-binutils and clang 3.9.1 : > > Copyright (c) 1992-2017 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 > The Regents of the University of California. All rights reserved. > FreeBSD is a registered trademark of The FreeBSD Foundation. > FreeBSD 12.0-CURRENT #2 r311147M: Sat Jan 7 16:55:01 PST 2017 > > markmi@FreeBSDx64:/usr/obj/powerpc64vtsc_clang_altbinutils_kernel/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODBG > powerpc > FreeBSD clang version 3.9.1 (tags/RELEASE_391/final 289601) (based on LLVM > 3.9.1) > . . . > > # uname -apKU > FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT #2 r311147M: Sat Jan 7 > 16:55:01 PST 2017 > markmi@FreeBSDx64:/usr/obj/powerpc64vtsc_clang_altbinutils_kernel/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODBG > powerpc powerpc64 1200019 1200019 > > I've built about a dozen ports on it after booting but I've not > done a self-hosted buildworld buildkernel yet. > > [Note: Anything dependent on throwing C++ exceptions in > code generated by clang++ 3.9.1 is broken.] I should have been explicit: I still can not use the system bootstrapped ld command and such binutils for buildkernel and so there is a reason that I used devel/powerpc64-binutils instead. Thus even with my patches clang 3.9.1 would not be ready for general use or for a default way of building. I have to have a tailored SRC_ENV_CONF file or the like still --and a port built and installed. [On a powerpc64 system devel/binutils could be used.] There is also the issue with throwing C++ exceptions in code when clang 3.9.1 was the code generator used. === Mark Millard markmi at dsl-only.net On Sat, Jan 07, 2017 at 04:28:48PM -0800, Mark Millard wrote: > [Top post about FreeBSD bugzilla 215819 and llvm bugzilla > 31574 submittals for the issue involved.] > > My guess is that FreeBSD will view this as a kernel > source code issue and not as a toolchain issue. But > it is
Re: clang 3.9.0 buildkernel on old powerpc64's vs. trying to build hwpmc_e500.o and the like. . . [Actually .__start code failure vs. working and R_PPC64_ADDR16_DS vs. R_PPC64_TOC16_DS]
On 2017-Jan-8, at 1:03 AM, Roman Divacky wrote: > I think we should add the @toc notations to all the places where it's needed. > Can you submit such a patch (perhaps with the one for adding 0 to the cmp > instruction) so they can be committed to FreeBSD repo? In order to test I added @toc to each of the 10 instructions instead of adjusting the macros so that instructions would automatically get the notation but other (what are now) TOC_REF(...) usage would not that should not. I suspect Nathan and Justin might prefer a more automatic alternative so that TOC_REF(...) in an instruction would be sufficient without an explicit @toc in the instruction. I'll see about switching to such code before providing a patch. I'd include the "0, " update to the cmp instruction. But adding @toc's in those instructions (with prior workarounds as well) did allow me to build a bootable system based on using devel/powerpc64-binutils and clang 3.9.1 for both buildworld and buildkernel --still using clang's internal assembler. One issue is that clang does not support (or need) the -mminmal-toc in sys/modules/zfs/Makefile but gcc 4.2.1 requires it. For sys/modules/zfs/Makefile my source currently does not support gcc 4.2.1 without editing. As I remember devel/powerpc64-gcc (devel/powerpc64-xtoolchain-gcc) does not require the -mminimal-toc either. But devel/powerpc64-gcc does allow -mminimal-toc so it can be a clang vs. gcc based choice. I might also deal with that before providing patches. Note: -mlongcall was also not needed nor used for clang. (Still used for gcc.) sys/boot/powerpc/kboot/Makefile has a -mcpu=powerpc64 and -Wa,-mppc64bridge that I eliminated (they messed up 32-bit powerpc builds) but I've no way to test kboot that I know of. This patch might be rejected. Remember that I got this far in part by using your partial e500-instructions patch. I can provide my variant that is a diff with -r311147 instead of an older place in the history. But it would be incomplete coverage of those 2 instructions in clang. Also I build with a workaround for PowerMac G5 boot reliability since OpenFirmware and FreeBSD interact badly at times on PowerMac G5's. This I would not provide as it is PowerMac G5 specific. > If gnu as warns and llvm assembler does the wrong thing without @toc and both > do the correct thing with @toc I think it's an obvious decision. My choice would be to supply the @toc notation in some way, not necessarily the form I used for the initial test. > Also, with all these changes. Does clang compiled kernel boot? The PowerMac G5 so-called "Quad Core" that I currently have access to is now running from buildworld and buildkernel based on devel/powerpc64-binutils and clang 3.9.1 : Copyright (c) 1992-2017 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 12.0-CURRENT #2 r311147M: Sat Jan 7 16:55:01 PST 2017 markmi@FreeBSDx64:/usr/obj/powerpc64vtsc_clang_altbinutils_kernel/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODBG powerpc FreeBSD clang version 3.9.1 (tags/RELEASE_391/final 289601) (based on LLVM 3.9.1) . . . # uname -apKU FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT #2 r311147M: Sat Jan 7 16:55:01 PST 2017 markmi@FreeBSDx64:/usr/obj/powerpc64vtsc_clang_altbinutils_kernel/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODBG powerpc powerpc64 1200019 1200019 I've built about a dozen ports on it after booting but I've not done a self-hosted buildworld buildkernel yet. [Note: Anything dependent on throwing C++ exceptions in code generated by clang++ 3.9.1 is broken.] === Mark Millard markmi at dsl-only.net On Sat, Jan 07, 2017 at 04:28:48PM -0800, Mark Millard wrote: > [Top post about FreeBSD bugzilla 215819 and llvm bugzilla > 31574 submittals for the issue involved.] > > My guess is that FreeBSD will view this as a kernel > source code issue and not as a toolchain issue. But > it is only a guess on my part. > > > I have submitted llvm bugzilla 31574 for this issue. It > includes example .S file content that shows the "problem" > in the generated .o file (form FreeBSD's view point). > (I've no clue how llvm views its criteria relative to this > mismatch with gcc/binutils.) > > Because FreeBSD source code changes (being explicit about > @toc) avoid the distinction between clang and gcc/binutils > I've not added 31574 to the Depends on list for llvm 25780 > (the FreeBSD system compiler issues META entry in llvm). > > Someone with official status for FreeBSD could add 31574 to > llvm's 25780 if FreeBSD wants to push llvm to match > gcc/binutils for "@toc notation missing". > > Otherwise this is a kernel source code issue (as I would > guess) and not a toolchain issue. > > Ed Maste or someone like that likely would make the final > decision. > > > I've added to FreeBSD Bugzilla 215819
Re: clang 3.9.0 buildkernel on old powerpc64's vs. trying to build hwpmc_e500.o and the like. . . [Actually .__start code failure vs. working and R_PPC64_ADDR16_DS vs. R_PPC64_TOC16_DS]
I think we should add the @toc notations to all the places where it's needed. Can you submit such a patch (perhaps with the one for adding 0 to the cmp instruction) so they can be committed to FreeBSD repo? If gnu as warns and llvm assembler does the wrong thing without @toc and both do the correct thing with @toc I think it's an obvious decision. Also, with all these changes. Does clang compiled kernel boot? On Sat, Jan 07, 2017 at 04:28:48PM -0800, Mark Millard wrote: > [Top post about FreeBSD bugzilla 215819 and llvm bugzilla > 31574 submittals for the issue involved.] > > My guess is that FreeBSD will view this as a kernel > source code issue and not as a toolchain issue. But > it is only a guess on my part. > > > I have submitted llvm bugzilla 31574 for this issue. It > includes example .S file content that shows the "problem" > in the generated .o file (form FreeBSD's view point). > (I've no clue how llvm views its criteria relative to this > mismatch with gcc/binutils.) > > Because FreeBSD source code changes (being explicit about > @toc) avoid the distinction between clang and gcc/binutils > I've not added 31574 to the Depends on list for llvm 25780 > (the FreeBSD system compiler issues META entry in llvm). > > Someone with official status for FreeBSD could add 31574 to > llvm's 25780 if FreeBSD wants to push llvm to match > gcc/binutils for "@toc notation missing". > > Otherwise this is a kernel source code issue (as I would > guess) and not a toolchain issue. > > Ed Maste or someone like that likely would make the final > decision. > > > I've added to FreeBSD Bugzilla 215819 the new information, > including the simple example .S file content that shows the > problem in the generated .o file. (Comments #3 and #4 > have the new material.) > > My guess is that FreeBSD Bugzilla 215819 should no longer > be assigned to freebsd-toolchain@FreeBSD.org . Instead it > would be a powerpc64 kernel source code issue if I'm right. > > Ed Maste or someone like that likely would make this final > decision as well. > > === > Mark Millard > markmi at dsl-only.net > > On 2017-Jan-7, at 3:12 PM, Mark Millard wrote: > > > [I've supplied a list of places that adding @toc notation should > > make clang 3.9.1 targeting powerpc64 do the right thing for > > this issue.] > > > > On 2017-Jan-7, at 2:07 PM, Mark Millard wrote: > > > >> On 2017-Jan-7, at 12:51 AM, Roman Divacky wrote: > >> > >>> That's a great progress. Can you produce minimal self contained test case > >>> that > >>> exhibits this bug? And submit it to llvm bugzilla? > >>> > >>> Also, clang3.9 defaults to using it's own internal asm, what happens if > >>> you > >>> add -no-integrated-as to CFLAGS and recompile the kernel? That should > >>> remove > >>> this llvm assembly problem. Does it boot? > >>> > >>> Thanks Mark, really great progress. > >>> > >>> Roman > >> > >> In attempting this I found how to control the behavior based on > >> the assembler notation @toc being missing vs. being present. > >> > >> If llvm should change is strongly tied to llvm's criteria for > >> gcc compatibility relative to filling-in/defaulting omitted > >> @toc's in the assembler notation. > >> > >> FreeBSD has the option of always being explicit with @toc in order > >> to avoid differences in handling of omitted notation. > >> > >> So I've no clue if FreebSD wants to claim that a llvm change > >> is a requirement for using clang as the powerpc64 system compiler. > >> > >> [The issue of the distinction is submittable to llvm either way.] > >> > >> Details. . . > >> > >> For: > >> > >> .section ".toc","aw" > >> tmpstk.L: .tc tmpstk[TC],tmpstk > >> . . . > >> /* Set up the stack pointer */ > >> ld %r1,tmpstk.L(%r2) > >> > >> using devel/powerpc64-gcc gets: > >> > >> # /usr/local/bin/powerpc64-unknown-freebsd12.0-gcc \ > >> > >> > >> -c \ > >> > >> > >> > >> -x assembler-with-cpp \ > >> > >> > >> -pipe > >> \ > >> > >> > > > > >> > >>