Skip to content
This repository has been archived by the owner on Jan 7, 2022. It is now read-only.

Compile for other architectures #6

Open
IsaacMvmv opened this issue Sep 14, 2021 · 3 comments
Open

Compile for other architectures #6

IsaacMvmv opened this issue Sep 14, 2021 · 3 comments

Comments

@IsaacMvmv
Copy link

IsaacMvmv commented Sep 14, 2021

I dont know about c
Im a noob programmer
Just i'm asking

I want to compile for x86_64 architecture for no reason( just want to run with my pc mcpi ...) and first: cmake
Of course it had to give errors so I modified CMakeLists.txt to NoT run arm toolchain in cmake/building

Output:

-- The C compiler identification is Clang 12.0.1
-- The CXX compiler identification is Clang 12.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at build/_deps/zlib-src/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - done
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Renaming
--    ./_deps/zlib-src/zconf.h
-- to 'zconf.h.included' because this file is included with zlib
-- but CMake generates it automatically in the build directory.
CMake Deprecation Warning at build/_deps/libpng-src/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Deprecation Warning at build/_deps/libpng-src/CMakeLists.txt:1 (cmake_minimum_required):
  The OLD behavior for policy CMP0054 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


-- Found ZLIB: zlib
-- Configuring done
-- Generating done
-- Build files have been written to: . :D

I have renamed $PWD to . to... protect? idk like protecting some useless

next: make

Seems like it is solved, true?

NO

make -j16 (yes, let me change pc by small beast)

Output:

