From 60e3bc4581f9035135bdc9c4cf3516dffff37be7 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Tue, 28 Feb 2023 21:35:50 -0500 Subject: [PATCH 1/2] os.h: Also check for uppercase PPC64 define --- internal/c/os.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/c/os.h b/internal/c/os.h index 869121445..f66ce4381 100644 --- a/internal/c/os.h +++ b/internal/c/os.h @@ -34,7 +34,7 @@ #error "Unknown system; refusing to build. Edit os.h if needed" #endif -#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__) || defined(QB64_MACOSX) || defined(__aarch64__) +#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(QB64_MACOSX) || defined(__aarch64__) #define QB64_64 #else #define QB64_32 From 7ad1aac065de4ecc6ed9a073a46575b36b906975 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Tue, 28 Feb 2023 21:37:09 -0500 Subject: [PATCH 2/2] Derive objcopy arguments from GNU ld output --- internal/c/makedat_lnx32.txt | 1 - internal/c/makedat_lnx64.txt | 3 --- source/qb64.bas | 27 ++++++++++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) delete mode 100644 internal/c/makedat_lnx32.txt delete mode 100644 internal/c/makedat_lnx64.txt diff --git a/internal/c/makedat_lnx32.txt b/internal/c/makedat_lnx32.txt deleted file mode 100644 index 720a285fa..000000000 --- a/internal/c/makedat_lnx32.txt +++ /dev/null @@ -1 +0,0 @@ -objcopy -Ibinary -Oelf32-i386 -Bi386 \ No newline at end of file diff --git a/internal/c/makedat_lnx64.txt b/internal/c/makedat_lnx64.txt deleted file mode 100644 index e9f2ae606..000000000 --- a/internal/c/makedat_lnx64.txt +++ /dev/null @@ -1,3 +0,0 @@ -objcopy -Ibinary -Oelf64-x86-64 -Bi386:x86-64 - - diff --git a/source/qb64.bas b/source/qb64.bas index 0b5c654ef..8f8b813b1 100644 --- a/source/qb64.bas +++ b/source/qb64.bas @@ -13123,9 +13123,30 @@ IF os$ = "LNX" THEN IF inline_DATA = 0 THEN IF DataOffset THEN - IF INSTR(_OS$, "[32BIT]") THEN b$ = "32" ELSE b$ = "64" - OPEN ".\internal\c\makedat_lnx" + b$ + ".txt" FOR BINARY AS #150: LINE INPUT #150, a$: CLOSE #150 - a$ = a$ + " " + tmpdir2$ + "data.bin " + tmpdir2$ + "data.o" + SHELL _HIDE "ld --verbose >internal/temp/ld-output.txt" + OPEN "internal/temp/ld-output.txt" FOR BINARY AS #150 + DO UNTIL EOF(150) + LINE INPUT #150, a$ + IF LEN(a$) THEN + s$ = "OUTPUT_FORMAT(" + CHR$(34) + x1 = INSTR(a$, s$) + IF x1 THEN + x1 = x1 + LEN(s$) + x2 = INSTR(x1, a$, CHR$(34)) + format$ = MID$(a$, x1, x2 - x1) + ELSE + s$ = "OUTPUT_ARCH(" + x1 = INSTR(a$, s$) + IF x1 THEN + x1 = x1 + LEN(s$) + x2 = INSTR(x1, a$, ")") + architecture$ = MID$(a$, x1, x2 - x1) + END IF + END IF + END IF + LOOP + CLOSE #150 + a$ = "objcopy -Ibinary -O" + format$ + " -B" + architecture$ + " " + tmpdir2$ + "data.bin " + tmpdir2$ + "data.o" CHDIR ".\internal\c" SHELL _HIDE a$ + " 2>> ../../" + compilelog$ CHDIR "..\.."