[cfe-dev] netbsd & gcc 4.6 triple

James K. Lowden jklowden at schemamania.org
Mon Apr 23 20:00:22 PDT 2012


On Mon, 23 Apr 2012 22:30:24 -0400
"James K. Lowden" <jklowden at schemamania.org> wrote:

> I am building Clang 3.0.99 with gcc 4.6.  The message below suggests
> Triple.cpp is confused.  The enumerated type "NetBSD" should be
> defined in the enum in Triple.h on line 93.  The message says that
> its value is 199905, which appears to come from the preprocessor.
> That string is used in places like config.guess.  

The preprocessed code confirms the problem:

const char *Triple::getOSTypeName(OSType Kind) {
  switch (Kind) {
  case UnknownOS: return "unknown";

  case AuroraUX: return "auroraux";
  case Cygwin: return "cygwin";
  case Darwin: return "darwin";
  case DragonFly: return "dragonfly";
  case FreeBSD: return "freebsd";
  case IOS: return "ios";
  case KFreeBSD: return "kfreebsd";
  case Linux: return "linux";
  case Lv2: return "lv2";
  case MacOSX: return "macosx";
  case MinGW32: return "mingw32";
  case 199905: return "netbsd";
  case OpenBSD: return "openbsd";
  case Solaris: return "solaris";
  case Win32: return "win32";
  case Haiku: return "haiku";
  case Minix: return "minix";
  case RTEMS: return "rtems";
  case NativeClient: return "nacl";
  case CNK: return "cnk";
  }

  __builtin_unreachable();
}

One other point of information: the value 199905 is fixed in the NetBSD
headers, which include a cautionary note to use "__NetBSD_Version__"
instead of "NetBSD".  

--jkl

> 
> It would be nice if "199905" appeared in a header somewhere, but no.
> Any suggestions for how to track it down?  
> 
> Error message follows.  Thanks.  
> 
> --jkl
> 
> llvm[1]: Compiling Triple.cpp for Release build
> Triple.cpp: In static member function 'static const char*
> llvm::Triple::getOSTypeName(llvm::Triple::OSType)': 
> Triple.cpp:99:10: warning: enumeration value 'NetBSD' not 
> 	handled in switch [-Wswitch] 
> Triple.cpp:113:3: warning: case value '199905' not in 
> 	enumerated type 'llvm::Triple::OSType' [-Wswitch] 
> Triple.cpp: In function 'llvm::Triple::OSType 
> 	parseOS (llvm::StringRef)': 
> Triple.cpp:282:35: error: expected unqualified-id before 
> 	numeric constant 
> Triple.cpp:292:1: warning: control reaches end of 
> 	non-void function [-Wreturn-type]
> rm: /usr/pkgsrc/wip/clang/work/llvm/lib/Support/Release/Triple.d.tmp:
> 	No such file or directory 
> gmake[1]: ***
> [/usr/pkgsrc/wip/clang/work/llvm/lib/Support/Release/Triple.o] Error 1
> gmake[1]: Leaving directory
> `/usr/pkgsrc/wip/clang/work/llvm/lib/Support' gmake: *** [all] Error 1
> *** Error code 2
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev



More information about the cfe-dev mailing list