❯ make -j16
[  1%] Building C object launcher/CMakeFiles/launcher.dir/src/bootstrap.c.o
[  2%] Building CXX object launcher/CMakeFiles/launcher.dir/src/client/launcher.cpp.o
[  2%] Building C object media-layer/stubs/CMakeFiles/GLESv1_CM.dir/src/GLESv1_CM.c.o
[  2%] Building C object media-layer/stubs/CMakeFiles/bcm_host.dir/src/bcm_host.c.o
[  3%] Building CXX object launcher/CMakeFiles/launcher.dir/src/ldconfig.cpp.o
[  3%] Building C object mods/CMakeFiles/readdir.dir/src/readdir/readdir.c.o
[  3%] Building C object media-layer/stubs/CMakeFiles/EGL.dir/src/EGL.c.o
[  4%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/compress.o
[  4%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/adler32.o
[  5%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzclose.o
[  6%] Building C object libreborn/CMakeFiles/reborn.dir/src/reborn.c.o
[  6%] Building C object media-layer/stubs/CMakeFiles/X11.dir/src/X11.c.o
[  8%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/png.o
[  8%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/adler32.o
[ 10%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/crc32.o
[ 10%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/deflate.o
[ 11%] Linking C shared library libbcm_host.so
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:13:2: error: "Patching Code Is ARM Only"
#error "Patching Code Is ARM Only"
 ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:22: error: cast to smaller integer type 'int32_t' (aka 'int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                     ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:37: error: cast to smaller integer type 'int32_t' (aka 'int') from 'unsigned char *' [-Werror,-Wpointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                                    ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:127:72: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
        ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
                                                                       ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/include/libreborn/log.h:9:96: note: expanded from macro 'ERR'
#define ERR(format, ...) { fprintf(stderr, "[ERR]: (%s:%i): " format "\n", __FILE__, __LINE__, __VA_ARGS__); exit(EXIT_FAILURE); }
                                                                                               ^~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:149:10: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    if (((uint32_t) start) % 4 != 0) {
         ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:171:5: error: implicit declaration of function '__clear_cache' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    __clear_cache(start, (void *) end);
    ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:176:21: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    uint32_t addr = (uint32_t) target;
                    ^~~~~~~~~~~~~~~~~
7 errors generated.
make[2]: *** [libreborn/CMakeFiles/reborn.dir/build.make:76: libreborn/CMakeFiles/reborn.dir/src/reborn.c.o] Error 1
[ 11%] Linking C shared library libreaddir.so
make[1]: *** [CMakeFiles/Makefile2:617: libreborn/CMakeFiles/reborn.dir/all] Error 2
make[1]: *** Se espera a que terminen otras tareas....
[ 12%] Linking C shared library libGLESv1_CM.so
[ 12%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngerror.o
[ 13%] Linking C shared library libEGL.so
[ 13%] Linking C shared library libX11.so
[ 13%] Built target bcm_host
[ 14%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzlib.o
[ 15%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzread.o
[ 16%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngget.o
[ 16%] Built target readdir
[ 17%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngmem.o
[ 17%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngpread.o
[ 17%] Built target GLESv1_CM
[ 17%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzwrite.o
[ 18%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/compress.o
[ 18%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/crc32.o
[ 18%] Built target X11
[ 18%] Built target EGL
[ 19%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/inflate.o
[ 20%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/infback.o
[ 20%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/inftrees.o
[ 21%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngread.o
[ 22%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/deflate.o
[ 23%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzclose.o
[ 24%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngrio.o
[ 25%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/inffast.o
[ 26%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/trees.o
[ 26%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/uncompr.o
[ 27%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/zutil.o
[ 27%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzlib.o
[ 28%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzread.o
[ 29%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzwrite.o
[ 29%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngrtran.o
[ 30%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngrutil.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngset.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngtrans.o
[ 32%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwio.o
[ 32%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/inflate.o
[ 33%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwrite.o
[ 33%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwtran.o
[ 34%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/infback.o
[ 35%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/inftrees.o
[ 36%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwutil.o
[ 36%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/inffast.o
[ 37%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/trees.o
[ 38%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/uncompr.o
[ 38%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/zutil.o
[ 39%] Linking C static library libz.a
[ 39%] Built target zlibstatic
[ 40%] Linking C shared library libz.so
[ 41%] Linking CXX executable launcher
[ 41%] Built target zlib
[ 41%] Built target launcher
[ 42%] Linking C static library libpng12.a
[ 42%] Built target png12_static
make: *** [Makefile:136: all] Error 2

now only make to make output "clean"

output:

❯ make
Consolidate compiler generated dependencies of target zlib
[ 11%] Built target zlib
[ 12%] Building C object _deps/zlib-build/CMakeFiles/example64.dir/test/example.o
[ 12%] Linking C executable example64
[ 12%] Built target example64
[ 13%] Building C object _deps/zlib-build/CMakeFiles/minigzip.dir/test/minigzip.o
[ 13%] Linking C executable minigzip
[ 13%] Built target minigzip
[ 13%] Building C object _deps/zlib-build/CMakeFiles/example.dir/test/example.o
[ 14%] Linking C executable example
[ 14%] Built target example
Consolidate compiler generated dependencies of target zlibstatic
[ 25%] Built target zlibstatic
[ 26%] Building C object _deps/zlib-build/CMakeFiles/minigzip64.dir/test/minigzip.o
[ 27%] Linking C executable minigzip64
[ 27%] Built target minigzip64
[ 27%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/png.o
[ 28%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngerror.o
[ 29%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngget.o
[ 29%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngmem.o
[ 30%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngpread.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngread.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngrio.o
[ 32%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngrtran.o
[ 32%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngrutil.o
[ 33%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngset.o
[ 34%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngtrans.o
[ 34%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwio.o
[ 35%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwrite.o
[ 36%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwtran.o
[ 36%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwutil.o
[ 37%] Linking C shared library libpng12.so
[ 37%] Built target png12
[ 37%] Building C object _deps/libpng-build/CMakeFiles/pngtest.dir/pngtest.o
[ 38%] Linking C executable pngtest
[ 38%] Built target pngtest
Consolidate compiler generated dependencies of target png12_static
[ 49%] Built target png12_static
Consolidate compiler generated dependencies of target reborn
[ 50%] Building C object libreborn/CMakeFiles/reborn.dir/src/reborn.c.o
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:13:2: error: "Patching Code Is ARM Only"
#error "Patching Code Is ARM Only"
 ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:22: error: cast to smaller integer type 'int32_t' (aka 'int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                     ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:37: error: cast to smaller integer type 'int32_t' (aka 'int') from 'unsigned char *' [-Werror,-Wpointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                                    ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:127:72: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
        ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
                                                                       ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/include/libreborn/log.h:9:96: note: expanded from macro 'ERR'
#define ERR(format, ...) { fprintf(stderr, "[ERR]: (%s:%i): " format "\n", __FILE__, __LINE__, __VA_ARGS__); exit(EXIT_FAILURE); }
                                                                                               ^~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:149:10: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    if (((uint32_t) start) % 4 != 0) {
         ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:171:5: error: implicit declaration of function '__clear_cache' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    __clear_cache(start, (void *) end);
    ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:176:21: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    uint32_t addr = (uint32_t) target;
                    ^~~~~~~~~~~~~~~~~
7 errors generated.
make[2]: *** [libreborn/CMakeFiles/reborn.dir/build.make:76: libreborn/CMakeFiles/reborn.dir/src/reborn.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:617: libreborn/CMakeFiles/reborn.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Seems like /home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c is rebel

Ok, deleted

#ifndef __arm__
#error "Patching Code Is ARM Only"
#endif // #ifndef __arm__

this lines to omit arm error... but 6 errors remaining

When I open file:

// BL Instruction Magic Number
#define BL_INSTRUCTION 0xeb
#define B_INSTRUCTION 0xea

// Generate A BL Instruction
static uint32_t generate_bl_instruction(void *from, void *to, int use_b_instruction) {
    uint32_t instruction;
    unsigned char *instruction_array = (unsigned char *) &instruction;

    instruction_array[3] = use_b_instruction ? B_INSTRUCTION : BL_INSTRUCTION;

    unsigned char *pc = ((unsigned char *) from) + 8;
    int32_t offset = (int32_t) to - (int32_t) pc;
    int32_t target = offset >> 2;

    unsigned char *target_array = (unsigned char *) &target;
    instruction_array[0] = target_array[0];
    instruction_array[1] = target_array[1];
    instruction_array[2] = target_array[2];

    return instruction;
}

// Run For Every .text Section
struct overwrite_data {
    const char *file;
    int line;
    void *target;
    void *replacement;
    int found;
};
static void overwrite_calls_callback(ElfW(Addr) section_addr, ElfW(Word) size, void *data) {
    struct overwrite_data *args = (struct overwrite_data *) data;
    void *section = (void *) section_addr;

    for (uint32_t i = 0; i < size; i = i + 4) {
        unsigned char *addr = ((unsigned char *) section) + i;
        int use_b_instruction = addr[3] == B_INSTRUCTION;
        // Check If Instruction is B Or BL
        if (addr[3] == BL_INSTRUCTION || use_b_instruction) {
            uint32_t check_instruction = generate_bl_instruction(addr, args->target, use_b_instruction);
            unsigned char *check_instruction_array = (unsigned char *) &check_instruction;
            // Check If Instruction Calls Target
            if (addr[0] == check_instruction_array[0] && addr[1] == check_instruction_array[1] && addr[2] == check_instruction_array[2]) {
                // Patch Instruction
                uint32_t new_instruction = generate_bl_instruction(addr, args->replacement, use_b_instruction);
                _patch(args->file, args->line, addr, (unsigned char *) &new_instruction);
                args->found++;
            }
        }
    }
}

// Limit To 512 overwrite_calls() Uses
#define CODE_BLOCK_SIZE 4096
static unsigned char *code_block = NULL;
#define CODE_SIZE 8
static int code_block_remaining = CODE_BLOCK_SIZE;

static void update_code_block(void *target) {
    // BL Instructions Can Only Access A Limited Portion of Memory, So This Allocates Memory Closer To The Original Instruction, That When Run, Will Jump Into The Actual Target
    if (code_block == NULL) {
        code_block = mmap((void *) 0x200000, CODE_BLOCK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
        if (code_block == MAP_FAILED) {
            ERR("Unable To Allocate Code Block: %s", strerror(errno));
        }
#ifdef DEBUG
        INFO("Code Block Allocated At: 0x%08x", (uint32_t) code_block);
#endif
    }
    if (code_block_remaining < CODE_SIZE) {
        ERR("%s", "Maximum Amount Of overwrite_calls() Uses Reached");
    }
    _overwrite(NULL, -1, code_block, target);
}
static void increment_code_block() {
    code_block = code_block + CODE_SIZE;
    code_block_remaining = code_block_remaining - CODE_SIZE;
}

// Overwrite Specific BL Instruction
void _overwrite_call(const char *file, int line, void *start, void *target) {
    // Add New Target To Code Block
    update_code_block(target);

    uint32_t new_instruction = generate_bl_instruction(start, code_block, 0);
    _patch(file, line, start, (unsigned char *) &new_instruction);

    // Increment Code Block Position
    increment_code_block();
}

// Overwrite Function Calls
void _overwrite_calls(const char *file, int line, void *start, void *target) {
    // Add New Target To Code Block
    update_code_block(target);

    struct overwrite_data data;
    data.file = file;
    data.line = line;
    data.target = start;
    data.replacement = code_block;
    data.found = 0;

    iterate_text_sections(overwrite_calls_callback, &data);

    // Increment Code Block Position
    increment_code_block();

    // Check
    if (data.found < 1) {
        ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
    }
}

// Overwrite Function
// NOTE: "start" Must Be At Least 8 Bytes Long
void _overwrite(const char *file, int line, void *start, void *target) {
    unsigned char patch_data[4] = {0x04, 0xf0, 0x1f, 0xe5}; // "ldr pc, [pc, #-0x4]"

    _patch(file, line, start, patch_data);
    _patch_address(file, line, (void *) (((unsigned char *) start) + 4), target);
}

// Print Patch Debug Data
#ifdef DEBUG
#define PATCH_PRINTF(file, line, start, str) if (file != NULL) fprintf(stderr, "[PATCH]: (%s:%i) Patching (0x%08x) - "str": 0x%02x 0x%02x 0x%02x 0x%02x\n", file, line, (uint32_t) start, data[0], data[1], data[2], data[3]);
#else
#define PATCH_PRINTF(file, line, start, str) { (void) file; (void) line; (void) start; (void) str; } // Mark As Used
#endif

// Patch Instruction
void _patch(const char *file, int line, void *start, unsigned char patch[4]) {
    if (((uint32_t) start) % 4 != 0) {
        ERR("%s", "Invalid Address");
    }

    size_t page_size = sysconf(_SC_PAGESIZE);
    uintptr_t end = ((uintptr_t) start) + 4;
    uintptr_t page_start = ((uintptr_t) start) & -page_size;
    // Allow Writing To Code Memory
    mprotect((void *) page_start, end - page_start, PROT_READ | PROT_WRITE | PROT_EXEC); // PROT_EXEC Is Needed Because Other Code In The Page May Be Being Executed

    unsigned char *data = (unsigned char *) start;

    PATCH_PRINTF(file, line, start, "original");

    memcpy(data, patch, 4);

    PATCH_PRINTF(file, line, start, "result");

    // Reset Code Memory Permissions
    mprotect((void *) page_start, end - page_start, PROT_READ | PROT_EXEC);

    // Clear ARM Instruction Cache
    __clear_cache(start, (void *) end);
}

// Patch Address
void _patch_address(const char *file, int line, void *start, void *target) {
    uint32_t addr = (uint32_t) target;
    unsigned char *patch_data = (unsigned char *) &addr;
    _patch(file, line, start, patch_data);
}

YES, I dont understand, just a bit BIT
And I want to ask to people who knows C to answer to my question:

Can minecraft-pi-reborn/libreborn/src/reborn.c be modified to NOT return errors?
I mean to make it compile to allllllll architectures, not only x86_64

Tnks :D

@NoozAbooz
Copy link
Contributor

@IsaacMvmv
Copy link
Author

But how did they to compile?
I want to knowww

@IsaacMvmv
Copy link
Author

IsaacMvmv commented Sep 14, 2021

hmm, seems like amd64 version isnt fully independent:

[INFO]: Configuring Game...
[INFO]: Starting Game...
qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants