问题标签 [ellcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
161 浏览

llvm - 指向一个很好的交叉编译工具链程序测试套件的指针?

我想为我的基于 clang/LLVM 的ELLCC交叉编译器项目找到一个不错的测试套件。我需要的是一堆程序来编译。例如,今天我为我支持的目标交叉编译了 tcsh:arm、armeb、i386、microblaze、mips、mipsel、ppc 和 x86_64。所有的 Linux 二进制文件都运行了。

我使用了 NetBSD pkgsrc 的东西,看看我是否可以在交叉编译环境中使用它,它接近我想要的,但需要一些工作才能无缝使用它。我的主机系统是 Linux,目前所有的目标也是 Linux。

除了单独下载每个包、配置和构建之外,还有什么建议吗?

0 投票
2 回答
4215 浏览

macos - 构建 ELLCC 时出错

从 ELLCC运行build脚本会导致此错误

以下编译器已用于相同的结果:

  • 海合会 4.8
  • llvm-gcc 2.8
  • llvm 3.3
0 投票
1 回答
1707 浏览

assembly - 如何设置 ARM 堆栈帧以便 GDB 可以遍历它?

我正在做一个小项目,在裸机(无操作系统)上为 ARM 使用 Linux 标准 C 库。我使用 qemu-system-arm 作为执行平台,使用 GDB 进行调试。我编写了一个小系统调用处理程序来处理 C 库进行的 SVC 调用,但我感到困惑的是,即使 SVC 处理程序可以,我未处理的系统调用函数也无法将堆栈遍历回调用者。处理程序代码是:

如果我在 __in_syscall 处设置断点,我可以很好地看到堆栈帧。如果我通过分支或间接通过 SVC_Table 中的指针进入 Unhandled_SVC,即使程序正确执行,GDB 也会混淆显示堆栈帧。

我错过了什么?

这是我的ELLCC 嵌入式编译器项目的一部分,完整的源代码在这里

0 投票
1 回答
167 浏览

arm - ecc 引发链接器错误

我已经下载了 ELLCC 二进制文件(Windows、MinGW)。我正在尝试组装和链接一个非常简单的 IR 文件。

对于x86_64-ellcc-windows-gnu,它工作正常。对于armv7-ellcc-linux( arm-linux-engeabi) 和任何其他 ARM 目标,它会引发类似于以下的链接器错误:

"V:\Users\Teo\Downloads\ellcc-x86_64-w64-mingw32-0.1.12\bin/ecc-ld.exe" -n ostdlib "-LV:\Users\Teo\Downloads\ellcc-x86_64-w64- mingw32-0.1.12\bin\..\ libecc/lib/arm-linux-engeabi" -m armelf_linux_eabi --build-id --hash-style=gnu - -eh-frame-hdr -o a.out -e开始 -Bstatic "V:\Users\Teo\Downloads\ellcc-x86 64-w64-mingw32-0.1.12\bin\..\libecc/lib/arm-linux-engeabi/crt1.o" "V:\Users \ \Teo\Downloads\ellcc-x86_64-w64-mingw32-0.1.12\bin\..\libecc/lib/arm-linux-engeabi/crtbegin.o" "C:\Users\Teo\AppData\Local\Temp \Int32Add-42cacb.o" -( -lc -lcompiler-rt -) "V:\Users\Teo\Downloads\ellcc-x86_64-w64-mingw32-0.1.1 2\bin\..\libecc/lib/arm -linux-engeabi/crtend.o" C:\Users\Teo\AppData\Local\Temp\Int32Add-42cacb.o:(.ARM.exidx+0x0):未定义对“__aeabi_unwind_cpp_pr0”的引用

在阅读了有关类似问题的另一个答案后,我怀疑链接顺序错误,因此运行时未正确链接。

但是我将如何修复链接顺序 - 或者实际上是什么问题 - 因为链接器是由调用的ecc?有没有理由ecc不自动处理这个问题(特别是因为我只给它一个 IR 文件来编译)?

0 投票
1 回答
575 浏览

arm - 在 Raspberry Pi 上运行简单的 ELLCC 生成的 ELF 二进制文件时的非法指令

我在 LLVM IR 中有一个空程序:

我使用 ELLCC 在 Intel x86-64 Windows for ARM Linux 上交叉编译它,使用以下命令:

它没有错误地完成并生成一个 ELF 二进制文件。

当我将二进制文件带到 Raspberry Pi Model B+(运行 Raspbian)时,我只收到以下错误:

我不知道如何从反汇编代码中判断出什么问题。我尝试了其他 ARM Linux 目标,但行为相同。怎么了?


同样使用 ELLCC 工具链,对于其他目标(如 , 等)(我可以测试),i386-linux-eng完全相同的文件构建、链接和运行良好。x86_64-w64-mingw32


假设库和启动代码没有问题,这就是反汇编main本身的样子:

0 投票
1 回答
425 浏览

c++ - 使用 ELLCC 从 OS X 交叉编译到 ARM

我正在尝试将 C++(14) 项目从 OS X 交叉编译到 ARM,以便在 Cortex-M4 芯片上运行。ELLCC项目似乎可以用于此目的,所以这就是我所做的:

  1. 设置一个简单的测试文件 ( main.cpp),如下所示:

    /li>
  2. 从http://ellcc.org/releases下载最新版本的 ELLCC for OS X。下载需要一段时间,但完成后我解压缩生成的 tarball,我的沙箱看起来像:

    /li>
  3. 用于ecc++(尝试)交叉编译:

    /li>

不幸的是,ecc++无法找到cstddef标题:

第一个问题:我错过了什么?这不应该开箱即用吗?

为了解决缺少头文件的问题,我手动调整编译器的头文件搜索路径,添加-isystem ellcc/libecc/include/c++. ecc++现在找到了<cstddef>,但找不到bits/alltypes.h

不放弃,我再次通过添加手动调整标题搜索路径 -isystem ellcc/libecc/include/arm。但现在我收到一个链接错误:

输出很长,所以我在这里只包括了相关的部分。完整的输出在这里

第二个问题:为什么不链接?

请注意,我已经arm-none-eabi-gcc安装了,我相信这就是为什么ecc++使用它来链接而不是使用 ELLCC 本身提供的链接器。我不能arm-none-eabi-gcc用作前端,因为它对 C++14 的支持是错误的,而且我正在做一些严肃的元编程。

谢谢你的帮助。

0 投票
2 回答
171 浏览

c - ELLCC 嵌入式 LLVM 编译因针对 Thumb2 Cortex-M0 的某些 asm 指令而失败

在 Gnu G++ 中成功使用的已知有效指令在此处对 Freescale MKL16Z Cortex-M0+ Thumb2 造成了一些错误

编码:

编译命令:

提示赞赏!我想知道我是否可以使用更简单的指令将 asm 重写为某种东西……它似乎不喜欢立即值编码?我不擅长组装。