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]

2017-01-08 Thread Mark Millard
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

2017-01-08 Thread bugzilla-noreply
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=215821

Mark Millard  changed:

   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

2017-01-08 Thread bugzilla-noreply
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]

2017-01-08 Thread Roman Divacky
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]

2017-01-08 Thread Mark Millard
[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]

2017-01-08 Thread Mark Millard

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]

2017-01-08 Thread Roman Divacky
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 
> >>  \ 
> >>
> >>   
   
>   
> > 
> >>
> >>