如何构建在结构中强制打包的gcc

如何构建在结构中强制打包的gcc,gcc,arm,Gcc,Arm,我们将GCC4.4.6用于ARM(使用rtems 4.10的东西进行了修补)。它是在很久以前建造的,没有文档记录它是如何建造的。它强制结构中的填充。我们需要修改newlib并重建gcc。首先,我构建了工具链(newlib尚未修改),并尝试在我们的系统中运行应用程序。由于结构中的数据对齐,它无法正常工作。我确保传递了与旧gcc相同的配置选项(我通过运行gcc-v--help检索它们)。有人知道如何在结构中使用强制打包构建gcc吗。-fpack struct选项或packed属性不是我的解决方案。

我们将GCC4.4.6用于ARM(使用rtems 4.10的东西进行了修补)。它是在很久以前建造的,没有文档记录它是如何建造的。它强制结构中的填充。我们需要修改newlib并重建gcc。首先,我构建了工具链(newlib尚未修改),并尝试在我们的系统中运行应用程序。由于结构中的数据对齐,它无法正常工作。我确保传递了与旧gcc相同的配置选项(我通过运行gcc-v--help检索它们)。有人知道如何在结构中使用强制打包构建gcc吗。-fpack struct选项或packed属性不是我的解决方案。 干杯
马瑞克

我想出来了。我需要用8初始化msstructure size boundary选项(在gcc-4.4.6/gcc/config.arm/arm.opt中):

并重建工具链。msstructure size boundary指定结构的最小位对齐。ARM平台的默认值为32。 干杯
马雷克

那么
规格
呢?gcc-dumpspecs>specs您可以使用crosstool ng构建自己的gcc,并根据需要进行自定义。相当琐碎。为什么要跨编译域使用结构?@Severin Pappadeux规范在这两种情况下都是相同的:@old_timer你是什么意思?你最好构建一个更新版本的GCC,即。它已经进化了很多。你已经在cpu中禁用了对齐检查,并且可以忍受性能的影响?@old_timer这是我从一开始就准备接受的权衡。
mstructure-size-boundary=
Target RejectNegative Joined Var(structure_size_string) Init("8")