Message ID | 20240722173136.412283-1-wdouglass@carnegierobotics.com |
---|---|
State | Accepted |
Headers | show |
Series | package/chicken: move literals into text section for xtensa architecture | expand |
Hello Woodrow, On Mon, 22 Jul 2024 13:31:36 -0400 Woodrow Douglass via buildroot <buildroot@buildroot.org> wrote: > This solves a build problem -- by default xtensa-gcc puts literals in a > different section of memory then the program text, and chicken is a very > literal-heavy program, so they don't all fit there. This avoids that problem. > > Signed-off-by: Woodrow Douglass <wdouglass@carnegierobotics.com> Thanks, I have applied your patch, with a few fixes. First, I've added a reference to an autobuilder failure fixed by this patch, as follows: """ Fixes: http://autobuild.buildroot.net/results/ce36170d67c4702f34bee025d8a46e5269c4573e/ """ > -# If ARCH is not set, it attempts to autodiscover. But it is anyway not used. > +#Chicken only uses the "arch" variable for some special-case compile arguments > +#If it's empty, it tries to detect the arch host > +#Filter out values that have an effect, or pass "unused" here We always put a space after the # sign starting a comment. > +ifeq ($(BR2_NORMALIZED_ARCH),"x86_64") I've used $(NORMALIZED_ARCH) instead, which already has double quotes stripped, so instead of "x86_64" we can use just x86_64. > +CHICKEN_ARCH="x86-64" Spaces around = sign, no double quotes around x86-64. > +else ifeq ($(BR2_NORMALIZED_ARCH),"xtensa") > +CHICKEN_ARCH="xtensa" > +else > +CHICKEN_ARCH="unused" > +endif > + > CHICKEN_MAKE_OPTS = \ > - ARCH=unused \ > + ARCH=$(CHICKEN_ARCH) \ and instead, used ARCH="$(CHICKEN_ARCH)" here Thanks a lot! Thomas
diff --git a/package/chicken/0001-xtensa-text-section-literals.patch b/package/chicken/0001-xtensa-text-section-literals.patch new file mode 100644 index 0000000000..b93aaf9e21 --- /dev/null +++ b/package/chicken/0001-xtensa-text-section-literals.patch @@ -0,0 +1,30 @@ +From e8d177f4d4e1c6bc41787ea1621e323ff4ad493e Mon Sep 17 00:00:00 2001 +From: Woodrow Douglass <wdouglass@carnegierobotics.com> +Date: Mon, 22 Jul 2024 08:50:37 -0400 +Subject: [PATCH] Move literals into text section for xtensa architecture + +Upstream: https://bugs.call-cc.org/ticket/1840 +Signed-off-by: Woodrow Douglass <wdouglass@carnegierobotics.com> +--- + Makefile.linux | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Makefile.linux b/Makefile.linux +index b628cda4..e97c2b94 100644 +--- a/Makefile.linux ++++ b/Makefile.linux +@@ -52,6 +52,11 @@ USES_SONAME = yes + + # architectures + ++ifeq ($(ARCH),xtensa) ++C_COMPILER_OPTIONS += -mtext-section-literals ++LINKER_OPTIONS += -mtext-section-literals ++endif ++ + ifeq ($(ARCH),x32) + C_COMPILER_OPTIONS += -mx32 + LINKER_OPTIONS += -mx32 +-- +2.39.2 + diff --git a/package/chicken/chicken.mk b/package/chicken/chicken.mk index 2667f7823d..72d203b9bd 100644 --- a/package/chicken/chicken.mk +++ b/package/chicken/chicken.mk @@ -11,9 +11,19 @@ CHICKEN_LICENSE_FILES = LICENSE CHICKEN_CPE_ID_VENDOR = call-cc CHICKEN_INSTALL_STAGING = YES -# If ARCH is not set, it attempts to autodiscover. But it is anyway not used. +#Chicken only uses the "arch" variable for some special-case compile arguments +#If it's empty, it tries to detect the arch host +#Filter out values that have an effect, or pass "unused" here +ifeq ($(BR2_NORMALIZED_ARCH),"x86_64") +CHICKEN_ARCH="x86-64" +else ifeq ($(BR2_NORMALIZED_ARCH),"xtensa") +CHICKEN_ARCH="xtensa" +else +CHICKEN_ARCH="unused" +endif + CHICKEN_MAKE_OPTS = \ - ARCH=unused \ + ARCH=$(CHICKEN_ARCH) \ C_COMPILER="$(TARGET_CC)" \ CXX_COMPILER="$(TARGET_CXX)" \ PREFIX=/usr \
This solves a build problem -- by default xtensa-gcc puts literals in a different section of memory then the program text, and chicken is a very literal-heavy program, so they don't all fit there. This avoids that problem. Signed-off-by: Woodrow Douglass <wdouglass@carnegierobotics.com> --- .../0001-xtensa-text-section-literals.patch | 30 +++++++++++++++++++ package/chicken/chicken.mk | 14 +++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 package/chicken/0001-xtensa-text-section-literals.patch