Code Monkey home page Code Monkey logo

Comments (10)

idubrov avatar idubrov commented on July 19, 2024

I guess you are trying to build it on Mac OS X. As far as I remember, Java 8 build scripts are not quite compatible with latest clang. You need to install gcc and somehow tell build scripts to use it (unfortunately, I don't remember how I did that).

from dcevm.

wmitchellUK avatar wmitchellUK commented on July 19, 2024

Ivan,

Correct .. I am on OSX Mavericks
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)

I'll take a look and if I get it working ill post my approach here.
Thanks
Will

from dcevm.

mdaniel avatar mdaniel commented on July 19, 2024
brew install gcc  # https://github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb
PATH=/usr/local/opt/gcc/bin:$PATH
export CPP="gcc-4.9 -E"
export CC=gcc-4.9
export CXX=g++-4.9

One might need to override NM and RANLIB, too, but that should get you started. These values are fresh in my mind from a recent attempt to compile OpenJDK8; FWIW, OpenJDK9 builds successfully under clang, so help is on the way. :-)

from dcevm.

lynx-r avatar lynx-r commented on July 19, 2024

I got this errors while compile DCEVM with suggested compiler and ENV variables

13:52:34.445 [INFO] [system.out] Making SA debugger back-end...
13:52:34.445 [INFO] [system.out] gcc-4.9 -Damd64 -D_GNU_SOURCE
13:52:34.446 [INFO] [system.out] -m64 -Wl,-install_name,@rpath/libsaproc.dylib -dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 -fPIC -fPIC
13:52:34.447 [INFO] [system.out] -I/Users/alekspo/SDKs/dcevm/hotspot/agent/src/os/bsd
13:52:34.448 [INFO] [system.out] -I../generated
13:52:34.448 [INFO] [system.out] -I/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre/../include/darwin -I/System/Library/Frameworks/JavaVM.framework/Headers
13:52:34.450 [INFO] [system.out] /Users/alekspo/SDKs/dcevm/hotspot/agent/src/os/bsd/symtab.c /Users/alekspo/SDKs/dcevm/hotspot/agent/src/os/bsd/libproc_impl.c /Users/alekspo/SDKs/dcevm/hotspot/agent/src/os/bsd/ps_core.c /Users/alekspo/SDKs/dcevm/hotspot/agent/src/os/bsd/MacosxDebuggerLocal.m /Users/alekspo/SDKs/dcevm/hotspot/agent/src/share/native/sadis.c
13:52:34.451 [INFO] [system.out]
13:52:34.452 [INFO] [system.out]
13:52:34.452 [INFO] [system.out] -o libsaproc.dylib
13:52:34.453 [INFO] [system.out] -g -framework Foundation -F/System/Library/Frameworks/JavaVM.framework/Frameworks -framework JavaNativeFoundation -framework Security -framework CoreFoundation
13:52:35.408 [ERROR] [system.err] In file included from /usr/include/os/object.h:75:0,
13:52:35.409 [ERROR] [system.err] from /usr/include/dispatch/dispatch.h:48,
13:52:35.410 [ERROR] [system.err] from /System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h:15,
13:52:35.410 [ERROR] [system.err] from /System/Library/Frameworks/CoreFoundation.framework/Headers/CFPropertyList.h:13,
13:52:35.411 [ERROR] [system.err] from /System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:55,
13:52:35.411 [ERROR] [system.err] from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6,
13:52:35.412 [ERROR] [system.err] from /Users/alekspo/SDKs/dcevm/hotspot/agent/src/os/bsd/MacosxDebuggerLocal.m:26:
13:52:35.412 [ERROR] [system.err] /usr/include/objc/NSObject.h:22:4: error: unknown type name 'instancetype'
13:52:35.413 [ERROR] [system.err] - (instancetype)self;
13:52:35.413 [ERROR] [system.err] ^
13:52:35.414 [ERROR] [system.err] /usr/include/objc/NSObject.h:36:4: error: unknown type name 'instancetype'
13:52:35.415 [ERROR] [system.err] - (instancetype)retain OBJC_ARC_UNAVAILABLE;
13:52:35.415 [ERROR] [system.err] ^
13:52:35.416 [ERROR] [system.err] /usr/include/objc/NSObject.h:38:4: error: unknown type name 'instancetype'
13:52:35.417 [ERROR] [system.err] - (instancetype)autorelease OBJC_ARC_UNAVAILABLE;
13:52:35.417 [ERROR] [system.err] ^
13:52:35.418 [ERROR] [system.err] /usr/include/objc/NSObject.h:60:4: error: unknown type name 'instancetype'
13:52:35.419 [ERROR] [system.err] - (instancetype)init;
13:52:35.420 [ERROR] [system.err] ^
13:52:35.421 [ERROR] [system.err] /usr/include/objc/NSObject.h:62:4: error: unknown type name 'instancetype'
13:52:35.422 [ERROR] [system.err] + (instancetype)new;
13:52:35.423 [ERROR] [system.err] ^
13:52:35.423 [ERROR] [system.err] /usr/include/objc/NSObject.h:63:4: error: unknown type name 'instancetype'

from dcevm.

idubrov avatar idubrov commented on July 19, 2024

It seems like this issue is caused by gcc not understanding "instancetype" (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63651) introduced in Yosemite.

from dcevm.

idubrov avatar idubrov commented on July 19, 2024

Try setting env. variables before compiling:

export CFLAGS=-Dinstancetype=id
export CXXFLAGS=-Dinstancetype=id

before running compilation.

from dcevm.

lynx-r avatar lynx-r commented on July 19, 2024

No changes.

from dcevm.

mdaniel avatar mdaniel commented on July 19, 2024

