Re: fix clang types on arm
On Fri, Sep 16, 2016 at 09:04:58PM +0200, Mark Kettenis wrote: > On OpenBSD we use a consistent set of typedefs across platforms for > the types specified by the C standard. In some cases these deviate > from what the processor-specific ABI says. The diff below fixes the > ones relevant for arm, pretty much by following NetBSD. > > ok? ok patrick@ > > Oh, and how do we handle upstreaming these kind of diffs? Good question. LLVM folks seem receptive to diffs, but you need to create a test. They also seem to like that Phabricator thing, but I'm not sure if that is really needed and instead you could just send the diff (+ test) to the mailing list... > > > Index: gnu/llvm/tools/clang/lib/Basic/Targets.cpp > === > RCS file: /cvs/src/gnu/llvm/tools/clang/lib/Basic/Targets.cpp,v > retrieving revision 1.1.1.1 > diff -u -p -r1.1.1.1 Targets.cpp > --- gnu/llvm/tools/clang/lib/Basic/Targets.cpp3 Sep 2016 22:46:57 > - 1.1.1.1 > +++ gnu/llvm/tools/clang/lib/Basic/Targets.cpp16 Sep 2016 18:58:59 > - > @@ -4275,8 +4275,10 @@ class ARMTargetInfo : public TargetInfo > DoubleAlign = LongLongAlign = LongDoubleAlign = SuitableAlign = 64; > const llvm::Triple &T = getTriple(); > > -// size_t is unsigned long on MachO-derived environments, NetBSD and > Bitrig. > +// size_t is unsigned long on MachO-derived environments, NetBSD, > +// OpenBSD and Bitrig. > if (T.isOSBinFormatMachO() || T.getOS() == llvm::Triple::NetBSD || > +T.getOS() == llvm::Triple::OpenBSD || > T.getOS() == llvm::Triple::Bitrig) >SizeType = UnsignedLong; > else > @@ -4284,6 +4286,7 @@ class ARMTargetInfo : public TargetInfo > > switch (T.getOS()) { > case llvm::Triple::NetBSD: > +case llvm::Triple::OpenBSD: >WCharType = SignedInt; >break; > case llvm::Triple::Win32: > @@ -4475,6 +4478,7 @@ public: > > switch (getTriple().getOS()) { > case llvm::Triple::NetBSD: > +case llvm::Triple::OpenBSD: >PtrDiffType = SignedLong; >break; > default: >
Re: fix clang types on arm
On Fri, Sep 16, 2016 at 09:04:58PM +0200, Mark Kettenis wrote: > On OpenBSD we use a consistent set of typedefs across platforms for > the types specified by the C standard. In some cases these deviate > from what the processor-specific ABI says. The diff below fixes the > ones relevant for arm, pretty much by following NetBSD. > > ok? ok jsg@ > > Oh, and how do we handle upstreaming these kind of diffs? For the tools/clang parts send patches to cfe-commits and hope they don't get ignored. http://cfe.llvm.org/get_involved.html I think they have a preference for patches as attachments rather than inline as well. > > > Index: gnu/llvm/tools/clang/lib/Basic/Targets.cpp > === > RCS file: /cvs/src/gnu/llvm/tools/clang/lib/Basic/Targets.cpp,v > retrieving revision 1.1.1.1 > diff -u -p -r1.1.1.1 Targets.cpp > --- gnu/llvm/tools/clang/lib/Basic/Targets.cpp3 Sep 2016 22:46:57 > - 1.1.1.1 > +++ gnu/llvm/tools/clang/lib/Basic/Targets.cpp16 Sep 2016 18:58:59 > - > @@ -4275,8 +4275,10 @@ class ARMTargetInfo : public TargetInfo > DoubleAlign = LongLongAlign = LongDoubleAlign = SuitableAlign = 64; > const llvm::Triple &T = getTriple(); > > -// size_t is unsigned long on MachO-derived environments, NetBSD and > Bitrig. > +// size_t is unsigned long on MachO-derived environments, NetBSD, > +// OpenBSD and Bitrig. > if (T.isOSBinFormatMachO() || T.getOS() == llvm::Triple::NetBSD || > +T.getOS() == llvm::Triple::OpenBSD || > T.getOS() == llvm::Triple::Bitrig) >SizeType = UnsignedLong; > else > @@ -4284,6 +4286,7 @@ class ARMTargetInfo : public TargetInfo > > switch (T.getOS()) { > case llvm::Triple::NetBSD: > +case llvm::Triple::OpenBSD: >WCharType = SignedInt; >break; > case llvm::Triple::Win32: > @@ -4475,6 +4478,7 @@ public: > > switch (getTriple().getOS()) { > case llvm::Triple::NetBSD: > +case llvm::Triple::OpenBSD: >PtrDiffType = SignedLong; >break; > default: >