I'm rebuilding brew install gcc now, as they have moved to 5.1.0 (which is a bit higher than the 4.9.2 mentioned in the bug). It's, uh, taking a while but I'll report back with my findings

I also briefly looked around to see if there was any Vagrant support for PureDarwin and it seems not, both because Vagrant is targeting Vmware Fusion (not VirtualBox) and because PureDarwin has stalled out.

from dcevm.

mdaniel avatar mdaniel commented on July 19, 2024

I have fixed the jdk7 build (light, full, fastdebug and product) such that it works with clang 6.1.0 and the headers found in Yosemite; I can't get the jdk8u45 or 8u40 branch to build with either clang or gcc, citing linkage errors pretty early on:

Undefined symbols for architecture x86_64:
  "std::ostream::operator<<(int)", referenced from:
      printline(std::ostream&, char const*, int, char const*, int, int) in filebuff.o
  "std::ios_base::Init::Init()", referenced from:
      ___cxx_global_var_init in adlparse.o
      ___cxx_global_var_init in archDesc.o
      ___cxx_global_var_init in arena.o
      ___cxx_global_var_init in dfa.o
      ___cxx_global_var_init in dict2.o
      ___cxx_global_var_init in filebuff.o
      ___cxx_global_var_init in forms.o
      ...
  "std::ios_base::Init::~Init()", referenced from:
      ___cxx_global_var_init in adlparse.o
      ___cxx_global_var_init in archDesc.o
      ___cxx_global_var_init in arena.o
      ___cxx_global_var_init in dfa.o
      ___cxx_global_var_init in dict2.o
      ___cxx_global_var_init in filebuff.o
      ___cxx_global_var_init in forms.o
      ...
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      FileBuffRegion::print(std::ostream&) in filebuff.o
      printline(std::ostream&, char const*, int, char const*, int, int) in filebuff.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)", referenced from:
      printline(std::ostream&, char const*, int, char const*, int, int) in filebuff.o
      expandtab(std::ostream&, int, char, char, char) in filebuff.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

However, please try my branch and see if it builds jdk7 for you as well. If so, I'll open a PR for it; if not, I'll beat on this problem some more.

from dcevm.

AbsoluteZero-CHN avatar AbsoluteZero-CHN commented on July 19, 2024

I encountered the same problem on Ubuntu 16.04.

This is my exception log:

01:25:36.309 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[main,5,main]] finished, busy: 0.303 secs, idle: 0.001 secs
01:25:36.313 [ERROR] [org.gradle.BuildExceptionReporter]
01:25:36.314 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
01:25:36.315 [ERROR] [org.gradle.BuildExceptionReporter]
01:25:36.315 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
01:25:36.315 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':hotspot:compileProduct'.
01:25:36.315 [ERROR] [org.gradle.BuildExceptionReporter] > Process 'command 'make'' finished with non-zero exit value 2
01:25:36.316 [ERROR] [org.gradle.BuildExceptionReporter]
01:25:36.316 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
01:25:36.316 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':hotspot:compileProduct'.
01:25:36.316 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
01:25:36.317 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
01:25:36.317 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
01:25:36.318 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
01:25:36.318 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
01:25:36.318 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
01:25:36.318 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
01:25:36.319 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
01:25:36.319 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
01:25:36.319 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:310)
01:25:36.320 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
01:25:36.320 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
01:25:36.320 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
01:25:36.320 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
01:25:36.320 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)
01:25:36.321 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
01:25:36.321 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
01:25:36.321 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
01:25:36.321 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)
01:25:36.322 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
01:25:36.322 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
01:25:36.322 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)
01:25:36.322 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
01:25:36.322 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
01:25:36.322 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
01:25:36.325 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:90)
01:25:36.326 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
01:25:36.326 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
01:25:36.326 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
01:25:36.326 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
01:25:36.327 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:50)
01:25:36.327 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:27)
01:25:36.327 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:40)
01:25:36.328 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:169)
01:25:36.328 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
01:25:36.328 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
01:25:36.330 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
01:25:36.330 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
01:25:36.330 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
01:25:36.330 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
01:25:36.330 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
01:25:36.331 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
01:25:36.331 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.Main.doAction(Main.java:33)
01:25:36.331 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
01:25:36.331 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
01:25:36.333 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
01:25:36.334 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
01:25:36.334 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
01:25:36.334 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
01:25:36.334 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
01:25:36.334 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: org.gradle.process.internal.ExecException: Process 'command 'make'' finished with non-zero exit value 2
01:25:36.335 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:365)
01:25:36.335 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:31)
01:25:36.335 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.tasks.AbstractExecTask.exec(AbstractExecTask.java:54)
01:25:36.335 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
01:25:36.336 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226)
01:25:36.336 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219)
01:25:36.336 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208)
01:25:36.336 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:589)
01:25:36.337 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:572)
01:25:36.337 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
01:25:36.337 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
01:25:36.337 [ERROR] [org.gradle.BuildExceptionReporter] ... 49 more
01:25:36.338 [ERROR] [org.gradle.BuildExceptionReporter]
01:25:36.338 [LIFECYCLE] [org.gradle.BuildResultLogger]
01:25:36.338 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED
01:25:36.338 [LIFECYCLE] [org.gradle.BuildResultLogger]
01:25:36.339 [LIFECYCLE] [org.gradle.BuildResultLogger] Total time: 2.735 secs
01:25:36.339 [DEBUG] [org.gradle.api.internal.tasks.compile.daemon.CompilerDaemonManager] Stopping 0 compiler daemon(s).
01:25:36.340 [INFO] [org.gradle.api.internal.tasks.compile.daemon.CompilerDaemonManager] Stopped 0 compiler daemon(s).

The output log is too simple and no valid clues were found.

from dcevm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.